Условие
Выберите правильную интерпретацию p-value = 0.03 для двустороннего t-теста разности средних:
- Вероятность, что H₀ верна, равна 3%.
- Вероятность ошибки I рода — 3%.
- При условии истинности H₀ — вероятность получить такие или более экстремальные данные = 3%.
- Эффект реален с вероятностью 97%.
Объясните, что значит «статистическая значимость» и чем отличается от «практической значимости».
Решение
Правильный ответ — (3)
p-value = P(данные такие или более экстремальные | H₀ верна).
Это условная вероятность данных при гипотезе нуля, а не вероятность гипотезы.
Почему остальные неверны
(1) «Вероятность, что H₀ верна — 3%» — это P(H₀ | данные). Для этого нужен Байес и prior на гипотезу. Frequentist p-value этого не даёт.
(2) «Ошибка I рода — 3%» — путаница с α. α — это порог, который выбирается до эксперимента (обычно 0.05). p-value — наблюдённая «крайность» данных. Если p < α — отвергаем H₀.
(4) «Эффект реален с 97%» — то же что (1), и ещё хуже: «реальность эффекта» — не вопрос Бернулли.
Статистическая vs практическая значимость
| Стат. значимость | Практ. значимость | |
|---|---|---|
| Что это | p < α | эффект ≥ MDE |
| Зависит от | n (большие n → любой эффект значим) | заранее заданного порога |
| Решение | «отвергаем H₀» | «катить или нет» |
При очень больших n (миллион+ наблюдений) почти любой шум становится «статистически значимым», но практически бессмысленным.
Пример
A/B тест с N = 10 млн:
- A: CR = 5.000%, B: CR = 5.005%.
- z = ~7, p < 0.001.
- Uplift: +0.1% relative → +1 продажа на 20 000 пользователей.
- При CAC внедрения 100К₽ — окупится за век. Не катим.
Когда p-value полезен
- Скрининг гипотез (отсев шумовых эффектов).
- Совместно с effect size (Cohen's d, lift %), CI и бизнес-MDE.
Когда p-value опасен
- При множественных тестах (FWER inflation).
- При peeking (sequential analysis без коррекции).
- При мизерных эффектах на огромных N (как пример выше).
- При неподходящих допущениях (t-test на негауссовой малой выборке).
Поправки для multiple testing
from statsmodels.stats.multitest import multipletests
pvals = [0.001, 0.04, 0.03, 0.07, 0.6]
rej, pvals_adj, _, _ = multipletests(pvals, alpha=0.05, method='fdr_bh')Bonferroni — строгая (α/k); BH (Benjamini-Hochberg) — контроль FDR (≤ α доля ложных среди отклонённых).
Подводные камни
- «Эффект есть» vs «не получилось отвергнуть»: при p > 0.05 H₀ не доказана. Это «не отказались», а не «верна».
- Малое p при огромных N: тривиальный эффект становится значимым. Всегда смотреть effect size и CI.
- Peeking: посмотреть p каждый день → ложный «значимый» результат гарантирован (Type I ↑↑).
- Cherry-picking тестов: запустили 20 метрик, нашли одну значимую → ничего не доказали (familywise α).
- Одно/двусторонний тест: бизнес часто хочет «улучшение или хуже». Двусторонний — стандарт; односторонний усиливает power, но требует обоснования.
- t-test на не-нормальных данных малой n: распределение p не uniform под H₀ → переоценка значимости. Bootstrap безопаснее.
- «p = 0.06 → почти значимо»: либо значимо, либо нет относительно выбранного α. Иначе это NHST-fishing.
Эталонный ответ
Правильная интерпретация: «при условии истинности H₀, вероятность получить такие или более экстремальные данные = 3%» (вариант 3).
Стат. значимость — p < α, говорит о неслучайности эффекта. Практическая — эффект ≥ заранее заданного MDE и оправдывает внедрение по cost/benefit. На большой выборке стат. значимость не подразумевает практической.