P-value и проверка гипотез
P-value простыми словами: нулевая гипотеза, уровень значимости 0,05, ошибки I и II рода, одно- и двусторонние тесты — и почему p = 0,03 не значит «эффект есть с вероятностью 97 %». С интерактивом.
Интуиция
Пиццерия обещает доставку за 30 минут. Ты замерил 20 доставок — в среднем 33. Они врут или тебе просто не повезло с курьерами? Вопрос звучит бытово, но это ровно та же ситуация, что «новая модель на 0,8 п.п. точнее старой» или «после релиза конверсия выросла на 2 %». Есть скучное объяснение — нулевая гипотеза (null hypothesis, H0): «обещание верно, среднее время 30, а 33 — случайные колебания». И есть интересное — альтернативная гипотеза (alternative hypothesis, H1): «доставка стала дольше».
P-value отвечает на один-единственный вопрос: если скучное объяснение верно, насколько удивительны наши данные? Маленькое p — «такое почти не бывает случайно, скучное объяснение трещит». Большое — «ничего удивительного, шум легко даёт такие 33».
Хорошая аналогия — суд. Презумпция невиновности — это H0. Улики — данные. Приговор «виновен» выносят, только если улики почти необъяснимы невиновностью. А приговор «не виновен» не означает «доказано, что невиновен», — он означает «улик не хватило».
Как это работает
Проверка гипотезы (hypothesis testing) — пять шагов, и все вычисления сидят в третьем и четвёртом:
- Формулируем H0 (μ = 30) и H1 (μ > 30 или μ ≠ 30) — до взгляда на данные.
- Выбираем уровень значимости (significance level) α — порог удивления, обычно 0,05. В физике частиц порог открытия — «пять сигм», то есть p ≈ 3·10−7: так дорого стоит ложное открытие.
- Считаем статистику теста — насколько далеко наблюдение от H0 в единицах стандартной ошибки:
z = (x̄ − μ0) / (σ/√n)При σ = 8 мин, n = 20 и x̄ = 33 получаем SE ≈ 1,8 и z ≈ 1,68: наблюдение отстоит от обещания на 1,7 стандартной ошибки.
- Мы знаем, как распределена z при верной H0: по ЦПТ это нормальное распределение (при оценённой σ — t-распределение). P-value — площадь хвоста за наблюдением: вероятность получить z не меньше 1,68. Для одностороннего теста (H1: дольше) это 0,047, для двустороннего (H1: не равно, хвосты с обеих сторон) — вдвое больше, 0,094.
- Сравниваем с α: p ≤ α — отвергаем H0, результат статистически значим (statistically significant); p > α — «не удалось отвергнуть».
Обрати внимание, как всё зависит от n. Те же 33 минуты при n = 200 дают z ≈ 5,3 и p порядка 10−7: отклонение на 3 минуты стало невероятным при верной H0. Тот же размер эффекта — другая уверенность, потому что стандартная ошибка сжалась в √10 раз.
Отвергая или не отвергая, мы можем ошибиться двумя способами. Ошибка I рода (type I error, ложная тревога): H0 верна, а мы её отвергли; её вероятность — как раз α. Ошибка II рода (type II error, пропуск): эффект есть, а мы его не заметили; её вероятность β, а 1 − β — мощность (power) теста. Снижая α, мы реже кричим «волки!», но чаще пропускаем настоящего волка; вырваться из этого компромисса можно только увеличив n.
Связь с доверительными интервалами
Двусторонний тест на уровне α и доверительный интервал уровня 1 − α — одно и то же, сказанное по-разному: H0 отвергается ровно тогда, когда μ0 не попадает в интервал. Но интервал информативнее: «+3 мин, 95 % ДИ [−0,5; 6,5]» показывает и размер эффекта, и то, что данные совместимы с нулём. Голое «p = 0,094» не показывает ничего, кроме степени удивления. Хорошая привычка — всегда приводить оценку эффекта с интервалом, а p-value — как дополнение.
Как p-value ломают: p-hacking
- Множественные сравнения (multiple comparisons). Проверил 20 метрик при α = 0,05 — в среднем одна окажется «значимой» без всякого эффекта. Лекарства: одна заранее выбранная метрика решения, поправка Бонферрони (α/m) или контроль доли ложных открытий (FDR).
- Подглядывание (peeking). Смотреть p каждый день и останавливаться на первом p < 0,05 — ошибка I рода раздувается до десятков процентов. Длительность фиксируется заранее или используются последовательные тесты (подробнее в теме про A/B-тесты).
- Выбор стороны после данных. Односторонний тест вдвое уменьшает p, поэтому направление H1 нельзя выбирать, глядя на знак эффекта.
- В ML. Запустить обучение на 20 сидах и отчитаться лучшим; подбирать гиперпараметры на тестовой выборке; объявить победу по +0,5 п.п. на бенчмарке из 500 задач. Для честного сравнения моделей на одном тесте нужен парный тест (McNemar для accuracy, парный бутстреп для остального) — он учитывает, что модели ошибаются на одних и тех же трудных примерах.
- «Что такое p-value?» — вероятность получить наблюдаемый или более экстремальный результат при верной H0; не вероятность, что H0 верна, и не вероятность ошибки.
- «Ошибки I и II рода — какая страшнее?» — зависит от цены: ложная тревога в медицинском скрининге дешевле пропуска, а ложное «модель лучше» стоит релиза; α выбирают под цену ошибок.
- «Как честно сравнить две модели на одном тесте?» — парный тест на одних и тех же примерах: McNemar или бутстреп разности; интервал для разницы, а не два отдельных.
- «Результат значим при p = 0,01, но эффект 0,01 %. Внедряем?» — статистическая значимость не равна практической: при большом n значимо всё, смотри размер эффекта и стоимость внедрения.