Causal Calculus

d-separation: когда граф говорит «независимы»

Парадокс Симпсона, 1973 год. Данные Berkeley показывают: мужчин принимают в университет чаще, чем женщин - 44% против 35%. Феминистские организации требуют расследования. Бикель вскрывает данные по факультетам - и обнаруживает, что в каждом отдельном факультете женщин принимают с той же или лучшей вероятностью. Полная инверсия. Агрегированная статистика - ложь. Дезагрегированная - правда. Что выбрать? d-separation отвечает на этот вопрос одним правилом: посмотреть на граф.

  • **DoWhy и CausalML**: библиотеки Microsoft и Uber реализуют d-separation как обязательный шаг идентификации перед любой оценкой эффекта. Без проверки графа - нет надёжного ответа на вопрос 'что произойдёт если'
  • **A/B-тесты с сегментацией**: post-hoc анализ по сегментам (устройства, регионы, когорты) регулярно создаёт парадокс Симпсона. Платформы Eppo и Statsig используют d-separation для диагностики, какие разбивки безопасны
  • **Berkson-bias в production ML**: модели кредитного скоринга, модерации контента и найма обучаются на отфильтрованных данных (одобренные заявки, прошедшие модерацию посты). Фильтр - коллайдер. Модель наследует систематический bias, незаметный без анализа графа
  • **Causal discovery**: алгоритм PC (Peter-Clark) строит DAG, тестируя d-separation гипотезы через статистические тесты условной независимости. Это основа автоматического построения причинных графов из данных

Предварительные знания

  • DAG: граф как язык причинности

Три структурных мотива: chain, fork, collider

Любой путь в DAG составлен из трёх элементарных структур. Не метафора - буквальный факт: любой путь между двумя узлами можно разбить на подпути, каждый из которых является одним из трёх типов. Структура определяет, блокируется ли информационный поток по этому пути.

СтруктураГрафЧто происходит без условияЧто происходит при условии на Z
Chain (цепь)$X \to Z \to Y$$X$ и $Y$ зависимы: информация течёт через $Z$Путь блокирован: $X \perp Y \mid Z$
Fork (вилка)$X \leftarrow Z \to Y$$X$ и $Y$ зависимы: $Z$ - общая причинаПуть блокирован: $X \perp Y \mid Z$
Collider (коллайдер)$X \to Z \leftarrow Y$$X$ и $Y$ независимы: информация не течётПуть открыт: условие на $Z$ создаёт зависимость

Первые два мотива ведут себя одинаково: кондиционирование блокирует поток. Третий - зеркально наоборот: кондиционирование открывает путь, которого не было. Именно поэтому добавление переменных в регрессию может навредить, а не помочь. DoWhy (Microsoft) проверяет эту структуру автоматически перед каждым шагом идентификации эффекта.

Berkson's paradox: госпитализация как коллайдер

Классический collider bias в медицинских данных

Граф: Болезнь A -> Госпитализация <- Болезнь B Больные в больнице отобраны по коллайдеру (госпитализации). Среди всего населения A и B независимы. Среди госпитализированных: если A не объясняет попадание в больницу, то её объясняет B - возникает отрицательная корреляция. Результат: врачи замечают, что у пациентов с A реже бывает B. Вывод 'A защищает от B' - артефакт отбора. ML-вариант: модель обучается только на одобренных заявках (кредиты, рекомендации, модерация). Коллайдер - статус одобрения. Модель наследует Berkson-bias и хуже работает на всём населении.

**Интуиция коллайдера**: если знать, что $Z$ произошло, и узнать что $X$ не случилось, - вероятность $Y$ повышается. Информация "течёт" в обход через следствие. Это называется explaining away (объяснение через исключение) - и это то, что делает коллайдер опасным при фильтрации данных или добавлении переменных в регрессию.

В графе $\text{Талант} \to \text{Найм} \leftarrow \text{Связи}$ HR анализирует только нанятых сотрудников. Что произойдёт?

Критерий d-separation: алгоритм

d-separation (directional separation) - алгоритм Pearl 1988 года для определения условной независимости прямо по структуре DAG. Без данных. Без вычислений вероятностей. Только граф.

**Определение**: множество узлов $S$ d-separates $X$ от $Y$, если каждый путь между $X$ и $Y$ заблокирован $S$. Путь заблокирован $S$, если: (1) на пути есть chain или fork с серединой $Z \in S$, **или** (2) на пути есть collider $Z \notin S$ и ни один потомок $Z$ не принадлежит $S$.

Правило коллайдера часто удивляет: **потомок** коллайдера тоже открывает путь. Если в регрессию добавлен прокси-показатель для коллайдера (например, диагноз вместо самого факта госпитализации) - bias всё равно появляется. CausalML (Uber) и DoWhy (Microsoft) реализуют проверку d-separation как обязательный шаг перед backdoor adjustment.

Если $X$ и $Y$ d-separated данным $S$ - они условно независимы: $X \perp\!\!\!\perp Y \mid S$. Это называется Global Markov Property. Обратно (Faithfulness Assumption): если в данных есть условная независимость, то в истинном DAG должна быть d-separation. На этом допущении строятся все алгоритмы causal discovery - PC, FCI, GES.

**Faithfulness может нарушаться**: если параметрические значения точно компенсируют структурные пути (probability-1 совпадение), то d-connection не даёт зависимости в данных. На практике это редкость, но в синтетических данных встречается. PC-алгоритм может ошибочно ориентировать рёбра в таких вырожденных случаях.

