Анализ мощности — часть I
Теперь перейдём к анализу мощности. Как правило, любой эксперимент или A/B-тест должен иметь мощность не менее 80%. Один из способов этого добиться — заранее рассчитать необходимый объём выборки.
Предположим, что вы отвечаете за новостной сайт и хотите увеличить время, которое пользователи проводят на нём. В настоящее время это время подчиняется нормальному распределению со средним значением 1 минута и стандартным отклонением 0,5 минуты. Вы планируете внедрить функцию ускоренной загрузки страниц и хотите определить, какой объём выборки позволит зафиксировать увеличение времени пребывания на сайте на 5%.
В этом упражнении вы настроите фреймворк для одной симуляции, проведёте t-тест и вычислите p-значение.
Это упражнение является частью курса
Статистическое моделирование на Python
Инструкции к упражнению
- Инициализируйте
effect_sizeзначением 5%,control_mean— значением 1, аcontrol_sd— значением 0.5. - С помощью
np.random.normal()смоделируйте одну выборку дляcontrol_time_spentиtreatment_time_spent, используя заданные значения. - Выполните t-тест для
treatment_time_spentиcontrol_time_spentс помощьюst.ttest_ind(), гдеst— этоscipy.stats(уже импортирован). - Присвойте переменной статистической значимости
stat_sigзначениеTrue, еслиp_valueменьше 0.05, иначе —False.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Initialize effect_size, control_mean, control_sd
effect_size, sample_size, control_mean, control_sd = ____, 50, ____, ____
# Simulate control_time_spent and treatment_time_spent, assuming equal variance
control_time_spent = np.random.normal(loc=control_mean, scale=____, size=sample_size)
treatment_time_spent = np.random.normal(loc=____*(1+effect_size), scale=control_sd, size=____)
# Run the t-test and get the p_value
t_stat, p_value = st.ttest_ind(____, ____)
stat_sig = p_value < ____
print("P-value: {}, Statistically Significant? {}".format(p_value, stat_sig))