Шпаргалка по A/B-тестам
alpha 0.05. В результате теста получили p-value 0.06. Какой вывод корректнее всего?Зачем это знать
A/B-тесты — ежедневный инструмент продуктового аналитика. Ниже — сжатая шпаргалка по основным понятиям и самым частым ошибкам.
Основные понятия
Гипотезы
- H0 (нулевая): эффекта нет.
- H1 (альтернативная): эффект есть.
Задача теста — оценить, есть ли у нас достаточно оснований отвергнуть H0.
p-value
Вероятность получить такие же (или более экстремальные) данные при условии, что H0 верна.
Маленькое p (например, < 0,05) говорит о том, что данные плохо согласуются с H0.
α (альфа)
Допустимый уровень ошибки первого рода. Обычно 0,05. Это вероятность отвергнуть H0, когда на самом деле она верна.
β (бета) и мощность
β — вероятность не отвергнуть H0, когда эффект реально есть. Мощность теста = 1 − β (обычно выбирают 0,80).
Метрики теста
Основная метрика
Та, по которой вы принимаете финальное решение. Одна на один тест.
Вспомогательные метрики
Дают контекст, помогают объяснять результат.
Guardrail-метрики
То, что не должно ухудшаться: крэши, ошибки, отток, жалобы. Даже положительный результат по основной метрике не стоит внедрять, если ухудшаются guardrail-метрики.
Размер выборки
Для доли (конверсии):
n = 2 × (z_{α/2} + z_β)² × p̄ × (1 − p̄) / (p₁ − p₂)²При α = 0,05 и мощности 0,80: z_{α/2} ≈ 1,96, z_β ≈ 0,84.
Связь с MDE: n ∝ 1 / MDE². Уменьшение MDE в 2 раза увеличивает требуемую выборку примерно в 4 раза.
Статистические тесты
- t-тест для сравнения средних на непрерывных метриках (при нормальности или больших выборках).
- z-тест для долей для сравнения конверсий.
- χ² для категориальных данных.
- Mann-Whitney как непараметрическая альтернатива t-тесту.
В Python обычно используют scipy.stats и statsmodels.
Типичные ошибки
Подглядывание
Многократная проверка значимости во время эксперимента увеличивает вероятность ложного срабатывания. Либо фиксируйте длительность заранее, либо используйте специальные sequential-методы.
Множественные сравнения
Если одновременно проверять много метрик, часть из них окажется «значимой» случайно. Выбирайте основную метрику заранее или корректируйте α (например, Бонферрони).
Эффект новизны
Изменение сначала работает просто из-за новизны, а со временем эффект сглаживается. Запускайте тест достаточно долго, учитывайте holdout на длинном горизонте.
SRM (Sample Ratio Mismatch)
Если ожидается деление 50/50, а на практике получилось, например, 53/47 — проверьте инфраструктуру. Критерий χ² поможет формально оценить отклонение.
Сетевые эффекты
Когда treatment-группа влияет на control (социальные сети, маркетплейсы, мобильность), обычный A/B даёт смещённую оценку. Варианты: кластерная рандомизация, switchback-эксперименты.
Игнорирование сегментов
Среднее может скрывать разнонаправленные эффекты в разных сегментах. Всегда смотрите основные сегменты (платформа, страна, новизна пользователя).
Статистическая и практическая значимость
p-value говорит только о статистической значимости. Практическая значимость — это размер эффекта и экономический смысл. На больших выборках статистически значимым становится почти любое отличие, поэтому всегда смотрите на размер эффекта.
Доверительный интервал для разницы
CI = Δ ± z × SE(Δ)Для долей:
SE(Δ) = √(p₁(1 − p₁)/n₁ + p₂(1 − p₂)/n₂)95% ДИ: множитель 1,96. Если интервал не пересекает ноль — различие статистически значимо.
Снижение дисперсии: CUPED
Идея CUPED — вычесть предэкспериментальный ковариат, сильно связанный с метрикой:
Y' = Y − θ × (X − mean(X))Здесь X — значение метрики до эксперимента, θ = Cov(Y, X) / Var(X). Подробнее — CUPED простыми словами.
Дизайн эксперимента
- Фиксируйте основную метрику, направленные гипотезы и размер выборки заранее.
- Учтите стратификацию по важным признакам (платформа, страна, сегмент).
- Договоритесь о длительности, покрывающей недельные и сезонные циклы.
- Отдельно пропишите guardrail-метрики и правила остановки.
Решение по результатам
- Основная метрика значимо и практически улучшилась, guardrail не ухудшились — можно катить.
- Основная метрика не значима — не катим, либо собираем больше данных / пересматриваем гипотезу.
- Результаты сильно различаются по сегментам — возможно, стоит катить только для части пользователей.
SQL-заготовка для A/B
Базовое сравнение конверсий:
SELECT
variant,
COUNT(*) AS users,
SUM(converted) AS conv,
AVG(converted)::numeric AS cr
FROM experiment
GROUP BY variant;Подробнее — SQL для A/B-тестов.
Вопросы с собеседования
- Чем отличаются α и β?
- Зачем нужна guardrail-метрика?
- Что такое CUPED и зачем его используют?
- Почему нельзя «просто остановить тест», как только увидели значимость?
- Как быть с сетевыми эффектами в социальных и маркетплейс-продуктах?
Связанные темы
- A/B-тест простыми словами
- p-value простыми словами
- CUPED простыми словами
- Как рассчитать размер выборки для A/B
- Проблема подглядывания в A/B-тестах
- Правила хорошего A/B-теста
FAQ
Какой α использовать?
Обычно 0,05. Для более «дорогих» решений иногда берут 0,01.
Односторонний или двусторонний тест?
По умолчанию — двусторонний. Односторонний имеет смысл только если у вас есть сильное априорное основание ожидать эффекта именно в одну сторону.
Можно ли останавливать тест раньше?
Только при использовании sequential-методов (например, mSPRT), которые специально разработаны для корректного «подглядывания».