Variance reduction в A/B-тестах: CUPED, stratification и другие методы

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Что такое variance reduction

В A/B тесте мы сравниваем среднее метрики в treatment и control. Чем больше variance метрики, тем труднее обнаружить эффект — нужно больше юзеров для той же statistical power.

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

Эффект: обычно 20-50% reduction в variance. Это либо в 2× меньше нужна выборка, либо в √2× меньше MDE детектируется.

Variance reduction — must-have для senior DS, особенно в компаниях с десятками тысяч экспериментов в год (Yandex, Tinkoff, Ozon).

CUPED — главный метод

CUPED (Controlled-experiment Using Pre-Experiment Data) — техника, которая использует pre-эксперимент данные для снижения variance.

Идея: если у юзера до эксперимента была высокая активность, она скорее всего и в эксперименте будет высокая. Учёт этого «бейзлайна» убирает predictable variance.

Формула

Y_adjusted = Y - theta × (X - mean(X))

где:

  • Y — метрика во время эксперимента
  • X — pre-experiment covariate (та же метрика за неделю до эксперимента)
  • theta = Cov(Y, X) / Var(X) — коэффициент регрессии

После adjustement, mean остаётся прежним, а variance снижается.

Когда работает

  • Метрика стабильна во времени (revenue per user, time spent, retention)
  • Есть pre-experiment data для большинства юзеров
  • Covariate (pre-X) сильно коррелирует с outcome (Y)

Когда не работает

  • Новые юзеры (нет pre-data)
  • Метрика, которой не было до (e.g., конверсия в первую покупку)
  • Pre-period слишком короткий

Размер эффекта

Variance reduction обычно:

  • 30-50% для активных метрик (revenue, sessions, time spent)
  • 10-20% для метрик с высокой volatility
  • <10% или негативный — если covariate плохой

Подробнее — CUPED для снижения дисперсии.

Stratification

Stratification — балансировка распределения юзеров по характеристикам перед рандомизацией.

Идея

Если в группе T случайно попадут юзеры с более высоким baseline (например, больше power users), результат искажён. Stratification гарантирует, что важные сегменты равно представлены.

Pre-experiment stratification

Перед запуском:

  1. Делим юзеров на страты по характеристикам (device, platform, активность)
  2. В каждой страте — независимая рандомизация 50/50
Mobile users: 50% T, 50% C
Desktop users: 50% T, 50% C

Это гарантирует баланс на этих характеристиках.

Эффект

Variance reduction — 5-20%. Меньше CUPED, но проще реализовать.

Post-stratification

Post-stratification — балансировка во время анализа, без изменения дизайна.

Идея

Эксперимент уже запущен с обычной рандомизацией. На анализе делаем weighted estimate, где веса корректируют дисбалансы между T и C.

ATE_post-stratified = sum_strata(weight_strata × (Y_T_strata - Y_C_strata))

Преимущества

  • Не требует изменения assignment-логики
  • Применяется при анализе уже запущенного эксперимента

Недостатки

  • Меньше effective чем pre-experiment stratification
  • Требует знания страт во время анализа
Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Regression adjustment

Regression adjustment — линейная регрессия с дополнительными covariate-ами.

Y = beta_0 + beta_1 × T + beta_2 × X + epsilon

где T — индикатор treatment, X — covariates (pre-experiment data, demographics).

Coefficient beta_1 — оценка treatment-эффекта с учётом covariates.

Связь с CUPED

CUPED — это упрощённая регрессия с одним covariate. Regression adjustment может использовать несколько covariate-ов одновременно.

Когда полезно

  • Несколько важных predictors
  • Нелинейные эффекты (через полиномы / interactions)
  • Heterogeneous treatment effects (CATE)

Какой метод выбрать

Ситуация Подходит
Метрика стабильна, есть pre-data CUPED
Хочется баланс по device / region Pre-experiment stratification
Эксперимент уже запущен, дисбаланс Post-stratification
Много predictors Regression adjustment
Heterogeneous эффекты Regression + CATE

В практике: CUPED — default для большинства экспериментов. Stratification — дополнительно по важным характеристикам.

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

FAQ

Сколько variance reduction даёт CUPED?

Обычно 20-50%. Зависит от того, насколько pre-period coверage с post-period.

Можно ли комбинировать CUPED + stratification?

Да. Сначала pre-experiment stratification, потом CUPED при анализе. Эффект мультипликативный.

Pre-period должен быть длиннее post-period?

Не обязательно. Главное чтобы был достаточно долгий для надёжной covariate (1-2 недели обычно).

Регрессия adjustment vs CUPED — что лучше?

Технически regression — обобщение CUPED. На практике CUPED проще объяснить менеджеру и стандартизирован в большинстве A/B-платформ.

Когда стоит применять variance reduction?

Когда: (1) выборка ограничена, (2) MDE маленький, (3) есть pre-experiment data. Если выборка огромная и эффект большой — variance reduction даёт меньше пользы.