Перейти к содержанию
Innovialabs

Статистика A/B-тестов: значимость, размер выборки и подглядывание

Продвинутое4 мин

Коротко

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

Главное за минуту

Большинство ошибок в A/B-тестах — не в формулах, а в процессе. Правильный порядок:

  1. Сформулируйте гипотезу и одну главную метрику.
  2. Задайте минимальный детектируемый эффект (MDE) — самое маленькое изменение, ради которого стоит внедрять вариант.
  3. Посчитайте размер выборки под MDE, уровень значимости и мощность.
  4. Запустите тест и не принимайте решения до набора выборки (или используйте последовательный метод).
  5. Проверьте качество данных и только потом читайте результат.

Что такое p-value на самом деле

p-value — вероятность увидеть разницу не меньше наблюдаемой, если на самом деле варианты не отличаются. Это не вероятность того, что B лучше A, и не вероятность ошибки.

Обычно задают уровень значимости α = 0,05: если p-value ниже, результат называют значимым. Это значит, что при отсутствии реального эффекта вы примерно в одном тесте из двадцати получите ложную «победу». Такую ошибку называют ошибкой первого рода.

Мощность и MDE

Мощность — вероятность обнаружить эффект, если он реально есть и не меньше MDE. Стандартный ориентир — 80%. Оставшиеся 20% — это ошибка второго рода: эффект был, а тест его не заметил.

MDE, мощность и размер выборки связаны:

ХотитеЦена
Ловить эффекты меньшеНужна выборка больше
Мощность вышеНужна выборка больше
α строжеНужна выборка больше
Выше базовая конверсияВыборка при том же относительном эффекте меньше

Для конверсионных метрик есть грубое правило (α = 0,05, мощность 80%): на каждую группу нужно примерно 16 × p × (1 − p) / δ² пользователей, где p — базовая конверсия, δ — абсолютная разница. При конверсии 5% и желании заметить рост до 6% это около 7 600 человек на группу. Для точного расчёта используйте калькулятор или библиотеку.

from statsmodels.stats.power import NormalIndPower
from statsmodels.stats.proportion import proportion_effectsize

effect = proportion_effectsize(0.06, 0.05)
n = NormalIndPower().solve_power(effect_size=effect, alpha=0.05, power=0.8)
print(round(n))  # пользователей в каждой группе

Если трафика не хватает на разумный MDE, тест не даст ответа. Лучше тестировать более смелые изменения или метрики выше по воронке.

Проблема подглядывания

Подглядывание (peeking) — когда вы смотрите на результат каждый день и останавливаете тест, как только p-value опустилось ниже 0,05. Случайные колебания в начале теста большие, и при многократных проверках шанс хотя бы раз увидеть ложную значимость сильно превышает заявленные 5%.

Как с этим жить:

  • Фиксированный горизонт: решение только после набора рассчитанной выборки. Смотреть можно — для контроля поломок, но не для выводов.
  • Последовательное тестирование: методы с заранее заданными точками проверки и поправкой порога (group sequential, alpha spending) или «всегда валидные» p-value. Их поддерживают многие платформы экспериментов.
  • Полные недели: поведение по будням и выходным различается, поэтому длительность кратна неделе.

Множественные сравнения

Чем больше вариантов, метрик и сегментов вы проверяете, тем выше шанс найти «значимое» случайно. Десять метрик по α = 0,05 — почти гарантированно одна ложная находка.

  • Заранее назначьте одну главную метрику, остальные — вспомогательные и защитные.
  • Для нескольких вариантов используйте поправки: Бонферрони (α делится на число сравнений — просто, но консервативно), Холм или Бенджамини — Хохберг (контроль доли ложных открытий).
  • Находки в сегментах («в Safari на iOS вырос») считайте гипотезами для нового теста, а не результатом.

Байесовский и частотный подходы

ЧастотныйБайесовский
Ответp-value и доверительный интервал«вероятность, что B лучше A» и ожидаемые потери
Исходные допущениянет априорных данныхнужно задать априорное распределение
Интерпретацияменее интуитивнаближе к бизнес-вопросу
Подглядываниеломает контроль ошибоктоже требует правила остановки

Байесовский подход удобнее объяснять команде, но он не отменяет дисциплину: если останавливать тест, как только вероятность превысила порог, ошибок тоже становится больше. Выбор подхода важен меньше, чем заранее зафиксированный план.

Проверки перед чтением результата

  • SRM (sample ratio mismatch): если делили 50/50, а получили заметно неравные группы, сплит или трекинг сломан — результату верить нельзя.
  • Одинаковые события и фильтры в обеих группах.
  • Нет параллельных тестов на тех же страницах без изоляции.
  • Учтён эффект новизны: всплеск в первые дни часто затухает.

Частые вопросы

Только если вы изначально использовали последовательный метод с правилом ранней остановки. При классическом тесте ранняя остановка завышает долю ложных побед.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.