
Добавил:
lukovyeKoltsa
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Типовичок на выборку из 100 значений / типовик - выборка из 100 - Python
.txt//типовик на выборку из 100 значений по теорверу. кто хорошо шарят в проге на питоне(не я, да и вас мало таких xd) исправьте код, он графиков не выдает, я не смог с ебаными библеотеками сдружиться. ну или кому сильно охото, делайте через матлаб.
import numpy as np
# Данные из таблицы вариационного ряда
data = np.array([
-4.25765, -1.82237, -1.26152, -0.65453, -0.29011, 0.00151, 0.22113, 0.53057, 0.93914, 1.37352,
-4.19948, -1.55551, -1.20941, -0.61600, -0.25562, 0.05322, 0.22369, 0.60078, 1.00409, 1.39523,
-3.77559, -1.49532, -1.20926, -0.52344, -0.24755, 0.07397, 0.32211, 0.62310, 1.00792, 1.51744,
-2.77991, -1.45795, -1.15766, -0.46131, -0.23288, 0.09022, 0.32427, 0.62907, 1.00996, 1.57544,
-2.44141, -1.45071, -1.15049, -0.40127, -0.19685, 0.10667, 0.35028, 0.67761, 1.02739, 1.82364,
-2.35213, -1.38040, -1.01109, -0.33859, -0.17294, 0.12045, 0.38764, 0.70301, 1.03427, 1.89707,
-2.29334, -1.36138, -0.97092, -0.33492, -0.16837, 0.12207, 0.39163, 0.70750, 1.04710, 1.91663,
-2.13989, -1.35805, -0.93715, -0.32487, -0.07276, 0.13541, 0.44536, 0.76359, 1.08987, 2.01669,
-2.04223, -1.35155, -0.82698, -0.29854, -0.06508, 0.15264, 0.46366, 0.78385, 1.16743, 2.42721,
-2.00090, -1.27631, -0.70288, -0.29493, -0.05773, 0.17108, 0.50798, 0.91836, 1.36126, 2.99704])
# Выборочная медиана m_p
mp = np.median(data)
# Выборочное среднее (x̄) и выборочное среднее квадратическое отклонение (S)
x_mean = np.mean(data)
S_100 = np.std(data, ddof=1) # Оценка стандартного отклонения с исправлением на степень свободы
# Оценка sp = (ξ_100 - ξ_1) / 5
sp = (data[-1] - data[0]) / 5
print("1.")
print("Выборочная медиана: ",mp)
print("Выборочное среднее: ",x_mean)
print("Выборочное среднее квадратическое отклонение: ",S_100)
print("Оценка по краям: ",sp)
# Границы равновероятных интервалов для гипотез N и L (из условия)
bounds_N = np.array([-1.28155, -0.84162, -0.52440, -0.25335, 0.00000, 0.25335, 0.52440, 0.84162, 1.28155])
bounds_L = np.array([-1.60944, -0.91629, -0.51083, -0.22314, 0.00000, 0.22314, 0.51083, 0.91629, 1.60944])
# Подсчёт количества значений в каждом интервале для обеих гипотез
freq_N, _ = np.histogram(data, bins=np.concatenate(([-np.inf], bounds_N, [np.inf])))
freq_L, _ = np.histogram(data, bins=np.concatenate(([-np.inf], bounds_L, [np.inf])))
# Расчёт статистик χ² для N и L
K_N = np.sum((freq_N - 10)**2 / 10)
K_L = np.sum((freq_L - 10)**2 / 10)
print("2.")
print(freq_N)
print(freq_L)
print(K_N)
print(K_L)
from scipy.stats import t, chi2
# Параметры выборки
n = len(data) # Объём выборки
# Уровни доверия
beta_levels = [0.7, 0.95]
# Доверительные интервалы для математического ожидания (t-распределение)
intervals_mean = []
for beta in beta_levels:
t_crit = t.ppf((1 + beta) / 2, df=n-1) # Квантиль t-распределения
delta_mean = t_crit * S_100 / np.sqrt(n) # Полуширина интервала
intervals_mean.append((x_mean - delta_mean, x_mean + delta_mean))
# Доверительные интервалы для дисперсии (χ²-распределение)
intervals_var = []
for beta in beta_levels:
chi2_low = chi2.ppf((1 - beta) / 2, df=n-1) # Нижняя квантиль χ²
chi2_high = chi2.ppf((1 + beta) / 2, df=n-1) # Верхняя квантиль χ²
var_low = ((n - 1) * S_100**2) / chi2_high # Нижняя граница дисперсии
var_high = ((n - 1) * S_100**2) / chi2_low # Верхняя граница дисперсии
intervals_var.append((var_low, var_high))
print("4.")
print("Интервалы",intervals_mean, intervals_var)
from scipy.stats import chi2
# Границы интервалов из условий задачи (гипотезы N и L)
intervals_N = np.array([-1.28155, -0.84162, -0.52440, -0.25335, 0.00000, 0.25335, 0.52440, 0.84162, 1.28155])
intervals_L = np.array([-1.60944, -0.91629, -0.51083, -0.22314, 0.00000, 0.22314, 0.51083, 0.91629, 1.60944])
# Частоты для гипотезы N
counts_N, _ = np.histogram(data, bins=np.concatenate([[-np.inf], intervals_N, [np.inf]]))
# Частоты для гипотезы L
counts_L, _ = np.histogram(data, bins=np.concatenate([[-np.inf], intervals_L, [np.inf]]))
# Вычисляем K_N и K_L
K_N = np.sum((counts_N - 10) ** 2 / 10)
K_L = np.sum((counts_L - 10) ** 2 / 10)
# Критические значения для chi-squared распределения
alpha_levels = [0.5, 0.2, 0.05, 0.025]
critical_values = {alpha: chi2.ppf(1 - alpha, df=9) for alpha in alpha_levels}
print("5.")
print(K_N)
print(K_L)
print(critical_values)