Август 2026 A/B-эксперименты 9 мин

Почему A/B-тест врёт

Тринадцать ошибок в трёх группах — справочник, к которому можно возвращаться.

Ошибка в A/B-тесте почти никогда не выглядит как ошибка. Где-то в данных что-то сломалось — а на выходе красивый значимый результат, к которому не придерёшься. Продакт смотрит: сработало, выкатываем. И он прав по-своему, цифра честная на вид. Просто в основании была трещина, а решение приняли по тому, что оказалось на поверхности.

За девять лет я для себя разложил все ошибки на три группы — не ради красоты, а чтобы понимать, где искать, когда результат не сходится с реальностью.

Организационные — как ставим тест и принимаем решение. Формул здесь нет вообще, а ломается больше, чем во всей статистике.

Статистические — чем и как считаем. Обманывает уже сама математика.

Технические — платформа, данные, воспроизводимость. Самая тихая группа и потому самая опасная: в первых двух ошибку хоть видно, а тут ломается в фундаменте, и сверху всё выглядит нормально.

У этого деления есть следствие, ради которого оно и придумано. Видимость ошибки падает сверху вниз, а цена — растёт.

Рядом в этом разделе есть ещё два текста про ошибки A/B, и они не дублируют друг друга. 33 способа запороть A/B-тест — справочник-каталог, туда идут за конкретным типом ловушки. Три ошибки в планировании — узкая и вглубь, только про то, что делается до запуска. Здесь — сквозной разбор: как поломка внизу превращается в неверное решение наверху. Это текстовая версия вебинара на karpov.courses.

Организационные ошибки

Те, что случаются ещё до единой формулы.

1. Нет гипотезы и дизайна

Как выглядит. Тест запустили, потом посмотрели в данные, потом решили, что считать успехом.

Почему обманывает. Тест доказывает что-то, только если гипотеза, целевая метрика, направление эффекта, MDE и план анализа зафиксированы до данных. Как только ты смотришь в данные и затем решаешь, что считать успехом, ты неявно перебираешь множество вариантов — и заявленные 5% ложноположительных превращаются в куда большую величину. Разведочный анализ полезен, но он рождает гипотезы, а не подтверждает их.

Что делать. Дизайн-док на одну страницу до старта: гипотеза, целевая метрика, MDE, срок, правило остановки.

Термин: HARKing (Hypothesizing After the Results are Known), отсутствие предрегистрации, confirmatory vs exploratory анализ, сад расходящихся троп.

2. Неправильный MDE

Как выглядит. MDE взят из чужой статьи или из головы, без привязки к своему бизнесу.

Почему обманывает. MDE — наименьший истинный эффект, который тест надёжно поймает при заданных α и мощности. Размер выборки растёт примерно как 1/MDE²: вдвое меньший эффект требует вчетверо больше данных.

Молодой продукт с конверсией 2% ловит +10% относительных — это видно на десятках тысяч пользователей за неделю. Зрелый маркетплейс с конверсией 8% хочет поймать +0,5% — это сотни миллионов рублей, но чтобы отличить 8,0 от 8,04, нужны миллионы пользователей и месяц. Одна и та же кнопка, а стоимость теста отличается в сотни раз.

Отсюда два провала: MDE завышен — ждёшь эффект, которого не бывает, и хронически видишь «незначимо»; занижен — тест не заканчивается никогда.

Что делать. Считать MDE от наименьшего эффекта, который реально изменил бы бизнес-решение. Если +0,3% и +3% ведут к одному и тому же действию, целиться в 0,3% незачем. При нехватке трафика — снижать дисперсию: CUPED, стратификация.

Термин: MDE (Minimum Detectable Effect), мощность теста, power analysis.

3. Подмена метрик

Как выглядит. Целевая не выстрелила, зато рядом десяток вспомогательных, и одна подросла. «Ну смотрите, вот тут же плюс».

Почему обманывает. Выбор победившей метрики после того, как увидел результаты, — то же самое, что проверить кучу метрик и оставить удачную. При k кандидатах вероятность, что хотя бы одна случайно даст p<0,05 при отсутствии эффекта, ≈ 1−(1−0,05)^k. Пять метрик — 23%, двадцать — 64%, то есть чаще, чем нет.

Конкретно: конверсия плоская, а retention седьмого дня вдруг +1,5%. Соблазн — переобъявить успехом retention. А это просто одна из двадцати монеток выпала орлом. На следующем тесте выстрелит другая, и связи с фичей не будет.

Что делать. Одна заранее объявленная целевая метрика. Вспомогательные и защитные — для контекста и безопасности, не для объявления победы. Выросла важная вторичная метрика — это повод для новой гипотезы и отдельного теста, а не для переписывания цели задним числом.

Термин: cherry-picking, outcome switching, p-hacking, OEC.

4. Раннее завершение

Как выглядит. Смотрим на дашборд каждый день, останавливаем в момент, когда впервые стало значимо.

Почему обманывает. Обычный тест рассчитан на один анализ в конце. Каждая промежуточная проверка — новая попытка пересечь порог значимости, и если останавливаться на первом успехе, доля ложноположительных раздувается с 5% до 20–30% и выше, тем сильнее, чем чаще подглядываешь.

