Все материалы
Продуктовая аналитикаматериалстарт

Нулевая гипотеза простыми словами: что это и как её формулировать

Нулевая гипотеза (H0) — утверждение, что эффекта или разницы нет. Чем она отличается от альтернативной гипотезы H1, как формулировать H0 для A/B-теста и продуктовых вопросов, что значит «отвергнуть» и «не отвергнуть» H0 — с расчётом z-теста на учебной базе.

КейсПрактика24 сентября 2026 г.9 мин

Продакт-менеджер присылает итоги теста: в онбординг добавили чек-лист, и конверсия в создание рабочего пространства выросла с 20% до 30%. Вопрос короткий — «это значимо?». Чтобы ответить, сначала нужно сформулировать, что именно проверяется. Статистика не умеет доказывать, что чек-лист работает. Она умеет другое: оценить, насколько такие данные странные, если чек-лист не работает вовсе. Это «не работает вовсе» и называется нулевой гипотезой.

Коротко

  • Нулевая гипотеза (H0) — утверждение, что эффекта нет: доли, средние или распределения в группах равны.
  • Альтернативная гипотеза (H1) — то, что вы готовы принять, если данные опровергнут H0: разница есть.
  • Тест не доказывает H1. Он показывает, насколько данные неправдоподобны при верной H0.
  • Отвергли H0 при p < α — разница статистически значима. Не отвергли — данных не хватило, чтобы её увидеть, но это не доказательство, что её нет.
  • H0, H1, направление и порог α записывают до того, как смотрят на результат.

Что такое нулевая гипотеза

Нулевая гипотеза (H0) — это утверждение об отсутствии эффекта, которое статистический тест пытается опровергнуть данными. В A/B-тесте оно звучит так: «конверсия в тестовой группе равна конверсии в контрольной». Нулевой её называют потому, что разница между группами в ней равна нулю.

Логика похожа на презумпцию невиновности. Пока нет убедительных улик, считаем, что изменение ничего не дало. Улики — это данные, а мера их убедительности — p-value: вероятность получить такую же или ещё большую разницу, если H0 верна. Если эта вероятность меньше заранее выбранного порога α, H0 отвергают.

Почему не проверять сразу «чек-лист работает»? Потому что у утверждения «эффект есть» нет одного значения: плюс 1 пункт, плюс 10, плюс 30. Посчитать вероятность данных можно только для конкретного мира, а «эффекта ровно ноль» — как раз такой мир.

H0 встречается не только в A/B-тестах. У проверки корреляции нулевая гипотеза — «коэффициент корреляции в генеральной совокупности равен нулю». У проверки разбиения трафика — «пользователи делятся между вариантами ровно в заданной пропорции». У сравнения двух регионов по среднему чеку — «средние равны». Устройство всегда одно: H0 фиксирует конкретное значение, при котором «ничего интересного не происходит», и тест спрашивает, насколько данные с ним спорят.

Нулевая и альтернативная гипотеза: как они связаны

Альтернативная гипотеза (H1) — всё, что не H0. Вместе они покрывают все возможные исходы, и верна ровно одна из них. Для теста с чек-листом, где p — доля пользователей, создавших workspace:

Гипотезы для A/B-теста конверсии
H0: p(checklist) = p(control); H1: p(checklist) ≠ p(control)

Гипотезы говорят о доле во всей генеральной совокупности пользователей, а не о двух числах в выборке. Числа в выборке различаются почти всегда.

Односторонняя и двусторонняя гипотеза

Двусторонняя H1 — «разница есть в любую сторону»: p(checklist) ≠ p(control). Односторонняя — «вариант лучше»: p(checklist) > p(control). При односторонней H1 тот же результат даёт вдвое меньший p-value, поэтому соблазн её выбрать велик.

Одностороннюю гипотезу честно выбирать только тогда, когда результат в обратную сторону приведёт к тому же решению, что и отсутствие эффекта, и это решено заранее. На практике в продуктовых тестах чаще берут двустороннюю: если чек-лист ухудшил конверсию, это тоже важно знать, а не списывать в «эффекта нет». Главное правило — направление фиксируется до запуска теста. Выбрать одностороннюю H1 после того, как увидели, в какую сторону сдвинулась метрика, значит подогнать тест под ответ.

Как сформулировать нулевую гипотезу для продуктового вопроса