В DAG $A \to B \leftarrow C$, $B \to D$. Является ли $A$ d-separated от $C$ при условии на $D$?

M-bias и парадокс Симпсона через d-separation

**Парадокс Симпсона**: лечение ухудшает исходы в общей популяции, но улучшает в каждой подгруппе по полу. Или наоборот. Это не статистический курьёз - это систематическая проблема, убивающая клинические исследования и A/B-тесты. d-separation объясняет его в одно правило.

Парадокс Симпсона: Berkeley admissions 1973

Реальный кейс: дискриминация или статистический артефакт?

Данные приёма в Berkeley 1973: Общий приём: мужчины 44%, женщины 35% - выглядит как дискриминация По факультетам: Факультет A: мужчины 62%, женщины 82% Факультет B: мужчины 63%, женщины 68% Факультет C: мужчины 37%, женщины 34% Факультет D: мужчины 33%, женщины 35% ... В каждом факультете женщины принимались с примерно одинаковой или лучшей вероятностью. DAG: Пол -> Выбор факультета -> Приём Пол -> Приём (прямой эффект?) Проблема: факультет - медиатор (chain). Контроль на медиатор блокирует путь Пол -> Факультет -> Приём. Результат без контроля: общий bias из-за того, что женщины подавали на конкурентные факультеты. d-separation решение: не контролировать на медиатор при оценке общего эффекта (total effect = прямой + через медиатор).

**M-bias** - структура, где добавление «разумного» контрольного регрессора создаёт bias вместо того, чтобы его устранить. Название из формы графа: $U_1 \to X$, $U_1 \to B \leftarrow U_2$, $U_2 \to Y$. Если $B$ добавить в модель (выглядит как «полезный контроль»), открывается путь через скрытые конфаундеры $U_1$ и $U_2$.

**Главный вывод**: d-separation говорит, какие переменные безопасно включать в модель. Переменная выглядит «разумным контролем» - ещё не значит, что её включение уменьшит bias. Если эта переменная - коллайдер или потомок коллайдера - включение создаёт ложные зависимости. DoWhy автоматически проверяет это через refutation tests.

Чем больше переменных включено в регрессию, тем лучше контролируется confounding

Включение коллайдеров и их потомков создаёт confounding вместо того, чтобы его устранить

d-separation показывает: каждый узел графа имеет роль - медиатор, конфаундер или коллайдер. Включать нужно только те, что блокируют backdoor-пути (конфаундеры), и никогда - коллайдеры и медиаторы при оценке total effect. Эвристика «больше контролей = лучше» противоречит структуре графа.

Исследователь изучает эффект физической активности (X) на здоровье (Y). В регрессию добавлен ИМТ (B), который зависит как от активности, так и от питания (U, неизмеренное), которое также влияет на здоровье. Что произойдёт?

Ключевые идеи

  • **Три мотива**: chain ($X \to Z \to Y$) и fork ($X \leftarrow Z \to Y$) блокируются при условии на $Z$; collider ($X \to Z \leftarrow Y$) открывается - зеркально противоположное поведение
  • **Критерий d-separation**: путь заблокирован $S$, если (1) chain/fork с серединой в $S$, или (2) collider с серединой вне $S$ и без потомков в $S$. Если все пути заблокированы - $X \perp\!\!\!\perp Y \mid S$
  • **Парадокс Симпсона = нарушение структуры**: агрегат и разбивка дают разные ответы, когда разбивочная переменная - медиатор или конфаундер. d-separation показывает почему
  • **M-bias**: добавление выглядящего полезным контроля создаёт bias, если этот контроль - коллайдер. Эвристика 'больше переменных' опасна без анализа графа
  • **PC-алгоритм**: causal discovery строится на тестировании d-separation гипотез - этот алгоритм восстанавливает скелет DAG из данных
  • **Faithfulness**: данные отражают d-separation только при допущении, что вероятностные независимости не совпадают случайно. Нарушение возможно, но редко в реальных данных

Куда дальше

d-separation - это диагностический инструмент. Следующий шаг - использовать его для принятия решений об оценке эффектов.

  • Backdoor criterion — Какие переменные контролировать для корректной оценки causal effect - прямое следствие d-separation
  • Frontdoor criterion — Оценка через медиатор когда прямой backdoor adjustment невозможен
  • do-оператор — Формализация интервенции: d-separation говорит о наблюдениях, do - об активных вмешательствах
  • Causal discovery — PC-алгоритм строит DAG через автоматические тесты d-separation гипотез

Вопросы для размышления

  • Какие «контрольные переменные» в текущих моделях могут оказаться коллайдерами? Есть ли DAG, по которому можно это проверить?
  • В каких отчётах команды агрегированная статистика и разбивка по сегментам могут давать противоположные выводы - и какой структуре DAG это соответствует?
  • Если данные для обучения модели собирались с фильтрацией (модерация, одобрение, порог качества) - какой узел в DAG этот фильтр представляет и почему это опасно?

Связанные уроки

  • cc-01-dags — DAG - язык, d-separation - грамматика
  • cc-03-backdoor — Backdoor criterion строится поверх d-separation
  • cc-05-do-operator — do-оператор формализует разрезание путей
  • prob-03-conditional — Условная независимость - математическая база
  • stat-20-causal — Causal inference применяет d-separation к реальным данным
  • cc-11-causal-discovery — PC-алгоритм ищет граф через тесты d-separation
  • stat-01-sampling
d-separation: когда граф говорит «независимы»

0

1

Войти