Проверка гипотез — разность средних
Мы хотим проверить гипотезу о том, что средние суммы пожертвований в группах A и B различаются. Ранее вы научились генерировать одну перестановку данных. Теперь мы построим нулевое распределение разности средних и вычислим p-значение.
Для построения нулевого распределения сначала генерируется несколько переставленных наборов данных, и для каждого из них запоминается разность средних. Затем вычисляется тестовая статистика как разность средних на исходных данных. Наконец, p-значение аппроксимируется как удвоенная доля случаев, в которых разность больше или равна абсолютному значению тестовой статистики (двусторонняя гипотеза). Если p-значение окажется меньше, например, 0,05, это будет свидетельствовать о статистической значимости результата.
Это упражнение является частью курса
Статистическое моделирование на Python
Инструкции к упражнению
- Сгенерируйте несколько перестановок
donations_Aиdonations_Bи присвойте результат переменнойperm. - Присвойте переменной
samplesразность средних наборовpermuted_A_datasetsиpermuted_B_datasets. Используйтеaxis=1, чтобы вычислять среднее для каждого набора данных отдельно, а не общее среднее. - Присвойте переменной
test_statразность среднихdonations_Aиdonations_B. - Вычислите p-значение
p_valкак удвоенную долю значений вsamples, которые больше или равны абсолютному значениюtest_stat.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Generate permutations equal to the number of repetitions
perm = np.array([np.random.____(len(____) + len(____)) for i in range(reps)])
permuted_A_datasets = data[perm[:, :len(donations_A)]]
permuted_B_datasets = data[perm[:, len(donations_A):]]
# Calculate the difference in means for each of the datasets
samples = np.mean(____, axis=1) - np.mean(____, axis=1)
# Calculate the test statistic and p-value
test_stat = ____
p_val = 2*np.sum(____ >= np.abs(____))/reps
print("p-value = {}".format(p_val))