A/B-тесты и causal inference на собеседовании Data Scientist
Зачем DS спрашивают про эксперименты
A/B-тесты и causal inference — фундамент работы Data Scientist в продуктовой компании. Без эксперимента невозможно доказать, что модель работает: offline-метрика может быть отличной, а в A/B — ничего. DS должен говорить на этом языке с PM, с командой и с executive.
В отличие от PM-собеса, где A/B на уровне «p-value < 0.05», от DS ждут глубже: CUPED, switchback, sequential testing, регрессия на причинно-следственные эффекты, DiD, propensity score matching. На собесе Data Scientist это часть ML-теории или отдельный раунд.
Базовая A/B-теория
Размер выборки
Зависит от: baseline, MDE, alpha, power.
Формула (для бинарной метрики, two-sided test):
- n ≈ 16 × p(1-p) / MDE² (упрощённо, для alpha=0.05, power=0.8)
Если baseline 10% и хотим детектировать абсолютный лифт 1%: n ≈ 16 × 0.1 × 0.9 / 0.0001 = 14400 на каждую группу.
Подробнее — размер выборки A/B.
P-value, MDE, power
P-value — вероятность увидеть такой эффект (или сильнее), если нулевая гипотеза верна. P < alpha → отвергаем H0.
MDE (Minimum Detectable Effect) — минимальный эффект, который можно обнаружить при данной выборке. MDE падает с ростом выборки.
Power (мощность) — вероятность обнаружить эффект, если он есть. Обычно 0.8.
Подробнее — p-value простыми словами.
Типичные ловушки
- Peeking. Смотришь результат до окончания эксперимента — повышает false positive. Решение: фиксировать длительность или sequential testing.
- Sample Ratio Mismatch (SRM). Планировал 50/50, получилось 47/53 — что-то сломано. Эксперимент с SRM нельзя интерпретировать.
- Novelty effect. Юзер реагирует на новизну, эффект пропадает через 2-4 недели.
- Multiple testing. Тестируешь 20 метрик с alpha=0.05 → 1 будет «значимой» случайно. Bonferroni, FDR.
- Сетевые эффекты. В соцсети action одного юзера влияет на других → control «загрязнён». Cluster randomization, switchback.
CUPED — снижение дисперсии
CUPED (Controlled-experiment Using Pre-Experiment Data) — метод снижения variance метрики через pre-experiment covariate.
Идея: если у юзера до эксперимента метрика была X, она скорее всего и в эксперименте будет около X. Учёт pre-эксперимента уменьшает «шум» — те же результаты при меньшей выборке (или больше power при той же).
Эффект: обычно 20-50% reduction в variance. То есть либо в 2× меньше нужна выборка, либо в √2× меньше MDE детектируется.
Когда полезен: метрика стабильна во времени (revenue per user, time spent). Не подходит для метрик, которые сильно меняются (конверсия в первую покупку — у новых юзеров pre-data нет).
Подробнее — CUPED для снижения дисперсии.
Switchback и сетевые эффекты
Когда юзеры влияют друг на друга (соцсети, маркетплейсы, дороги), классический A/B загрязнён.
Решения:
- Cluster randomization — рандомизация на уровне групп (города, dark stores, классов).
- Switchback — попеременно включаем/выключаем фичу во времени. Сравниваем периоды.
- Geo-experiments — отдельные регионы как контроль и тест.
Trade-off: меньше эффективная выборка → нужны больше времени или больше регионов.
Bayesian A/B testing
Альтернатива frequentist A/B. Считаем вероятность того, что вариант B лучше варианта A, на основе данных и prior.
Преимущества:
- Прямой ответ на бизнес-вопрос: «P(B > A) = 90%»
- Можно подглядывать без потери валидности
- Естественная инкорпорация prior knowledge
Недостатки:
- Зависит от выбора prior
- Сложнее объяснить менеджеру
- Не всегда быстрее frequentist
Подробнее — bayesian A/B testing.
Causal inference: за пределами A/B
Когда A/B невозможен (compliance, дорого, долго), causal inference даёт альтернативы.
Difference-in-Differences (DiD)
Сравниваем изменение метрики в treatment vs control с момента вмешательства. Ключевое допущение — parallel trends (без вмешательства группы шли бы параллельно).
Пример: новая функция выкатилась в Москве, не выкатилась в Питере. DiD сравнивает рост метрики в Москве - рост в Питере = эффект функции (при условии что без неё трек был бы одинаков).
Подробнее — Difference-in-Differences.
Propensity Score Matching (PSM)
Если у нас есть данные об эффекте, но treatment был не рандомным (юзеры сами выбрали = self-selection), матчим treated с control по характеристикам.
Метод: обучить модель предсказания treatment (propensity score), матчить пары с близким score. Сравнить метрику в матченных парах.
Подробнее — Propensity Score Matching.
Instrumental variables (IV)
Если есть переменная Z, которая влияет на treatment X, но не напрямую на outcome Y (только через X) — её можно использовать как instrument.
Классический пример: лотерея военной службы как instrument для эффекта службы на образование (Angrist).
В практике DS — редкий случай, но в econ-задачах применяется.
Synthetic control
Конструируем «синтетический контроль» из weighted combination других единиц, который повторяет behavior treatment-единицы до вмешательства.
Применяется для региональных вмешательств: одна страна попробовала политику, другие — нет. Какова была бы динамика без политики?
Uplift modeling
Модели, которые предсказывают не «купит или нет», а «купит если воздействуем на него». Это про эффект интервенции для каждого индивидуального юзера.
Применяется в CRM, маркетинге: кому отправлять промо, чтобы максимизировать incremental purchase.
Подробнее — uplift modeling.
Типичные вопросы
«У нас A/B показал рост primary, падение revenue. Что делать?» Проверить: (1) был ли revenue в guardrail; (2) сегментация — может рост у одних, падение у других; (3) novelty effect — может стабилизируется. Решение зависит от business case.
«Когда CUPED не работает?» Метрика, у которой pre-период не предсказывает post (например, конверсия в первое действие для новых юзеров). Также если pre-период слишком короткий.
«Сетевые эффекты в соцсети — как тестировать?» Cluster randomization (рандомизация по социальным группам, а не юзерам) или switchback. Минус — меньше эффективная выборка.
«Как доказать причинность, если A/B не было?» Causal inference: DiD (если есть контрольная группа), PSM (если есть наблюдательные данные), synthetic control, regression discontinuity. Объяснить допущения каждого метода.
«Что такое treatment effect heterogeneity?» Эффект интервенции разный у разных подгрупп. Решение — uplift modeling, conditional average treatment effect (CATE).
Частые ошибки
- Зубрить frequentist без bayesian. На senior-собесах ждут понимания обоих подходов
- Игнорировать сетевые эффекты. В соцсети и маркетплейсе классический A/B врёт
- Не учитывать длительность. A/B на 7 дней — рискованно. Novelty + сезонность ломают
- Зубрить «p < 0.05». На уточнение «что значит p-value» — нужен корректный ответ
- Игнорировать confounders. Любой observational analysis без учёта confounders — bias
FAQ
Какие методы causal inference обязательно знать?
DiD, PSM, regression with controls — must-know. Synthetic control, IV — желательно. Detailed RDD (regression discontinuity) — на senior.
Когда A/B не нужен?
(1) Обязательные изменения (compliance), (2) очевидные фиксы багов, (3) когда выборка слишком мала и эксперимент не имеет силы.
Сколько должен длиться A/B?
Минимум — длиннее недельного цикла (учесть weekday vs weekend). Лучше 2-4 недели для устранения novelty.
Чем DS-уровень A/B отличается от PM-уровня?
PM знает «как запустить A/B». DS знает «как спроектировать experiment platform, как сократить variance, как обработать сетевые эффекты, как использовать causal inference когда A/B невозможен».
Какие книги читать?
«Trustworthy Online Controlled Experiments» (Kohavi, Tang, Xu) — фундамент. «Causal Inference: The Mixtape» (Cunningham). «The Book of Why» (Pearl). Курсы по causal inference на Coursera.