Шпаргалка по A/B-тестам

Проверь себя · 1/3разбор после ответа
Вы заранее выбрали 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 говорит только о статистической значимости. Практическая значимость — это размер эффекта и экономический смысл. На больших выборках статистически значимым становится почти любое отличие, поэтому всегда смотрите на размер эффекта.

Подготовься к собесу по A/B и статистике
300+ вопросов с разбором: дизайн, размер выборки, p-value, ловушки
Тренировать A/B в Telegram

Доверительный интервал для разницы

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 и зачем его используют?
  • Почему нельзя «просто остановить тест», как только увидели значимость?
  • Как быть с сетевыми эффектами в социальных и маркетплейс-продуктах?

Связанные темы

FAQ

Какой α использовать?

Обычно 0,05. Для более «дорогих» решений иногда берут 0,01.

Односторонний или двусторонний тест?

По умолчанию — двусторонний. Односторонний имеет смысл только если у вас есть сильное априорное основание ожидать эффекта именно в одну сторону.

Можно ли останавливать тест раньше?

Только при использовании sequential-методов (например, mSPRT), которые специально разработаны для корректного «подглядывания».