Почему тест «не показал эффекта» — а эффект был
Почему тест «не показал эффекта» — а эффект был
Обещал этот пост еще давно... но руки дошли только сейчас
Представим, что команда прогнала A/B, эффект незначим, вывод — «механика не работает, сворачиваем». А по факту эффект был, просто тест физически не мог его поймать при такой выборке. Один из самых частых и при этом самых незаметных провалов в тестировании — его не видно в цифрах, он прячется за формулировкой «незначимо».
Что такое MDE
❓ MDE (Minimum Detectable Effect) — минимальный размер эффекта, который тест вообще способен статистически отличить от нуля при заданных параметрах: размере выборки, мощности (обычно 80%) и уровне значимости (обычно 5%).
Формула для сравнения средних:
MDE = (z₁₋α/₂ + z₁₋β) · √(σₜ²/nₜ + σc²/nc) где t — тестовая группа, c — контрольная; σ² — дисперсия метрики, n — размер группы.
P.S. напомню, что для метрик-долей (конверсий) формула расчета MDE немного другая
Формулу необязательно помнить наизусть, важна логика: чем больше выборка и чем меньше разброс метрики — тем меньший эффект тест способен поймать. И наоборот.
Главное правило
Если реальный эффект меньше MDE — тест покажет «не значимо», даже если эффект реально существует. Это принципиально разные вещи: «эффекта нет» и «мы не способны его увидеть при таких вводных». Спутать одно с другим — типичная ошибка, которая приводит к закрытию рабочих гипотез.
Пример на пальцах
Сегмент 100 000 человек, средний чек со стандартным отклонением ~1000 ₽. При сплите 50/50 и мощности 80% тест поймает эффект примерно от 15–20 ₽ на человека. Если реальный эффект механики — условные 10 ₽, тест почти гарантированно покажет «незначимо», просто из-за нехватки мощности, а не потому что механика не работает.
Сплит имеет значение
MDE зависит не только от общего размера аудитории, но и от того, как ее делят между группами. При равном общем размере сплит 50/50 всегда чувствительнее, чем 90/10 — потому что MDE зависит от суммы σ²/n по каждой группе, а урезание control-группы резко увеличивает ее вклад в эту сумму.
👉 Экономия бюджета за счет узкой контрольной группы — это прямая плата чувствительностью теста.
Когда считать
MDE считается до запуска , а не после.
Опираться при расчете нужно на эффект, который бизнес закладывает в фичу — тот самый аплифт, из которого считается финэффект предложения. Например: команда посчитала, что фича окупится, если конверсия вырастет на +0.5 п.п., или что механика приносит смысл при аплифте от +3% к среднему чеку. Вот это число и есть точка отсчета для MDE, а не «эффект, который мы ожидаем поймать» в общем смысле.
Дальше смотрим, ловит ли тест именно этот эффект:
➖ MDE ≤ заложенный эффект — отлично, тест в текущем виде способен подтвердить или опровергнуть гипотезу, можно запускать
➖ MDE немного больше — есть шанс дотянуть: увеличить выборку (больше трафика или дольше тест), выровнять сплит к 50/50, снизить дисперсию метрики (CUPED, стратификация, обрезка выбросов, более чувствительная прокси-метрика вместо шумной)
➖ MDE сильно больше, и дотянуть нечем
(трафика физически нет, период ограничен, дисперсия не снижается) — смысла в тесте нет: он гарантированно покажет «эффекта нет», даже если он есть. Тут стоит либо пересмотреть механику эксперимента, либо честно признать, что A/B не даст ответа при текущих вводных
Отдельный вопрос — на чем считать σ² для самой формулы. Чаще всего берут исторические данные: дисперсию метрики за прошлый период (без воздействия) или результаты пилота / A/A-теста. Если исторический период нетипичный (сезонность, акция, аномалия) — MDE получится нерепрезентативным. Что делать: брать окно подлиннее, чистить от акций/аномалий и сверяться с A/A — он сразу даст честную σ² без ручного подбора периода.
Чек-лист перед запуском теста
➖ Какой эффект мы реально ожидаем поймать — запрашиваем у бизнеса
➖ Какой MDE при текущем размере выборки и сплите
➖ MDE меньше ожидаемого эффекта? Если нет — тест в текущем виде бессмысленен
➖ Что делать, если MDE слишком большой: увеличить выборку, выровнять сплит, продлить период
❤️🔥 По
Откликнуться в Telegram →
⚠️ Никогда не платите «за оформление» или «гарантию трудоустройства» — это признак мошенников. Работа ТРУ не несёт ответственности за содержание вакансии.