Гипотезы, p-value и ошибки первого и второго рода
«Объясните, что такое p-value, человеческим языком» — вопрос, на котором ошибаются даже опытные кандидаты.
p-value — вероятность увидеть различие не меньше наблюдаемого при условии, что на самом деле различия нет. Это вероятность данных при верной нулевой гипотезе, а не вероятность гипотезы при данных.
Вопрос 1. Что такое нулевая и альтернативная гипотезы?
Что проверяет интервьюер. Понимаете ли вы логику «от противного». Мы не доказываем, что новая кнопка лучше. Мы предполагаем, что она не отличается, и смотрим, насколько наши данные несовместимы с этим предположением.
- H₀ (нулевая): разницы между группами нет, конверсии равны.
- H₁ (альтернативная): разница есть. Двусторонняя («отличается») или односторонняя («больше»).
Дальше считается статистика критерия и по ней — p-value. Если p-value меньше заранее выбранного порога α (обычно 0.05), говорят, что результат статистически значим, и H₀ отвергают. Обратите внимание на асимметрию: H₀ можно отвергнуть, но нельзя «принять». Большое p-value означает «доказательств не хватило», а не «разницы точно нет».
Вопрос 2. Посчитайте значимость на пальцах
Классический z-тест для двух долей. Формула считает, во сколько стандартных ошибок укладывается наблюдённая разница конверсий:
import math
def z_test(conv_a, n_a, conv_b, n_b):
p_a, p_b = conv_a / n_a, conv_b / n_b
p_pool = (conv_a + conv_b) / (n_a + n_b)
se = math.sqrt(p_pool * (1 - p_pool) * (1 / n_a + 1 / n_b))
z = (p_b - p_a) / se
p_value = 2 * (1 - 0.5 * (1 + math.erf(abs(z) / math.sqrt(2))))
return round(z, 2), round(p_value, 4)
print("По 10 000 в группе, 5.00% против 5.50%:", z_test(500, 10000, 550, 10000))
print("По 1 000 в группе, 5.00% против 5.50%:", z_test(50, 1000, 55, 1000))
Вывод:
По 10 000 в группе, 5.00% против 5.50%: (1.59, 0.1129)
По 1 000 в группе, 5.00% против 5.50%: (0.5, 0.6162)
Относительный прирост одинаковый — 10% — а выводы разные, и оба отрицательные. Даже при десяти тысячах пользователей в группе p-value равно 0.11: разница не значима. Это отличная иллюстрация того, почему для маленьких эффектов нужны очень большие выборки, и почему «у нас конверсия выросла с 5% до 5.5%» на тысяче пользователей не значит ничего.
Вопрос 3. Что p-value НЕ означает?
Это главный вопрос урока. Три формулировки, которые звучат правдоподобно и все неверны:
| Неверно | Почему |
| «p = 0.03 — вероятность того, что H₀ верна, равна 3%» | перевёрнутое условие: p-value считается при условии верной H₀, а не про её вероятность |
| «p = 0.03 — вероятность 97%, что эффект реален» | то же самое, только с другой стороны |
| «p = 0.60 — значит, разницы нет» | значит, доказательств не хватило; при малой выборке так будет и при реальном эффекте |
Хорошая аналогия для интервью — суд. H₀ — презумпция невиновности. p-value — насколько улики странны для невиновного человека. Малое p-value означает «улики слишком странные, презумпцию отвергаем». Оправдательный приговор не доказывает невиновность — он означает, что улик не хватило.
Вопрос 4. Ошибки первого и второго рода
| H₀ верна (эффекта нет) | H₀ неверна (эффект есть) | |
| Отвергли H₀ | Ошибка I рода (α) — ложная тревога | верное решение (мощность, 1−β) |
| Не отвергли H₀ | верное решение | Ошибка II рода (β) — пропустили эффект |
Практический смысл: α = 0.05 означает, что в 5% случаев, когда эффекта нет, мы всё равно объявим победу и выкатим бесполезную (а иногда и вредную) фичу. β = 0.2 при стандартной мощности 80% означает, что в 20% случаев мы пропустим реальный эффект и зря выбросим хорошую идею.
Между ними есть обмен: снижая α до 0.01, мы делаем ложную тревогу реже, но β растёт — эффект пропускается чаще. Единственный способ уменьшить обе ошибки сразу — увеличить выборку. Это ключевой ответ, который ждут.
Цена ошибок разная в разных задачах, и это стоит проговорить: для эксперимента с формой оплаты ложная тревога дороже (сломаем деньги), для дешёвого изменения текста кнопки дороже пропущенный эффект.
Типичные ошибки кандидатов
- Определяют p-value как «вероятность того, что нулевая гипотеза верна». Это самая частая ошибка в отрасли.
- Из p = 0.4 делают вывод «версии одинаковы».
- Путают α (порог, который выбираем) и p-value (то, что получаем из данных).
- Считают статистическую значимость синонимом практической: разница в 0.01% может быть значимой на миллионе пользователей и абсолютно бесполезной для бизнеса.
- Не могут объяснить обмен между ошибками I и II рода.
Как ответить кратко
«p-value — вероятность получить различие не меньше наблюдаемого, если на самом деле разницы нет. Это не вероятность того, что гипотеза верна: условие направлено в другую сторону. Если p меньше выбранного заранее α, отвергаем нулевую гипотезу; большое p означает, что доказательств не хватило, а не что эффекта нет. Ошибка I рода — объявили эффект там, где его нет, её вероятность мы задаём сами через α. Ошибка II рода — пропустили реальный эффект, её контролируем мощностью, обычно 80%. Эти ошибки обмениваются друг на друга, уменьшить обе сразу можно только увеличив выборку. И статистическая значимость не равна практической: на большой выборке значимым станет даже бесполезный эффект».