Смотреть на дашборд не грех. Грех — принимать решение в момент случайного пересечения порога.

Что делать. Заранее зафиксированный размер выборки без досрочной остановки. Либо корректные методы последовательного анализа, которые честно размазывают α по проверкам: group sequential, alpha-spending, границы О'Брайена–Флеминга.

Термин: peeking, optional stopping.

5. Отчёт вместо решения

Как выглядит. На выходе сорок страниц с графиками и без ответа «выкатываем или нет».

Почему обманывает. p<0,05 говорит лишь, что эффект вряд ли ровно нулевой, и ничего — о его величине и ценности. На больших выборках значимым становится даже мизерный эффект; на маленьких реальный эффект может значимости не достичь. Значит, «значимо» не равно «стоит катить».

Что делать. Заранее оговорённый порог решения, привязанный к деньгам. В отчёте — размер эффекта и доверительный интервал, а не только p. Формат — одна страница с решением.

Термин: статистическая значимость против практической.

Все пять лечатся одним: договориться обо всём заранее — гипотеза, метрика, MDE, срок, правило остановки. Скучно, бесплатно, спасает половину тестов.

Статистические ошибки

Когда обманывает уже сама математика.

6. Один критерий на все метрики

Как выглядит. t-тест применяется ко всему подряд.

Почему обманывает. У каждого критерия свои предпосылки — про распределение, независимость наблюдений и про то, какой параметр он вообще проверяет.

Бинарные конверсии — тест долей, z-тест или хи-квадрат. Непрерывные средние вроде выручки — тест Уэлча, устойчивый к разным дисперсиям; при тяжёлых хвостах и выбросах — бутстрап.

Ratio-метрики вроде CTR коварнее всего: знаменатель случаен, а наблюдения не независимы — у одного пользователя много событий. Наивный t-тест занижает дисперсию и даёт ложные срабатывания.

Что делать. Подбирать критерий под тип метрики. Для ratio — дельта-метод или бутстрап с линеаризацией на уровне пользователя.

CTR — это доля или ratio? Ответ зависит от того, что считать единицей наблюдения: показ или пользователя. Переключите — и сменится не только название типа, но и критерий, которым метрику положено проверять.

Симулятор
Классификатор метрик
12 готовых метрик из курса по A/B-статистике
Открыть отдельно ↗
Открыть классификатор метрик ↗

Тип метрики — половина ответа. Вторая половина в том, как распределены сами данные. У выручки длинный хвост: среднее тянут несколько китов, и t-тест начинает врать не потому, что формула неверна, а потому, что не выполнены его предпосылки. Поставьте тяжесть хвоста на максимум и посмотрите на гистограмму.

Симулятор
Playground распределений
Форма данных и её влияние на выбор критерия
Открыть отдельно ↗
Открыть playground распределений ↗

Термин: предпосылки критерия, тест Уэлча, дельта-метод, линеаризация

7. Множественность

Как выглядит. В отчёте сотни метрик, часть «значимых».

Почему обманывает. При m проверках на уровне α ожидаемое число ложных срабатываний среди пустышек ≈ m·α. Пятьсот метрик — около 25 ложных побед на пустом месте. Вероятность хотя бы одной ложной = 1−(1−α)^m и быстро стремится к единице.

Что делать. Выбрать, что контролируем. FWER — вероятность хотя бы одной ошибки: Бонферрони (просто, но консервативно, режет мощность) или Холм (равномерно мощнее). FDR — ожидаемая доля ложных среди отмеченных побед: Бенджамини–Хохберг, заметно мягче, разумен, когда просеиваешь сотни метрик.

Термин: множественные сравнения, FWER, FDR, Бонферрони, Холм, Бенджамини–Хохберг

8. Решение по точке, а не по интервалу

Как выглядит. Смотрим на одну красивую цифру эффекта.

Почему обманывает. Точечная оценка ничего не говорит о том, насколько она устойчива. Доверительный интервал, пересёкший ноль, означает, что данные совместимы и с ростом, и с падением.

Что делать. Решение принимать по доверительному интервалу разности. Для метрик роста смотреть нижнюю границу, для защитных — верхнюю, чтобы не проглядеть вред. Нижняя граница выше MDE — уверенный содержательный рост. Широкий интервал — данных не хватило, а не «эффекта нет».

Термин: доверительный интервал, точечная оценка, двойственность ДИ и значимости

9. Эффект новизны

Как выглядит. В первые дни рост, через месяц эффекта нет.

Почему обманывает. Реакция пользователя на изменение меняется со временем. При novelty люди активнее трогают новое просто из-за новизны — эффект в первые дни завышен и затухает к истинному уровню. При primacy наоборот: сначала непривычно, эффект занижен, а по мере привыкания растёт.

В обоих случаях среднее за короткое окно смещено относительно долгосрочного эффекта, и решение по пиковой неделе систематически ошибочно.

Опаснее всего для часто используемых фич — интерфейс, лента. Почти неважно для разовых — онбординг, оплата.

