Модуль 1. Почему causal сложно

TL;DR

Корреляция ≠ причинность. Без рандомизации любое сравнение смещено: в treatment-группе пользователи отличаются от control не только по воздействию, но и по исходным характеристикам. Квазиэксперименты — набор приёмов, каждый из которых заменяет силу рандомизации на конкретное структурное допущение. Знать, какое допущение делаем — и проверять его — важнее, чем знать формулы.

Фундаментальная проблема

Идея causal-анализа простая: мы хотим знать, что произошло бы с пользователем, если бы он получил интервенцию (Y₁), и что произошло бы, если бы не получил (Y₀). Эффект на конкретном пользователе — это разница Y₁ − Y₀.

Проблема: каждый пользователь живёт в одной реальности. Если он получил интервенцию, мы видим Y₁, но Y₀ — нет. Это «параллельный мир», который мы не наблюдаем. И наоборот для пользователей без интервенции. Усреднение по группе не решает проблему: средний Y₁ в treatment-группе и средний Y₀ в control-группе сравнимы только если группы изначально обменно похожи.

Что делает рандомизация: она не устраняет «параллельные миры», а делает группу A и группу B обменно похожими — в среднем, по всем характеристикам, наблюдаемым и нет. Тогда наблюдаемая разница в Y и есть оценка эффекта. Без рандомизации эта замена не работает: группы A и B изначально разные, и мы измеряем смесь «эффект интервенции + эффект исходных различий».

Квазиэксперименты — набор приёмов, которые восстанавливают обменность через структурные предположения: «при условии X группы сравнимы», «вокруг порога Z распределение случайно», «параллельные тренды до интервенции продолжатся в её отсутствие». Каждый метод — это конкретная замена рандомизации. Метод хорош ровно настолько, насколько выполнено его допущение.

Что нужно для идентификации

  1. Treatment well-defined. Что именно мы считаем интервенцией? Если граница размыта (одни получили полностью, другие частично, третьи через посредников) — эффект «размазан» и неинтерпретируем.
  2. Stable groups. Состав treatment- и control-группы не меняется со временем (или меняется одинаково в обеих). Если treatment-группа теряет участников по причинам, связанным с интервенцией, — оценка эффекта смещена.
  3. No spillover, или явное моделирование spillover. Если интервенция в treatment-группе достигает control — измеряем нечто меньшее, чем настоящий эффект. На платформах это правило нарушается чаще всего.

Ключевые угрозы идентификации

УгрозаСутьПример
ConfoundersТретья переменная влияет и на treatment, и на outcomeСезонный рост заказов на маркетплейсе и рост ассортимента — оба следствия маркетингового пуша, не причина-следствие
Selection biasГруппы treatment и control отбираются по систематически разным критериямВ программу промо-показов записываются продавцы с уже растущим бизнесом — высокая GMV не от программы, а от отбора
SUTVATreatment одного пользователя влияет на outcome другогоТест новой комиссии у группы продавцов меняет цены → ломает выдачу для всей категории
Interference / spilloverЭффект «протекает» из treatment-группы в controlАлгоритм даёт больше показов товарам в тесте → меньше показов конкурентам в той же категории, control просел не сам
AnticipationПоведение меняется до старта интервенции, потому что о ней объявилиМаркетплейс публикует change-log повышения комиссии → продавцы реагируют за неделю до старта

Как угрозы выглядят на платформах

УгрозаДоменКонкретный пример
ConfoundersМаркетплейсУ продавцов с бейджем «Топ» конверсия на 25% выше. Бейдж не делает их лучше — он отмечает уже хороших по рейтингу и опыту
Selection biasФинтех (BNPL)У одобренных клиентов retention 80%. У отказанных нет данных. Заявить «скоринг работает» нельзя — мы не знаем как вели бы себя отказанные, если бы их одобрили
SUTVAМаркетплейсТест комиссии у 10% продавцов меняет их цены. Покупатели в той же категории видят и тестовых, и контрольных — спрос перетекает. Контроль перестаёт быть «как было бы без теста»
InterferenceРекламаИзменение CPM у одного рекламодателя влияет на конкурентов в том же аукционе. Эффект нельзя локализовать на тестовой группе
AnticipationМаркетплейсОбъявили о новой системе ранжирования за 3 недели до старта. Продавцы пересобрали каталоги к запуску — pre-effect мешает оценке post-effect

Как распознать угрозу

ПризнакСкорее всего
Treatment-группа изначально отличается от control по pre-trendSelection bias или confounder
Эффект «появляется» до старта интервенцииAnticipation
Outcome на control-группе тоже растёт (но меньше)Interference / spillover
После интервенции состав групп изменилсяSUTVA или attrition
Treatment коррелирует с третьей переменной (рейтинг, активность, регион)Confounder

Типичные ошибки

  1. Считать «нет рандомизации = нельзя ничего сказать». Можно — но с явными допущениями, и эти допущения нужно проверять.
  2. Путать SUTVA и spillover. SUTVA — общее техническое условие (потенциальные исходы пользователя зависят только от его собственного treatment). Spillover — конкретная форма его поломки (эффект протекает через рынок, аукцион, рекомендации).
  3. Не проверять допущения до treatment. Pre-trend обязателен в DiD, balance — в matching, gap у порога — в RDD. Если не проверяли — оценка не имеет статуса причинной.
  4. Игнорировать anticipation, особенно когда об интервенции объявлено заранее. На платформах change-log публикуется за недели до изменения — это window для подстройки.
  5. Использовать «контрольную группу», которая на самом деле получила частичный эффект через рынок. На двусторонних платформах независимость control-группы — допущение, которое нужно доказывать, а не предполагать.