Рабочий порядок такой: сначала вопрос бизнеса, потом метрика, потом H0 в виде равенства, и только потом тест. Если H0 не получается записать как равенство конкретных величин, вопрос ещё не готов к проверке.

Типичные вопросы и их гипотезы
ВопросH0H1Чем проверять
Чек-лист в онбординге повышает создание workspace?доля создавших одинакова в обеих группахдоли различаютсяz-тест для двух долей или хи-квадрат
Новая цена меняет средний чек?средний чек в группах равенсредние различаютсяt-тест Уэлча, при тяжёлых хвостах — бутстреп
Время до первого отчёта у нового онбординга короче?распределения времени одинаковыв новом варианте время сдвинуто внизкритерий Манна — Уитни
Каналы привлечения отличаются по выбору тарифа?распределение по тарифам не зависит от каналазависитхи-квадрат для таблицы сопряжённости
Выросла ли доля платящих после редизайна?доля до и после одинаковадоля измениласьz-тест для долей, но проверьте сезонность: это не рандомизированный тест

Пример: проверяем H0 на данных A/B-теста

В учебной базе SQL-курса есть эксперимент onboarding_checklist с вариантами control и checklist. Поле converted показывает, создал ли пользователь workspace в окне эксперимента. Каждый пользователь попал в тест один раз, всего 3068 человек. Гипотезы записаны выше, двусторонние, порог α = 0,05.

Перед основной проверкой стоит проверить ещё одну нулевую гипотезу — о самом разбиении. Если трафик делили поровну, H0 звучит так: «доля пользователей в каждом варианте — 50%». В контроль попали 1527 человек, в вариант — 1541. Критерий хи-квадрат даёт p = 0,80: такое расхождение при честном делении пополам — обычное дело, H0 не отвергаем, и группы можно сравнивать. Если бы здесь H0 отверглась, это был бы sample ratio mismatch, и сравнивать конверсии было бы рано.

Результат запроса (учебная база, DuckDB)
ВариантПользователейСоздали workspaceКонверсия
control152730620,04%
checklist154146730,30%
Конверсия по вариантам
select
  variant,
  count(*) as users,
  count(*) filter (where converted) as converted,
  round(100.0 * count(*) filter (where converted) / count(*), 2) as conversion_pct
from experiment_exposures
where experiment_name = 'onboarding_checklist'
group by variant
order by variant desc;

Как посчитать p-value для разницы конверсий

Для двух долей подходит z-тест. Если H0 верна, обе группы — выборки из одной конверсии, и её лучшая оценка — общая доля по обеим группам: 773 из 3068, около 25,2%. От неё считается стандартная ошибка разницы, а z показывает, сколько таких ошибок укладывается в наблюдаемую разницу в 10,27 процентного пункта.

Получается z = 6,55 и двусторонний p-value около 5,8·10⁻¹¹. Если бы чек-лист не влиял на конверсию, разница в 10 пунктов и больше при таких размерах групп практически не встречалась бы. p намного меньше 0,05, значит, H0 отвергаем: разница статистически значима.

Для решения одного p-value мало. 95% доверительный интервал разницы — от 7,2 до 13,3 процентного пункта. Это и есть ответ продакту: чек-лист повышает создание workspace, и даже нижняя граница эффекта — больше 7 пунктов.

pythonZ-тест для двух долей на числах из запроса (выводит 0.2004 0.3030 z = 6.55 p = 5.8e-11)
from math import sqrt
from scipy.stats import norm

x_a, n_a = 306, 1527   # control: создали workspace / всего в группе
x_b, n_b = 467, 1541   # checklist

p_a, p_b = x_a / n_a, x_b / n_b
p_pool = (x_a + x_b) / (n_a + n_b)          # общая конверсия, если верна H0
se = sqrt(p_pool * (1 - p_pool) * (1 / n_a + 1 / n_b))
z = (p_b - p_a) / se
p_value = 2 * norm.sf(abs(z))                # двусторонняя H1

print(f'{p_a:.4f} {p_b:.4f} z = {z:.2f} p = {p_value:.1e}')
Что p-value не говорит

p = 5,8·10⁻¹¹ — это не вероятность того, что H0 верна, и не вероятность ошибиться. Это вероятность данных при условии H0. Подробно о том, как читать p-value, — в отдельном материале.

Ошибки первого и второго рода