Что делать. Держать тест дольше периода привыкания, смотреть динамику эффекта по неделям, а не одно среднее.

Термин: novelty effect, primacy effect, нестационарность эффекта

Статистика в трёх строчках: критерий под метрику, а не один на всё; чем больше метрик, тем нужнее поправка; смотрим на интервал, а не на точку.

Технические ошибки

Те, что почти не видно.

10. Баги на сплите

Как выглядит. Задумали 50 на 50, по факту 52 на 48. Или трафика в одной группе заметно меньше.

Почему обманывает. Расхождение фактического деления с задуманным означает, что группы формировались не случайно — а значит, любое различие между ними может объясняться не фичей, а самим перекосом. При этом отчёт выглядит нормально: числа есть, значимость есть.

Частые причины: баг ассайнмента, разная фильтрация ботов в группах, redirect или latency bias (одна ветка медленнее, часть пользователей отваливается), потеря логов, перекос из-за карантина.

Что делать. Автоматическая проверка на каждом тесте. При срабатывании — не интерпретировать результат, а искать причину. Лечить причину, а не доливать перекошенную группу.

Термин: SRM, Sample Ratio Mismatch.

11. Агрегаты и невоспроизводимость

Как выглядит. На руках только сводные числа. Перепроверить нельзя, разложить по срезам нельзя.

Почему обманывает. Результат теста обязан детерминированно воспроизводиться из сырых событий по одному версионируемому определению метрики. Если есть только агрегаты, ты доверяешь чёрному ящику.

А если две команды считают «одну и ту же» метрику разным SQL, с разными фильтрами и дедупликацией, числа расходятся — и расхождение означает, что у вас не измерение, а мнения.

Это инженерия экспериментов, а не статистика, но она тихо отравляет всё, что выше.

Что делать. Единый версионируемый слой определений метрик. Возможность пересчитать любой результат из сырых событий.

Термин: reproducibility, single source of truth, metric definition drift.

12. Метрику не завести

Как выглядит. Платформа не даёт посчитать то, что нужно, — считаем то, что доступно.

Почему обманывает. Когда инструмент ограничивает, что можно измерить, аналитик оптимизирует доступный прокси вместо истинной цели. Улучшение прокси не гарантирует улучшения настоящей цели: суррогат может расти, пока реальный результат стоит на месте или падает — особенно если прокси слабо связан с целью или его легко накрутить.

В итоге ограничения инструмента незаметно смещают всю программу тестов в сторону «что удобно посчитать» вместо «что важно».

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

Термин: streetlight effect, surrogate-метрики.

13. Сетевые эффекты

Как выглядит. Тест на соцсети или маркетплейсе показывает эффект меньше реального. Или два теста идут на пересекающихся пользователях.

Почему обманывает. Классический A/B опирается на предположение, что исход каждого пользователя зависит только от его собственного назначения, не от чужого. Оно нарушается, когда пользователи взаимодействуют — соцсети, мессенджеры, вирусность — или делят ограниченный ресурс: на двустороннем рынке продавцы из теста влияют на покупателей из контроля.

Тогда эффект протекает между группами, и оценка смещается — чаще к нулю, потому что контроль «заражается» лечением, иногда наоборот.

Отдельная беда — несколько тестов на пересекающихся пользователях без ортогонализации.

Что делать. Кластерная рандомизация, switchback, географические сплиты. Ортогональные слои для параллельных тестов.

Кластерная рандомизация чинит интерференцию и ломает анализ. ICC — это то, насколько пользователи внутри одного кластера похожи друг на друга: в одном городе они видят одну рекламу, живут при одной погоде, попадают под одни акции. Чем выше ICC, тем меньше нового приносит каждый следующий пользователь: двадцать городов остаются двадцатью наблюдениями, сколько бы человек в них ни жило.

Поставьте эффект в ноль, а ICC на максимум. Наивный t-тест покажет p<0,001 там, где эффекта нет, и будет ошибаться так в двух случаях из трёх.

Симулятор
Кластерный эксперимент
Наивный t-тест против кластерного при той же выборке
Открыть отдельно ↗
Открыть кластерный симулятор ↗

Термин: нарушение SUTVA, interference, spillover.

Как это сходится

Одна ошибка снизу — неверное решение сверху:

[Нужен кейс: реальная история, где внизу сломалось, наверху выглядело убедительно, решение приняли неверное. Можно обезличить.]

На каждом шаге человек поступил разумно. Вот почему смотреть только на итоговую цифру мало.

Восемь проверок перед запуском

  1. Гипотеза и метрика — до старта
  2. MDE — под свой бизнес, не из чужой статьи
  3. На выходе — решение, а не отчёт на сорок страниц
  4. Критерий — под тип метрики (карта выбора)
  5. Много метрик — поправка на множественность
  6. Решение — по доверительному интервалу, а не по точке
  7. Первым делом — SRM
  8. Данные воспроизводимы из сырых событий
Откуда это растёт

null, картотека математики: сад расходящихся троп · кризис воспроизводимости

Если интересно обсудить — напишите в Telegram.

← Все статьи