Как использовать A/B-тесты для приоритизации гипотез
A/B-тесты — это не просто кнопка «Проверить гипотезу» в Amplitude или Tableau. Это инструмент, который помогает продакт-менеджеру ответить на главный вопрос: “Стоит ли вообще что-то менять?”. Чтобы разобраться, давайте уйдём от интерфейсов и возьмём в руки винтовку.
⠀
🎯 🧮 Винтовки и гипотезы
Представим, что у нас две винтовки — старая и новая. Мы хотим понять, действительно ли новая стреляет лучше или разницы нет.
Так начинается почти любой A/B-тест: у нас есть базовая версия продукта и новая гипотеза. Вопрос тот же — насколько уверенно мы можем сказать, что стало лучше?
Таким образом, у нас появляются две гипотезы:
- H₀ (нулевая): старая и новая винтовки одинаково точны, разницы нет.
- H₁ (альтернативная): новая винтовка точнее
⠀
Важно:
Мы не доказываем напрямую, что новая винтовка “лучше”. Мы проверяем, одинаковы ли они. И если они различаются, оцениваем, достаточно ли у нас данных, чтобы сказать об этом уверенно. Если данных достаточно, мы отвергаем нулевую гипотезу (H₀) и принимаем альтернативную (H₁): считаем, что новая винтовка стреляет точнее.
⠀
🧮 Сколько выстрелов нужно, чтобы сказать уверенно
Представим, что у нас есть мишень. Попадание в центр — это успех, всё остальное — промах.
Мы знаем, что из старой винтовки попадаем в центр примерно в 51% случаев — это наш baseline. И мы ожидаем, что новая стреляет на 2 п.п. (процентных пункта) лучше — 53% попаданий. Это наш MDE (minimum detectable effect), минимальный эффект, который мы хотим заметить.
⠀
🎯 Пробные стрельбы
Сделали по 10 выстрелов из каждой винтовки:
- старая: 4 в центр
- новая: 8 в центр
Результат выглядит впечатляюще — похоже, что новая винтовка лучше. Но данных явно мало, чтобы делать уверенные выводы. Отсюда возникает вопрос: сколько выстрелов нужно, чтобы сказать уверенно? Предположим, 100 достаточно. (Спойлер: нет)
⠀
🎯 Повторные стрельбы
Делаем по 100 выстрелов из каждой винтовки
- старая: 55 в центр
- новая: 57 в центр
Результаты почти одинаковые. Значит ли это, что разницы нет? Не факт — результат может колебаться из-за внешних факторов: усталость, погода, качество патронов или может просто везение. Поэтому снова возникает вопрос: сколько выстрелов нужно, чтобы уверенно отличить винтовки, если разница действительно есть? Предположим 10 000. (Спойлер: да)
⠀
🧮 Ошибки в статистике
Но перед тем как стрелять, важно понимать, как вообще мы можем ошибиться.
Всего возможны два типа ошибок:
- Ошибка I рода (α) — сказать, что разница есть, когда её нет.
- Ошибка II рода (β) — сказать, что разницы нет, когда она есть.
Третьего быть не может — либо мы ошиблись в одном из направлений, либо нет.
Хорошая новость: мы можем заранее задать допустимые вероятности этих ошибок — параметры α и β.
⠀
(α) alpha — вероятность ошибки I рода (или уровень значимости)
- Что это: мы говорим «новая винтовка лучше», хотя на самом деле разницы нет.
- Пример: винтовки одинаковые, но случайность сыграла в пользу новой.
- Это ложноположительный вывод.
- Обычно α = 0.05 (5%), то есть в долгосрочной перспективе у нас 5% шанс сделать вывод о наличии разницы, когда её нет. И мы говорим: «Хорошо, принимаем решение, если вероятность ошибки ≤ 5%».
⠀
(β) beta — вероятность ошибки II рода
- Что это: мы говорим «разницы нет», хотя новая винтовка в действительности лучше.
- Пример: новая винтовка действительно точнее, но данных мало, и мы не заметили улучшения.
- Это ложноотрицательный вывод.
- Обычно β = 0.2 (20%), то есть если новая винтовка действительно лучше, мы с вероятностью 80% это заметим. На практике мы задаём не β, а мощность теста (power) = 1 − β = 80%.
⠀
⠀
🧮 Так сколько нужно выстрелов
Итак, зная baseline, MDE, α и β, мы можем рассчитать нужное количество выстрелов, чтобы результат был достоверным. Для этого удобно использовать калькулятор:
Evan Miller’s AB Test Calculator — классика, простой интерфейс, считает и p-value, и доверительный интервал.
По расчётам видно: при baseline = 51% и MDE = 2% достаточно 9 807 выстрелов, но для простоты и наглядности округлим до 10 000.
Допустим, мы сделали все выстрелы и получили результат, но возникает закономерный вопрос: как понять, оказался ли результат “достоверным”? Иными словами — попали ли мы в те самые 5% (α), где разница могла возникнуть случайно, или всё же нашли настоящую разницу?
⠀
Обратите внимание:
Проверить попадание в ошибку (β) beta невозможно, так как невозможно заранее представить уровень вероятности нахождения того, чего нет. Значение β задаётся только на этапе планирования теста, чтобы рассчитать нужное количество выстрелов. Но после проведения эксперимента проверить, попали ли мы в ошибку второго рода, действительно невозможно — потому что мы не знаем “истинную” разницу.
⠀
Существует несколько способов проверки достоверности: p-value, confidence intervals, bayesian подходы, sequential testing, метрики типа uplift/lift. Но чаще всего используются p-value и confidence intervals.
⠀
🧮 Что такое p-value
Думайте о p-value как о шкале странности результата.
Помним:
- H₀ (нулевая): старая и новая винтовки одинаково точны, разницы нет.
- H₁ (альтернативная): новая винтовка точнее.
Если p-value < 0.05, значит результат для H₀ настолько странный, что мы её отвергаем и делаем выбор в пользу H₁.
💡 Пример:
если все 10 000 выстрелов из новой винтовки попали в центр (100%), при baseline 51% — это, мягко говоря, крайне необычно. Значение p-value ≈ 0. Такой результат невозможно объяснить случайностью, поэтому мы отвергаем H₀ и считаем, что винтовки разные.
Если p-value ≥ 0.05, результат необычным не выглядит — значит, чтобы уверенно сказать, что винтовки разные, данных недостаточно. Возможно, выстрелов сделали слишком мало, а возможно, разницы действительно нет — статистика не позволяет это различить.
💡 Пример:
52% выстрелов из новой винтовки попали в центр → p-value ≈ 0.15 ≥ 0.05, а значит разница может быть случайной и мы не можем сказать, что новая винтовка лучше.
⠀
Обратите внимание:
Цель теста — не доказать, что новая винтовка лучше, а проверить, есть ли вообще разница. И если разница есть, и данных достаточно, чтобы сказать об этом уверенно — мы отвергаем нулевую гипотезу и говорим: “Да, новая винтовка действительно лучше”.
⠀
🎯 Финальные стрельбы (1)
Итак, сделали по 10 000 выстрелов из каждой винтовки:
- старая: 5 100 в центр (51%)
- новая: 5 250 в центр (52.5%)
Разница: 150 выстрелов — на первый взгляд, новая винтовка на 1.5 п.п. лучше.
Для расчёта p-value также можно воспользоваться калькулятором:
AB Test Guide Calculator — простой интерфейс, показывает p-value и доверительный интервал.
В результате: p-value = 0.0338 < 0.05, а значит мы отвергаем нулевую гипотезу (H₀) и считаем, что новая винтовка достоверно лучше старой. Эффект небольшой (≈ 1.5 п.п.), но статистически значимый.
⠀
🧩 Вывод (1)
A/B-тест — это не способ доказать, что стало лучше. Это способ проверить, достаточно ли данных, чтобы уверенно сказать, что новое действительно отличается от старого. И если разница есть, и данных достаточно — считаем, что новая версия лучше.
⠀
🧮 Что такое доверительный интервал (confidence interval или CI)
Если p-value говорит, есть ли эффект в принципе (то есть, существует ли вообще разница между винтовками), то доверительный интервал показывает, насколько велик этот эффект и насколько мы в нём уверены.
Другими словами:
- p-value → “Есть ли разница?”
- CI → “Насколько велика эта разница?”
⠀
🎯 Финальные стрельбы (2)
Сделали по 10 000 выстрелов из каждой винтовки. Всё ещё хотим понять, действительно ли новая стреляет точнее:
- старая: 5 120 в центр (51.2%)
- новая: 5 280 в центр (52.8%)
Разница: 140 выстрелов — на первый взгляд, новая винтовка на 1.6 п.п. лучше.
Когда мы измеряем разницу между старой и новой винтовками, получаем некоторое среднее значение — наши 1.6 п.п. И если повторить эксперимент еще несколько раз (по 10 000 выстрелов), результат, скорее всего, немного изменится.
Надо отметить, все измерения в статистике сопровождаются погрешностью — как результат стрельбы каждой винтовки, так и разница между ними. Эта погрешность может быть как в меньшую, так и в большую сторону. Истинное значение разницы находится где-то внутри этого диапазона, который и называется доверительным интервалом (CI).
💡 Чем больше выстрелов мы делаем, тем уже становится этот диапазон, и тем точнее оценка эффекта.
⠀
🧮 Считаем доверительный интервал
Для расчёта доверительно интервала также можно воспользоваться калькулятором AB Test Guide Calculator.
⠀
Обратите внимание:
В калькуляторе есть параметр Confidence (уверенность) — обычно выбирают 90%, 95% или 99%. Значение 95% — это компромисс между точностью и практичностью, фактически стандарт в индустрии.
⠀
Нам нужно значение Std. Error of difference = 0.007065. И чтобы рассчитать доверительный интервал при уверенности 95%, умножаем Std. Error of difference на 1.96. Для простоты округлим до 2.
0.007065 × 2 = 0.01413 → ±1.41 п.п.
Это значит, что если расчётная разница между конверсиями равна 1.5 п.п., то с 95% уверенностью истинная разница лежит в диапазоне:
CI = 1.6% ± 1.41% → [0.19%, 3.01%], а значит
52.6% ± 1.41% = [51.19%, 54.01%]
Иными словами, если бы мы проводили эксперимент бесконечно много раз, в 95% случаев разница между винтовками попала бы именно в этот диапазон.
⠀
Важно:
Если в интервале есть 0 — значит, реальная разница может быть равна нулю — то есть новая винтовка ничем не отличается от старой.
Если 0 в интервал не входит, как в нашем примере [0.19%, 3.01%], — значит, новая винтовка действительно стреляет точнее, и мы уверены в этом на 95%.
⠀
💡 Необходимо уточнить:
10 000 выстрелов — это только выборка, это не все выстрелы, которые мы можем совершить. Все возможные выстрелы, которые могли бы произойти: при любой погоде, усталости, состоянии оружия и т.д. называются генеральной совокупностью (в реальном продукте — это все наши настоящие и будущие пользователи). Но мы не можем стрелять вечно, так же как не можем протестировать всех потенциальных пользователей. Участники нашего эксперимента — это только одна выборка, лишь маленькая часть рынка. А все наши потенциальные пользователи на рынке — это бездонный океан, и мы не можем всех их привести в продукт для проверки конверсии. Поэтому доверительный интервал показывает, насколько надёжно данные нашей выборки отражают реальность, есть ли связь между тем, что мы увидели в тесте, и тем, что происходит в генеральной совокупности (со всеми нашими нынешними и потенциальными пользователями).
⠀
🧩 Вывод (2)
- Доверительный интервал информативнее, чем просто p-value. Он показывает не только есть ли эффект, но и насколько он велик, в какую сторону проявляется и насколько надёжно мы его оценили.
- Доверительный интервал помогает понять, можно ли обобщать результаты эксперимента. Он отвечает на вопрос: можем ли мы перенести выводы одного теста (например, 10 000 выстрелов) на всю аудиторию или наблюдаемый эффект просто случайность конкретной выборки. Чем уже интервал, тем стабильнее и надёжнее эффект и тем выше вероятность, что результат сохранится за пределами эксперимента.
- Доверительный интервал помогает оценить практическую значимость эффекта. Иногда эффект статистически значим (p < 0.05), но настолько мал, что не даёт бизнесу никакой реальной пользы.
Р-value отвечает за статистическую значимость, а MDE и ширина доверительного интервала — за практическую (бизнес) значимость.
💡 Наш пример:
Разница между конверсией в контрольной группе (51%) и в тестовой (52.6%) равна 1.6 п.п. А по результатам расчетов доверительного интервала: 52.6% ± 1.41% = [51.19%, 54.01%]. И так как нижнее значение в интервале 51.19%, то разница между конверсиями 51.19% - 51% = 0.19 п.п - это в 10 раз меньше, чем порог 2 п.п., который мы считаем минимально осмысленным. То есть, хоть математически мы и доказали, что разница существует, но она настолько мала, что не даёт бизнесу никакого измеримого эффекта (ни денег, ни пользователей, ни просмотров и т.д.).
⠀
🧮 Когда A/B-тест не нужен
Ранее мы считали доверительный интервал для разницы между конверсиями в группах A и B (старая и новая винтовки). Теперь посчитаем доверительные интервалы отдельно для текущей конверсии (baseline) и для прогноза (MDE) и посмотрим, пересекаются ли они.
Перед началом стрельб мы знали, что из старой винтовки в среднем мы попадали в центр в 51% случаев — это наш baseline. А еще мы предполагали, что новая винтовка стреляет на 2 п.п. лучше, то есть 53% попаданий в центр. Но давайте понизим MDE до 0,5 п.п., то есть до 51.5%.
И давайте в этот раз посчитаем доверительный интервал самостоятельно. Формула пригодится, если будете делать расчеты в excel.
где
- E — половина доверительного интервала (погрешность в одну сторону)
- p — доля успехов (baseline p1 = 0.51, прогноз p2 = 0.53)
- n — размер выборки (количество выстрелов из каждой винтовки - по 10 000)
- Z — квантиль нормального распределения (наш уровень уверенности), в статистике обозначается термином sigma – (σ):
- для 95% доверия — Z = 1.96 (≈ 2σ),
- для 99.7% — Z ≈ 3σ.
В индустрии принято использовать 95% доверие, то есть 2σ.
Таким образом, две сигмы (2σ или 95% доверия) умножаются на корень из двух вариантов. В одном варианте мы попадаем в цель (человек у нас регистрируется и покупает) в другом нет. И делим на количество выстрелов (пользователей).
⠀
🧮 Считаем доверительные интервалы
Для baseline (старая винтовка):
p=0.51, n=10 000
E = 1.96 × 0.004999 ≈ 0.0098 = 0.98 п.п.
CI = 51% ± 0.98% = [50.02%, 51.98%]
Для прогноза новой винтовки (MDE = 51.5%):
p = 0.515, n = 10 000
E = 1.96 × 0.004997 ≈ 0.0098 = 0.98п.п.
CI = 51.5% ± 0.98% = [50.52%, 52.48%]
Пересечение интервалов:
- старая: [50.02%, 51.98%]
- новая: [50.52%, 52.48%]
Нижняя граница нового доверительного интервала (52.02%) попадает внутрь интервала старой винтовки (51.98%), то есть интервалы частично пересекаются. Это указывает то, что при уровне доверия 95% разница между 51% и 51.5% не является статистически значимой — эффект может быть случайным.
А значит, гипотезу в бэклоге с таким небольшим прогнозом роста (0.5 п.п.) надо очень осторожно рассматривать в качестве кандидата к реализации. Даже если вы решите реализовать её, подтвердить рост конверсии через A/B-тест не получится, поскольку результат не будет статистически значим.
⠀
🧩 Вывод (3)
Используя доверительные интервалы на этапе приоритизации, можно заранее понять, есть ли шанс получить статистически значимый эффект и решить, стоит ли брать такую фичу в разработку.