Causal Calculus
Backdoor criterion: как заблокировать ловушку
2020 год. Наблюдательные данные из нескольких стран: пациенты на ибупрофене умирают реже от COVID. Заголовки в СМИ: «ибупрофен лечит COVID». Через несколько месяцев анализ с контролем на тяжесть болезни показал: никакого эффекта. Тяжёлых пациентов сразу переводили на более серьёзные препараты - они и умирали чаще. Тяжесть болезни влияла и на выбор ибупрофена, и на исход. Это был backdoor-путь. Backdoor criterion - алгоритм, который находит такие ловушки прямо по стрелкам DAG, без единого числа.
- **Debiasing в ML**: алгоритмы, обученные на наблюдательных данных, учатся по spurious correlations (backdoor-пути). DoWhy и CausalML реализуют backdoor adjustment как шаг pre-processing перед обучением - чтобы модель учила причинный эффект, а не конфаундеры
- **A/B-тесты**: рандомизация - это физическое уничтожение всех backdoor-путей. Backdoor criterion объясняет, почему рандомизация работает: монетка разрывает связь X <- confounder, делая backdoor-пути неактивными
- **Fairness audits в ML**: Microsoft Research применяет backdoor criterion для выявления protected attribute bias. Если защищённый атрибут (пол, раса) находится на backdoor-пути, контроль на него - не цензура, а математическая необходимость для честной оценки
- **Эпидемиология**: G-computation (Robins, 1986) - это backdoor adjustment formula под другим названием. Все современные оценки ATE (average treatment effect) в клинических исследованиях строятся на ней
Предварительные знания
Backdoor-путь: откуда берётся confounding
2020 год. Несколько наблюдательных исследований показали: пациенты, принимавшие ибупрофен, умирали реже. Редакции написали: ибупрофен лечит COVID. Механизм, о котором умолчали: тяжёлые пациенты реже принимали ибупрофен - им сразу давали что-то серьёзнее. Тяжесть болезни влияла и на выбор лекарства, и на смерть. Это форк - классический backdoor-путь.
Backdoor-путь (от X к Y) - любой путь, который начинается стрелкой, входящей в X. То есть путь вида X <- ... -> Y через общий предок. Такой путь передаёт корреляцию между X и Y, не являясь причинным. Это не шум и не ошибка измерения - это структурная особенность DAG, которую видно без единого числа.
**Определение backdoor-пути**: путь $\pi$ между $X$ и $Y$ является backdoor-путём, если первое ребро на пути направлено в $X$ (то есть $\pi$ начинается с $\cdot \to X$). Наблюдаемая корреляция $P(Y \mid X)$ смешивает причинный эффект и информацию, текущую по backdoor-путям.
DoWhy (Microsoft) - библиотека causal inference в Python - автоматически перечисляет все backdoor-пути при вызове `model.identify_effect()`. Перед тем как выдать оценку эффекта, она строит список активных backdoor-путей и проверяет, блокирует ли предложенный adjustment set все из них. Если нет - предупреждает об unidentified effect.
В DAG: $\text{Образование} \leftarrow \text{IQ} \to \text{Зарплата}$, $\text{Образование} \to \text{Зарплата}$. Является ли путь Education - IQ - Salary backdoor-путём при оценке эффекта Education -> Salary?
Backdoor criterion: что достаточно контролировать
Pearl, 1993. Книга «Causality», приложение к главе 3. Одна теорема - и задача выбора контрольных переменных стала алгоритмической, а не интуитивной. До этого эконометристы спорили годами, что включать в регрессию. После - проверяется за минуты.
**Backdoor criterion (Перл, 1993)**: множество $Z$ удовлетворяет backdoor criterion относительно $(X, Y)$ в DAG $G$, если: 1. ни один узел из $Z$ не является потомком $X$ 2. $Z$ блокирует все backdoor-пути между $X$ и $Y$ (то есть d-separates $X$ от $Y$ в подграфе $G_{\underline{X}}$, где удалены исходящие из $X$ рёбра).
Условие (1) - не потомок X - критически важно. Если включить в Z переменную, на которую X влияет, возникает коллайдер или частичная блокировка медиатора. Это открывает новые пути вместо того, чтобы закрыть старые. Именно здесь ломается наивная эвристика «контролируй всё, что коррелирует с X и Y».
| Граф | Backdoor-путь | Валидный adjustment set Z | Нельзя включать в Z |
|---|---|---|---|
| $X \leftarrow C \to Y$ | $X \leftarrow C \to Y$ | $\{C\}$ | потомки $X$ или $Y$ |
| $X \leftarrow C \to M \to Y$ | $X \leftarrow C \to M \to Y$ | $\{C\}$ или $\{C, M\}$ | $M$ если цель - total effect |
| $X \leftarrow U_1 \to B \leftarrow U_2 \to Y$ | через $U_1, U_2$ (скрытые) | невозможен прямой backdoor adj. | B - коллайдер, нельзя |
Causal ML (Uber) и DoWhy (Microsoft) реализуют поиск минимального adjustment set через алгоритм O'Shaughnessy (2020): находит наименьшее Z, которое блокирует все backdoor-пути. Меньший set - меньше переменных для измерения в RCT, меньше вариативность оценки в наблюдательных данных.
DAG: $X \leftarrow C \to Y$, $X \to M \to Y$, $X \to Y$. Задача - оценить **total effect** $X$ на $Y$. Какой adjustment set валиден?
Adjustment formula: P(Y|do(X)) через наблюдения
Если Z удовлетворяет backdoor criterion - задача решена. do-вероятность выражается через наблюдаемое распределение. Никакого эксперимента не нужно - только правильный набор измеренных переменных и формула.
**Backdoor adjustment formula**: если $Z$ удовлетворяет backdoor criterion для $(X, Y)$, то: $$P(Y = y \mid \mathrm{do}(X = x)) = \sum_{z} P(Y = y \mid X = x, Z = z) \cdot P(Z = z)$$ Для непрерывного $Z$: интеграл по $z$ вместо суммы. Это взвешенное по популяции условное среднее.
Это и есть то, что делает regression adjustment: оценить $E[Y \mid X=x, Z=z]$ по данным, затем усреднить по маргинальному $P(Z)$. Метод называется G-computation в эпидемиологии и average treatment effect (ATE) estimation в econometrics. Один и тот же результат - разные названия в разных сообществах.
Почему рандомизация работает: backdoor через do-оператор
RCT (randomized controlled trial) - это физическая реализация do-оператора
Наблюдательное исследование ибупрофена: P(смерть=1 | ибупрофен=1) != P(смерть=1 | do(ибупрофен=1)) Потому что P(ибупрофен=1) зависит от тяжести болезни. RCT: монетка решает, кто получает ибупрофен. Теперь: P(ибупрофен=1 | тяжесть) = 0.5 для любой тяжести. Ребро тяжесть -> ибупрофен исчезло из графа. Backdoor-путь X <- тяжесть -> смерть заблокирован структурно. Backdoor adjustment formula делает то же самое статистически: Считает эффект отдельно для каждого уровня тяжести, затем взвешивает по реальному распределению тяжести в популяции. ATE = sum_z P(смерть | ибупрофен=1, тяжесть=z) * P(тяжесть=z) - sum_z P(смерть | ибупрофен=0, тяжесть=z) * P(тяжесть=z) Это объясняет, почему рандомизация - золотой стандарт: она автоматически блокирует все backdoor-пути, включая те, что неизвестны исследователю.
Backdoor criterion говорит: контролируй всё, что влияет на X или Y
Контролируй только то, что блокирует backdoor-пути и не является потомком X
Потомки X - медиаторы или коллайдеры. Включение медиатора блокирует часть причинного эффекта, занижая total effect. Включение коллайдера открывает новые нежелательные пути. Backdoor criterion - это не «добавляй переменные», а «выбирай правильные переменные по структуре графа».
Исследователь хочет оценить эффект нового препарата (X) на выживаемость (Y). Известно, что возраст (A) влияет и на назначение препарата, и на выживаемость. Как правильно применить backdoor adjustment?
Ключевые идеи
- **Backdoor-путь** - путь от X к Y, начинающийся входящей в X стрелкой. Это и есть confounding: корреляция без причинности, которую наивное наблюдение принимает за эффект
- **Backdoor criterion**: множество Z валидно, если (1) не содержит потомков X и (2) d-separates X от Y в графе с удалёнными исходящими рёбрами X. Проверяется по структуре DAG, не по данным
- **Adjustment formula**: $P(Y \mid \mathrm{do}(X)) = \sum_z P(Y \mid X, Z=z) \cdot P(Z=z)$ - взвешенное условное среднее. Это G-computation, regression adjustment и IPW в разных обличиях
- **RCT как do-оператор**: рандомизация физически удаляет backdoor-пути. Backdoor criterion объясняет почему - и показывает, что наблюдательный анализ с правильным Z математически эквивалентен RCT
- **Потомки X под запретом**: медиаторы занижают total effect, коллайдеры открывают новые пути. Backdoor criterion защищает от обеих ошибок
Куда дальше
Backdoor criterion работает, когда все конфаундеры измеримы. Дальше - методы для ситуаций, где это не так.
- Frontdoor criterion — Оценка эффекта через медиатор, когда backdoor-конфаундеры скрытые
- do-оператор — Формализация интервенции - что именно считает adjustment formula
- Идентифицируемость — Когда do-вероятность вообще выражается через наблюдения - общая теория
- Mediation analysis — Прямой и косвенный эффект - расширение backdoor на медиаторы
Вопросы для размышления
- Ибупрофен и COVID: после контроля на тяжесть болезни эффект исчез. Backdoor criterion не запрещает наблюдение - он показывает, что именно контролировать. Какие переменные в текущем проекте могут быть такими скрытыми конфаундерами?
- Если команда проводит A/B-тест, но пользователи сами выбирают вариант (self-selection bias) - какой backdoor-путь это создаёт и какой adjustment set нужен?
- Backdoor criterion требует измеримого Z. Когда конфаундер неизмерим (например, «мотивация» или «качество менеджмента») - что остаётся? Инструментальные переменные, frontdoor, difference-in-differences - все они решают именно эту проблему.
Связанные уроки
- cc-02-d-separation — d-separation - фундамент: backdoor criterion его прямое следствие
- cc-04-frontdoor — Frontdoor - когда backdoor adjustment невозможен
- cc-05-do-operator — do-оператор формализует интервенцию после идентификации
- prob-03-conditional — Условная вероятность - математическая база adjustment formula
- stat-09-regression — Regression adjustment реализует формулу backdoor на практике
- cc-11-causal-discovery — PC-алгоритм находит граф, по которому ищут backdoor adjustment sets
- stat-01-sampling