Causal inference: как отличить корреляцию от причинности
Что такое causal inference
Causal inference (причинно-следственный вывод) — набор методов, которые позволяют оценить ВЛИЯНИЕ одной переменной на другую, а не просто корреляцию.
Корреляция говорит: «A и B связаны». Causal inference отвечает: «изменение A вызывает изменение B, и вот на сколько».
Это принципиально разные вопросы. Классический пример: мороженое и утопления коррелируют. Но первое не вызывает второе — оба растут летом. Causal inference помогает отделить реальное влияние от confounders.
Зачем это аналитику
Бизнес-решения требуют causal знания. «Если мы увеличим X — что произойдёт с Y?» Это всегда causal вопрос.
Примеры:
- Повысим ли retention, если добавим новую фичу?
- На сколько вырастут продажи от скидки 10%?
- Сократит ли churn персонализация email?
- Увеличит ли onboarding retention новых пользователей?
Без causal inference отвечаете вслепую или на основе корреляций, которые часто обманчивы.
Фундаментальная проблема
Невозможно наблюдать контрафактуальный исход (counterfactual). Клиенту показали рекламу, он купил. Что бы случилось, если бы не показали? Не знаем.
Причина, по которой causal inference сложен: нужно оценить, что БЫ произошло, в альтернативной реальности.
Решение — эмулировать counterfactual через:
- Рандомизация. AB-тест — gold standard.
- Quasi-experimental methods. Когда AB нельзя.
- Observational studies. С осторожностью.
Randomized Controlled Trial (AB-тест)
Случайное распределение на treatment и control. Так как назначение случайно, группы в среднем одинаковы. Разница в outcome — чистый causal effect.
Плюсы: no bias. Простой вывод.
Минусы:
- Не всегда возможно (этика, цена, время).
- Не подходит для strategic decisions (нельзя AB-тестить «нанять CEO»).
- Power problems — малый lift трудно detect.
Для продукта AB-тест — основной инструмент causal inference.
Observational data challenges
Если есть только наблюдательные данные (не эксперимент), возникают проблемы:
Confounders. Переменные, которые влияют и на treatment, и на outcome. Игнорирование искажает оценку.
Selection bias. Treatment не случаен — люди сами выбирают. Обычно те, кто «treated» отличаются от не-treated.
Reverse causality. Не ясно, что причина, что следствие. Богатые люди покупают книги или читающие богатеют?
Mediators. Переменная на пути от treatment к outcome. Контроль за ней искажает estimate.
Difference-in-Differences (DiD)
Метод для situations, где есть natural experiment. Сравниваете изменение outcome в treated group vs control group до и после treatment.
Предположение: без treatment обе группы менялись бы параллельно (parallel trends assumption).
DiD = (Y_after_treated - Y_before_treated) - (Y_after_control - Y_before_control)Пример: в одном городе повысили минимальную зарплату, в соседнем — нет. Сравнение изменения занятости в обоих — DiD оценка effect минималки.
Propensity Score Matching (PSM)
Мэтчим treated и control единицы по их «склонности» (probability) получить treatment, учитывая observed features.
Процесс:
- Строим модель
P(treatment | features)— propensity score. - Для каждого treated юзера находим control с близким score.
- Сравниваем outcomes.
Идея: если у двух юзеров одинаковая propensity, но один treated, другой нет — разница outcomes приближает causal effect.
Ограничение: только observed confounders. Unobserved — всё ещё проблема.
Instrumental Variables (IV)
Инструмент — переменная, которая:
- Влияет на treatment.
- Не влияет на outcome напрямую (только через treatment).
- Не связана с unobserved confounders.
Classic example: randomized lottery для военного призыва как IV для effect службы на доходы.
Используются для:
- Estimation когда treatment endogenous.
- Causal inference без рандомизации.
В product analytics IV редко доступны — трудно найти хорошие инструменты.
Regression Discontinuity (RDD)
Когда treatment определяется threshold переменной, сравниваем субъектов чуть выше и чуть ниже границы.
Пример: студенты с scores 70 получают scholarship, 69 — нет. Предполагается, что 69 и 70 одинаковы «в среднем». Разница в future earnings — causal effect scholarship.
В продуктах: «бесплатная подписка для первых 1000 юзеров». Пользователь 1000 vs 1001 — хороший natural experiment.
Synthetic Control
Для case studies с одним treated unit. Создаём «синтетический контроль» как weighted combination невоздействованных юзеров, такой что pre-treatment outcomes максимально совпадают.
Типичное применение: оценка effect policy change в одной стране/регионе. Используют weighted combination других стран как counterfactual.
В бизнесе: запустили feature в одной стране. Синтетический control из комбинации других стран показывает, что было бы без запуска.
Advanced statistical methods и causal inference — мощный skill для senior аналитиков. В тренажёре Карьерник есть задачи по AB-тестам, статистике и экспериментам.
Directed Acyclic Graphs (DAG)
Графическая модель causal assumptions. Узлы — переменные, стрелки — causal connections.
Помогает понять:
- Какие переменные включить как controls.
- Какие НЕ включать (mediators, colliders).
- Identification strategy.
Классическая ошибка — контролировать collider. Это создаёт spurious correlation между его родителями.
Judea Pearl — главный популяризатор DAG в causal inference. Его книга «The Book of Why» — вводная.
Average Treatment Effect (ATE) vs ATT vs LATE
Разные quantities:
ATE (Average Treatment Effect). Средний effect treatment на всю population.
ATT (Average Treatment Effect on Treated). Только на тех, кто получил treatment.
LATE (Local Average Treatment Effect). На «compliers» — тех, кто меняет поведение на основе инструмента.
В рандомизированных экспериментах все эти величины обычно равны. В observational studies — отличаются.
Для бизнеса обычно важен ATE (если будете давать treatment всем) или ATT (если смотрите past actions).
Python libraries
Инструменты для causal inference:
- DoWhy (Microsoft) — unified framework для causal inference.
- EconML — ML-based causal inference.
- CausalML (Uber) — uplift modeling.
- statsmodels — классические методы (IV, RDD).
- CausalPy — bayesian causal inference.
Пример DoWhy:
from dowhy import CausalModel
model = CausalModel(
data=df,
treatment='treatment',
outcome='outcome',
common_causes=['age', 'income', 'tenure']
)
estimand = model.identify_effect()
estimate = model.estimate_effect(
estimand,
method_name="backdoor.propensity_score_matching"
)Uplift modeling
Специальный случай causal ML — предсказание INDIVIDUAL causal effect.
Вместо «в среднем treatment работает» отвечает «на этом пользователе treatment даст +X».
Позволяет персонализировать interventions:
- Retention emails — только тем, кому это поможет.
- Discounts — только тем, кто без них не купит.
- Feature rollouts — только тем, кому нужно.
Методы: T-Learner, S-Learner, X-Learner, Causal Forests.
Валидация causal estimates
Три основных теста:
Refutation tests. Меняем данные (добавляем random confounder, заменяем treatment на placebo). Если estimate значительно меняется — метод нестабилен.
Sensitivity analysis. Насколько оценка робастна к unobserved confounders? Rosenbaum bounds метод.
Out-of-sample validation. Если есть «true» causal знание (например, из AB-теста в другой области), проверяем, совпадает ли observational estimate с experimental.
Типичные ошибки
Pretend correlation is causation. «Пользователи, которые используют feature X, имеют retention 80%» — не значит, что X вызывает retention. Может быть reverse (retained users feature X).
Controlling colliders. Добавляете переменную, которая зависит и от X, и от Y. Создаёт spurious correlation.
Ignoring selection bias. Сравнение «signed up for Pro» vs «free users» без учёта self-selection.
P-hacking causal claims. Много методов → выбираете тот, который даёт «красивый» результат. Pre-register methods.
Over-confidence в DAG. DAG отражает assumptions. Если assumptions неверны, ответ неверен.
Читайте также
FAQ
Можно ли делать causal inference без эксперимента?
Да, с сильными assumptions. Но выводы менее надёжны, чем в randomized trials. Всегда предпочтительно A/B если возможно.
Что читать для начала?
"The Book of Why" (Judea Pearl) — популярное введение. "Causal Inference: The Mixtape" (Scott Cunningham) — учебник с примерами.
Нужен ли machine learning для causal inference?
Не обязательно. Классические методы (regression, DiD) работают. ML полезен для heterogeneous effects (uplift) и complex data.
Causal ML и обычное ML — разница?
Обычное ML оптимизирует predictive accuracy. Causal ML оптимизирует accurate estimation of causal effect — другая задача.