Ошибка первого рода — это ложное срабатывание: тест показал эффект, которого на самом деле нет (вероятность = alpha, обычно 0.05). Ошибка второго рода — пропуск реального эффекта: изменение работало, но тест этого не заметил (вероятность = beta). Мощность теста равна 1 - β — это шанс поймать эффект, если он существует. Уменьшить обе ошибки сразу без роста выборки нельзя: alpha и beta связаны через размер выборки и MDE.
Что такое H0 и H1 в A/B-тесте?
Любой A/B-тест — это проверка двух конкурирующих гипотез.
- H0 (нулевая гипотеза): различий между вариантами нет. Новая кнопка не меняет конверсию, метрики A и B равны.
- H1 (альтернативная гипотеза): различие есть. Вариант B отличается от A (в одну сторону или в любую).
Логика теста устроена «от противного»: мы предполагаем, что H0 верна, и смотрим, насколько наблюдаемая разница неправдоподобна при этом предположении. Если разница слишком велика, чтобы объяснить её случайностью (p-value ниже порога alpha), — отвергаем H0 в пользу H1. При этом мы никогда не «доказываем» H0, а только не находим достаточных оснований её отвергнуть.
Чем отличается ошибка первого рода от второго?
Обе ошибки — это ситуации, когда решение по тесту расходится с реальностью. Разница в том, в какую сторону мы ошиблись.
- Ошибка I рода (alpha, false positive): отвергли H0, хотя она верна. Мы «увидели» эффект, которого нет, и раскатили изменение зря. Вероятность такой ошибки контролируется уровнем значимости alpha.
- Ошибка II рода (beta, false negative): не отвергли H0, хотя верна H1. Реальный эффект был, но тест его пропустил, и хорошее изменение отправилось в мусорку.
Формально:
α = P(отвергли H_0 H_0 верна)
β = P(не отвергли H_0 H_1 верна)
Мощность теста — способность обнаружить эффект, когда он есть:
Power = 1 - β
Стандартные значения на практике: α = 0.05 (готовы в 5% случаев поймать ложный эффект) и мощность 0.8, то есть β = 0.2 (готовы в 20% случаев пропустить реальный эффект).
Таблица 2x2: четыре исхода теста
Все комбинации «реальность × решение» удобно свести в матрицу.
| Решение по тесту | H0 верна (эффекта нет) | H1 верна (эффект есть) |
|---|---|---|
| Не отвергли H0 (эффект не нашли) | Верно (1 − alpha) | Ошибка II рода (beta) |
| Отвергли H0 (эффект нашли) | Ошибка I рода (alpha) | Верно, мощность (1 − beta) |
Две клетки на диагонали — правильные решения, две — ошибки. Аналогия из медицины: ошибка I рода — сказать здоровому пациенту, что он болен; ошибка II рода — отпустить больного как здорового.
Как это выглядит на числах?
Разберём на иллюстративных данных (числа условные, не из реального теста). Тестируем новый онбординг. Базовая конверсия в оплату — 4%.
- Фиксируем
α = 0.05. Значит, если новый онбординг ничего не меняет, в 5 из 100 таких тестов мы всё равно случайно увидим «значимую» разницу и ошибочно раскатим фичу. - Хотим мощность 0.8. Значит, если реальный прирост есть и равен ожидаемому MDE, мы поймаем его в 80% случаев, а в 20% — пропустим (ошибка II рода).
Предположим, тест дал конверсию 4.6% в группе B против 4.0% в A, p-value = 0.03. Поскольку 0.03 < 0.05, отвергаем H0. Но остаётся риск, что это как раз то самое ложное срабатывание из 5%. Именно поэтому одно «значимое» число без предварительного расчёта выборки и без контроля множественных проверок — слабое основание для решения.
Как связаны alpha, beta и размер выборки?
Ключевой факт: при фиксированном размере выборки уменьшение alpha увеличивает beta, и наоборот. Это trade-off.
- Хотите реже ловить ложные эффекты (меньше alpha) — критерий становится строже, и вы чаще пропускаете реальные эффекты (beta растёт).
- Хотите реже пропускать эффекты (меньше beta, выше мощность) — критерий мягче, ложных срабатываний становится больше.
Разорвать этот компромисс можно единственным честным способом — увеличить размер выборки. Больше данных сужают распределения оценок, и обе ошибки уменьшаются одновременно.
Приближённая формула размера выборки на группу для сравнения двух пропорций:
n = ((z_1-α/2 + z_1-β)^2 · 2 · p(1-p)) / (MDE^2)
где z_1-α/2 ≈ 1.96 при alpha = 0.05, z_1-β ≈ 0.84 при мощности 0.8, p — базовая конверсия, MDE — минимальный эффект, который вы хотите уметь ловить (в абсолютных долях).
Числовой пример: базовая конверсия p = 0.04, хотим ловить абсолютный прирост MDE = 0.005 (то есть 4.0% → 4.5%).
n = ((1.96 + 0.84)^2 · 2 · 0.04 · 0.96) / (0.005^2) = (7.84 · 0.0768) / (0.000025) ≈ 24 084
Нужно примерно 24 тысячи наблюдений в каждую группу. Уменьшите MDE вдвое — и выборка вырастет в 4 раза (MDE стоит в квадрате в знаменателе). Именно поэтому расчёт MDE и мощности делают до старта теста, а не после. Подробный разбор — в посте про MDE и минимальный детектируемый эффект.
Прикинуть размер выборки под свои alpha, beta и MDE можно прямо в SQL на данных о трафике:
-- Оценка требуемой выборки на группу (иллюстративно)
WITH params AS (
SELECT
0.04 AS p, -- базовая конверсия
0.005 AS mde, -- целевой абсолютный эффект
2.80 AS z_sum -- z(1-alpha/2)+z(1-beta) = 1.96+0.84
)
SELECT
p,
mde,
CEIL( (z_sum * z_sum) * 2 * p * (1 - p) / (mde * mde) ) AS n_per_group
FROM params;
Какие ошибки чаще всего портят A/B-тесты?
Многие провалы связаны не с самой теорией, а с тем, как тест ведут на практике.
- Подглядывание (peeking). Смотреть на p-value каждый день и останавливать тест, как только он «стал значимым», — прямой способ раздуть реальную alpha. При многократных проверках фактическая вероятность ложного срабатывания сильно превышает заявленные 5%. Решение: фиксируйте срок и выборку заранее либо применяйте методы последовательного тестирования.
- Множественные сравнения (multiple testing). Проверяете 20 метрик или 20 сегментов — при alpha = 0.05 в среднем одна «значимость» появится чисто случайно. Используйте поправки (Бонферрони, Бенджамини-Хохберг) или заранее назначенную первичную метрику.
- Недобор мощности. Запустили тест на маленькой выборке, получили «нет значимой разницы» и решили, что эффекта нет. При beta = 0.5 вы просто монету подбрасывали. Отсутствие значимости при низкой мощности не доказывает отсутствие эффекта.
- Изменение MDE после факта. Подгонять целевой эффект под уже полученный результат — самообман; MDE фиксируют до старта.
- Игнор направления гипотезы. Односторонний и двусторонний критерий дают разные z-значения; смешивать их нельзя.
Частые ошибки
- Путать alpha с p-value. Alpha — это заранее выбранный порог; p-value — то, что вы получили в конкретном тесте. Их сравнивают, но это разные вещи.
- Считать, что 1 − p-value = вероятность, что H1 верна. Это неверная трактовка: p-value ничего не говорит о вероятности гипотез напрямую.
- Думать, что «незначимо» значит «эффекта нет». Это может быть просто ошибка II рода из-за малой выборки.
- Снижать alpha, забыв про beta. Ужесточив критерий, вы автоматически повышаете риск пропустить реальный эффект, если не добавили данных.
- Не считать мощность заранее. Тест без предварительного расчёта выборки часто нельзя интерпретировать: непонятно, был ли шанс вообще что-то поймать.
Сравнение: alpha против beta
| Характеристика | Ошибка I рода (alpha) | Ошибка II рода (beta) |
|---|---|---|
| Что произошло | Нашли эффект, которого нет | Пропустили реальный эффект |
| Тип | False positive | False negative |
| Типичное значение | 0.05 | 0.2 |
| Связь с мощностью | — | Power = 1 − beta |
| Цена ошибки | Раскатили бесполезное/вредное изменение | Отбросили полезное изменение |
Понимание этого баланса отличает аналитика, который «получил значимость», от аналитика, который умеет объяснить, почему результату можно верить. Закрепить расчёты можно на практике: потренируйте выборку и p-value на SQL-тренажёре и Python-тренажёре, разберите готовые кейсы по A/B и прогоните вопросы по статистике в разделе собеседований.