Выбор метода

УгрозаМетод-кандидат
Confounders, наблюдаемыеMatching, регрессия с контрольными переменными
Confounders, ненаблюдаемыеInstrumental Variables, fixed effects с временной вариацией, DiD при выполнении параллельных трендов
Selection bias по чёткому порогуRegression Discontinuity Design
SUTVA нарушен на двустороннем рынкеSwitchback (кластеризация по времени), geo-experiment (кластеризация по регионам)
Interference в категориях / аукционахCluster-level treatment, geo-experiment
AnticipationEvent study с pre-period, leads-and-lags

Toy example: маркетплейсный бейдж и selection bias

Маркетплейс запускает программу «Топ-продавец»: продавцы, соответствующие критериям (рейтинг ≥ 4.5, ≥ 50 заказов, ответ покупателю в течение часа), получают на карточке визуальный бейдж. Через месяц продакт смотрит на данные и видит:

МетрикаБейдж получилиБейдж не получилиΔ
Конверсия (CR)8.0%6.4%+25%
Средний рейтинг4.74.2+0.5
Доля с >50 заказов64%28%+36 п.п.
Время ответа (медиана, ч)0.53.2−84%

Наивный вывод: бейдж даёт +25% конверсии, нужно расширять программу. Но смотрим на остальные строки таблицы — они объясняют, почему пользователи получили бейдж. Группа «получили» уже до бейджа была другой: выше рейтинг, больше опыта, быстрее ответ. Это и есть критерий выдачи бейджа.

Что мы наблюдаем — смесь двух эффектов:

Δ_наблюдаемая = эффект бейджа + эффект исходных различий

Эффект исходных различий — это и есть selection bias. Чтобы выделить эффект бейджа, нужно сравнивать продавцов, которые отличались только наличием бейджа, при прочих равных. Прямое сравнение «получили / не получили» этого не даёт.

Что делать (в порядке возрастания строгости):

Какой метод выбрать — зависит от того, какие данные есть и какое допущение мы готовы сделать. Это и есть содержание modules 2-6.

Упражнения

Задача 1: selection bias в программе промо-показов

На маркетплейсе запустили программу промо-показов: продавцы могут заплатить за дополнительные показы своих товаров на главной странице. Через месяц продакт говорит: «Продавцы в программе показывают рост GMV на 35% по сравнению с теми, кто не в программе. Программа работает, надо масштабировать.»

Можно ли утверждать, что программа работает? Какая угроза здесь главная? Как её снять?

Решение

Главная угроза — selection bias. В программу записываются продавцы с уже растущим бизнесом и свободным маркетинговым бюджетом. Они бы росли и без неё. Сравнение «программа vs не программа» сравнивает не эффект программы, а тип продавца.

Снять угрозу:

  • DiD до/после: посмотреть на pre-trend GMV у обеих групп. Если до запуска программы они росли одинаково, а разошлись только после — есть основание говорить об эффекте программы.
  • Matching по pre-trend: сравнить с не-участниками, имеющими ту же траекторию роста за предыдущие 3-6 месяцев.

Без одного из этих шагов «+35%» — это статистика, а не причинный вывод.

Задача 2: confounder в BNPL-уведомлениях

BNPL-сервис: клиенты, которые подписались на премиум-уведомления о платежах, имеют просрочку в 2 раза ниже, чем не подписанные. Менеджер хочет внедрить уведомления для всех клиентов и ожидает того же эффекта.

Что не так с этим выводом? Какая угроза работает? Как проверить, есть ли реальный эффект уведомлений?

Решение

Угроза — confounder через тип клиента. Подписка на премиум-уведомления — это сигнал финансовой организованности. Те, кто подписывается, в среднем дисциплинированнее в платежах сами по себе. Уведомления коррелируют с низкой просрочкой не потому что вызывают её, а потому что оба — следствия типа клиента.

Если внедрить уведомления для всех — эффект на «обычных» клиентах будет существенно меньше, чем 2x. Возможно вообще нулевой.

Проверить:

  • Точечный RCT: на небольшой выборке принудительно включить уведомления (без opt-in) и сравнить с контролем.
  • Quasi-experiment: найти событие, после которого подписка стала автоматической (изменение онбординга, дефолт-on), и применить DiD относительно этой даты. Если просрочка упала после события — эффект есть.

Главное — не путать «корреляция между подпиской и просрочкой» с «эффект уведомления на просрочку».

Глубже: потенциальные исходы (Rubin framework)

Для каждого юнита i существуют два потенциальных исхода: Y_i(1) при treatment и Y_i(0) без. Наблюдаем только один. ATE = E[Y(1) − Y(0)]. ATT = E[Y(1) − Y(0) | D=1]. Рандомизация делает {Y(0), Y(1)} ⊥ D. Квазиэксперименты достигают этого условно: ⊥ | X, или ⊥ | Z, или ⊥ в окрестности порога.