Решение по тесту может ошибиться двумя способами. Отвергнуть H0, когда она верна, — ошибка первого рода: вы выкатили изменение, которое ничего не дало. Её вероятность ограничивает α. Не отвергнуть H0, когда верна H1, — ошибка второго рода: вы похоронили работающую идею. Её вероятность обозначают β, а 1 − β называют мощностью теста.

α выбирают сами, обычно 0,05. β зависит от размера выборки, реального размера эффекта и разброса метрики. Её снижают не порогом, а планированием: заранее считают, сколько пользователей нужно, чтобы заметить минимальный интересный эффект.

H0 верна (эффекта нет)H1 верна (эффект есть)
Отвергли H0ошибка I рода, вероятность αверное решение, вероятность 1 − β (мощность)
Не отвергли H0верное решение, вероятность 1 − αошибка II рода, вероятность β

«Не отвергли H0» — это не «эффекта нет»

Посмотрим только на первую неделю того же теста — показы до 8 июня. В контроле 12 конверсий из 65 (18,46%), в варианте с чек-листом 19 из 66 (28,79%). Разница +10,3 пункта — почти такая же, как во всём тесте. Но p = 0,16, и при α = 0,05 H0 не отвергается.

Эффект не исчез, просто 131 человека мало, чтобы отличить 10 пунктов от случайности. Доверительный интервал разницы — от −4,1 до +24,8 пункта: в него помещаются и ухудшение, и очень сильный рост. Вывод «чек-лист не работает» по первой неделе был бы ошибкой второго рода.

Правильная формулировка при p > α — «данных недостаточно, чтобы отвергнуть H0». Чтобы говорить об отсутствии эффекта, нужен узкий интервал вокруг нуля. На мобильных устройствах в этом тесте так и есть: 20,05% в контроле против 19,89% с чек-листом, p = 0,94, интервал от −4,3 до +3,9 пункта. Здесь можно сказать: если эффект на мобильных и есть, он вряд ли больше 4 пунктов в любую сторону.

Конверсия в создание workspace по вариантам, %

Учебная база SQL-курса, DuckDB. Весь тест: p ≈ 5,8·10⁻¹¹; первая неделя: p = 0,16; desktop: p ≈ 7·10⁻¹⁸; mobile: p = 0,94. Разрез по устройствам не планировался до теста.

controlchecklist

Частые ошибки с нулевой гипотезой

Разрез по устройствам на графике выглядит как открытие: на десктопе конверсия выросла почти вдвое (20,03% → 39,78%), на мобильных не изменилась. Но гипотезу о разнице по устройствам никто не формулировал до запуска. Это повод для следующего теста, а не вывод текущего: если перебрать двадцать разрезов, при α = 0,05 шанс хотя бы одной ложной значимости — около 64%.

  • H1 меняется после просмотра данных: двусторонняя становится односторонней, когда стало видно направление.
  • Много гипотез без поправки. Двадцать сегментов, пять метрик, три варианта — каждая проверка добавляет шанс ложной находки. Простейшая защита — поправка Бонферрони: делить α на число проверок, для 20 проверок это 0,0025.
  • Подглядывание: тест останавливают в тот день, когда p впервые опустился ниже 0,05. Так ошибка первого рода растёт далеко за 5%.
  • «Не отвергли H0» записывают как «доказали, что эффекта нет».
  • H0 сформулирована про одну метрику, а решение принимают по другой.
  • Статистическая значимость подменяет практическую: при огромной выборке значимой станет и разница в 0,1 пункта, которая не окупает разработку.

Что читать дальше

Нулевая гипотеза — первый шаг проверки. Дальше нужны p-value, мощность, размер выборки и защита от типичных ошибок A/B-тестов.

Продолжить чтение
Вся библиотека
Продуктовая аналитика2 сентября 2026 г.8 мин

Калькулятор значимости A/B-теста: как посчитать и как прочитать результат

Как посчитать статистическую значимость A/B-теста по двум конверсиям: какие числа нужны, что означает p-value и доверительный интервал разницы, и когда расчёт вообще не применим.

Читать материал
Продуктовая аналитика2 сентября 2026 г.8 мин

Калькулятор размера выборки для A/B-теста: сколько трафика и дней нужно

Как рассчитать размер выборки и длительность A/B-теста: что такое MDE, откуда берутся уровень доверия и мощность, и почему вдвое меньший эффект стоит вчетверо большего трафика.

Читать материал