Провести AB за 60 секунд

Калькулятор sample size говорит: 210 дней при baseline 5%, MDE +2 п.п., power 80%, alpha 5%. Бизнес хочет результат через неделю. Ты начинаешь искать, как ускорить, не увеличивая трафик. Находишь CUPED, стратификацию, regression adjustment, и непонятно, что реально работает. Давайте разбираться

Как это работает

В AB тесте дисперсия оценки эффекта раздута, потому что юзеры сами по себе разные (и поведение каждого из них случайно от сессии к сессии): кто-то тратит 1000 рублей, кто-то 10 тысяч, и эта разница забивает сигнал от изменений в treatment. Variance reduction убирает из оценки ту часть шума, которую можно объяснить через данные, которые уже есть до эксперимента. Если шум не объясняется ковариатами — никакой метод не поможет. Основные подходы:

➖ CUPED берёт значение метрики за предпериод и вычитает из текущей метрики её предсказуемую часть. Юзер, который и раньше тратил много, не раздувает дисперсию своим высоким чеком в эксперименте. Снижение дисперсии равно ρ², где ρ — корреляция метрики с предпериодом

➖ Стратификация разбивает юзеров на группы по дискретному признаку (страна, платформа, сегмент), считает эффект внутри каждой группы и взвешивает. Разница в среднем чеке между Россией и Казахстаном перестаёт шуметь. Алгебраически это то же самое, что регрессия с дамми на страты — просто без необходимости иметь предпериод

➖ Regression adjustment в форме Lin estimator: регрессия с ковариатами и их взаимодействием с treatment. Это обобщение CUPED на несколько ковариат сразу, и interaction term важен — без него (классический Freedman) оценка может оказаться хуже, чем simple difference при дисбалансе групп

Какой метод для какой метрики

Revenue, session duration, средний чек и прочие continuous метрики: CUPED или Lin estimator

Корреляция с предпериодом обычно 0.3–0.6, что даёт снижение дисперсии на 10–35%. CUPED проще в проде, Lin estimator выигрывает, когда есть несколько сильных ковариат. По сути CUPED — это Lin с одной ковариатой

Конверсия, retention и другие бинарные метрики: стратификация

Конвертировался ли юзер на прошлой неделе почти ничего не говорит о том, конвертируется ли он на этой — корреляция 0.1–0.3, и снижение дисперсии через CUPED получается всего 1–10%. Линейная регрессия даёт несмещённую оценку ATE и для бинарного outcome, проблема не в смещении, а именно в слабом pre-period сигнале. Стратификация по стране или платформе обычно даёт сопоставимый или лучший результат и не требует предпериода

Если хочется выжать максимум — Lin estimator + пост-стратификация, но только если ковариаты и страты захватывают разную информацию. Если они сильно коррелированы, второй метод добавит почти ничего

По традиции в комментах ноутбучек с симуляцией всех трёх методов на синтетике. Можете подставить свои параметры и посмотреть, что даст выигрыш в вашем кейсе #ab_testing #ipynb