Статистика

Propensity Score: matching и IPTW

Цели урока

  • Записывать propensity score e(X) = P(T=1|X) и balancing property
  • Применять matching по propensity score (1:1, caliper, k-NN)
  • Считать ATE через IPTW и распознавать positivity violation
  • Понимать структуру doubly robust estimator и DML framework
  • Связывать propensity score с unbiased offline evaluation в ML

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

  • Модель потенциальных исходов Y(1), Y(0)
  • Ignorability и overlap
  • Logistic regression и gradient boosting
  • Потенциальные исходы
  • Logistic regression
  • Причинность и confounding

Фармкомпания сравнивает два препарата от холестерина, но RCT не проводилось. Препарат A назначали молодым здоровым, B - пожилым тяжёлым. Прямое сравнение даёт бред. В 1983 году Розенбаум и Рубин опубликовали теорему: всё confounding контролируется кондиционированием на ОДНОМ числе - вероятности получить лечение. Это число - propensity score. Сотни наблюдательных исследований FDA, тысячи маркетинг-кампаний техкомпаний, бесчисленные uplift-модели - всё опирается на propensity score, изобретённый в одной статье 1983 года.

  • **Фарма и эпидемиология**: основа observational drug evaluation, тысячи статей в JAMA и NEJM
  • **Tech**: Uber, Meta, Airbnb используют propensity score для оценки эффектов фич без A/B
  • **Маркетинг и uplift modeling**: матчинг и weighting лежат в основе персонализированных промо
  • **Recommender systems**: unbiased offline evaluation (Schnabel 2016) применяет IPS
  • **Policy evaluation**: оценка эффектов госпрограмм на CPS, ACS, других регистрах

Теорема, которая всё изменила

В 1983 году Пол Розенбаум и Дональд Рубин опубликовали статью 'The Central Role of the Propensity Score in Observational Studies for Causal Effects' в Biometrika. До них матчинг приходилось делать одновременно по десяткам ковариат - вычислительно невозможно и статистически шумно (curse of dimensionality). Их теорема сжала всё в один скаляр. Несколько десятилетий propensity score оценивался logistic regression. В 2010-х McCaffrey, Lee и другие показали преимущества gradient boosting'а для оценки e(X) в high-dimensional X. В 2018 году Chernozhukov с соавторами в статье 'Double/Debiased Machine Learning' дали теоретическую базу использования произвольных ML-моделей через cross-fitting и orthogonal moments - это объединило propensity score с современным ML.

e(X) = P(T=1|X): одно число, балансирующее всё

Фармкомпания хочет сравнить два препарата от холестерина - но RCT не проводилось. Препарат A назначали молодым и здоровым, препарат B - пожилым и тяжёлым. Прямое сравнение исходов даст бред: B 'хуже' просто потому, что назначался хуже-стартующим пациентам. В 1983 году Пол Розенбаум и Дональд Рубин опубликовали одну теорему: весь конфаундинг можно контролировать кондиционированием на одном числе - вероятности получить лечение при данных pre-treatment характеристиках. Этот скаляр и называется propensity score. Теорема трансформировала observational research.

Главное свойство propensity score - balancing property: внутри страт с одинаковым e(X) ковариаты X статистически независимы от воздействия T. То есть, два пациента с одинаковым e(X) могут иметь разные возраст и анамнез, но в среднем эти признаки сбалансированы между лечеными и контролем. Кондиционирование на скаляре e(X) эквивалентно кондиционированию на векторе X.

На практике e(X) сам не известен и оценивается из данных. Классический выбор - logistic regression. В современной практике - gradient boosting или random forests, которые лучше захватывают нелинейности и взаимодействия в высокоразмерных X.

В медицинских регистрах X может содержать сотни признаков: лабораторные показатели, диагнозы по ICD-10, лекарственные взаимодействия. Logistic regression предполагает линейность в log-odds, что почти никогда не верно. XGBoost и LightGBM автоматически захватывают взаимодействия и нелинейности, давая более точную оценку e(X). Lee, Lessler, Stuart (2010) эмпирически показали: GBM-based propensity score даёт меньший bias и лучший balance в реальных наблюдательных данных.

Цель оценки e(X) - balancing, а не предсказание T. Модель с AUC = 0.99 на самом деле плоха: она различает группы слишком хорошо, и overlap нарушен. Хороший propensity score даёт средний AUC (0.6-0.85) и обеспечивает baance ковариат после взвешивания. Diagnostics: после взвешивания/matching проверять standardized mean differences (SMD) - они должны быть < 0.1.

Цифры из реальной клиники

Балансировка ковариат через propensity score

Регистр 10 000 пациентов. До коррекции: средний возраст в группе препарата A = 52 года, в группе B = 68 лет (SMD = 0.85, дисбаланс огромен). Оценили e(X) через XGBoost по 47 ковариатам. После matching по e(X): средний возраст A = 60, B = 61 (SMD = 0.03). Так же выровнялись пол, anamnesis, лабораторные показатели. Теперь сравнение исходов причинно интерпретируемо.

Что утверждает balancing property propensity score?

Теорема Розенбаума-Рубина: кондиционирование на скаляре e(X) эквивалентно по балансировке кондиционированию на полном векторе X. Это и есть фундамент применения propensity score - сократить размерность с десятков ковариат до одной без потери идентификации.

Matching: подбор близкого контроля для каждого лечённого

Идея matching проста: для каждого лечённого пациента найти контроль с близким значением propensity score. Если e(X_i) у лечённого = 0.72 и у некого контроля тоже 0.72, то по balancing property их ковариаты в среднем одинаковы - и сравнение их исходов даёт несмещённую оценку индивидуального эффекта. Усреднение по всем матчам даёт ATT. Это причинный аналог k-NN в propensity space.

Метод matchingОписаниеКогда применять
1:1 nearest neighborКаждому treated - один ближайший controlМалые выборки, простота интерпретации
Caliper matchingТолько пары с |e_i - e_j| < caliperКогда overlap частичный, избегаем плохих матчей
1:k matchingКаждому treated - k ближайших controlsБольше точность, меньше дисперсия
Full matchingГруппы переменного размера, оптимальноЛучший balance, сложнее интерпретация

Caliper обычно ставится в 0.2 * SD(logit(e(X))). Если ближайший control дальше caliper - treated юнит выкидывается из анализа. Это сужает выборку, но защищает от плохих матчей в зонах слабого overlap.

Workflow матчинга на cholesterol-данных

Пошагово: от X к ATT

Шаг 1: оценили e(X) через XGBoost, получили вектор propensities. Шаг 2: для каждого treated юнита (препарат A, n=3000) ищем ближайшего control (препарат B, n=7000) по логиту e(X). Шаг 3: применяем caliper = 0.2 * SD: ~5% treated юнитов теряются. Шаг 4: на матчированной выборке считаем средние SMD - все < 0.1. Шаг 5: ATT = среднее (Y_treated - Y_control) по парам = -22 mg/dL снижения LDL. Доверительный интервал через bootstrap.

Если в X отсутствует важный confounder (например, мотивация пациента или физическая активность не залогированы), то и e(X) оценена неправильно, и matching не исправит bias. Propensity score - это компрессия наблюдаемых X, не магия. Sensitivity analysis оценивает, насколько сильным должен быть неучтённый confounder, чтобы убить эффект.

Airbnb сравнивает стратегии хостов (например, instant booking vs request-based) на наблюдательных данных. Тысячи листингов, десятки ковариат - локация, цена, фото, отзывы. Propensity score через GBM, matching через kd-tree или faiss для скорости. Аналогичные техники применяет Yelp для сравнения effects of premium listings, и Uber - для оценки эффектов промокодов. Matching в propensity space - это k-NN с заранее обученным embedding.

Здесь m(i) - индекс контроля, матчированного к i-му treated юниту. Формула - просто среднее разностей внутри пар. Доверительный интервал не считается стандартной OLS-формулой: пары не независимы (один control может быть использован несколько раз), используется bootstrap или специальные robust SE для matched data (Abadie, Imbens 2006).

IPTW: переваживание вместо матчинга

Альтернатива matching - inverse probability of treatment weighting (IPTW). Идея: переважить наблюдения так, чтобы получилась 'псевдо-популяция', в которой воздействие распределено как в RCT - независимо от X. Treated юниты с малым e(X) (редко получают лечение, но получили) - переоцениваются с большим весом. Controls с большим e(X) - тоже с большим весом. Формула ATE через IPTW элементарна, и в отличие от matching не требует подбора пар.

Интуиция: первый член восстанавливает E[Y(1)] - средний потенциальный исход при лечении - через переваживание лечёных. Второй член восстанавливает E[Y(0)]. Каждый treated юнит 'представляет' всех похожих на него юнитов в популяции, и вес 1/e(X_i) учитывает, скольких он 'представляет'.

Если e(X) близко к 0 или 1, веса взрываются и оценка ATE становится крайне неустойчивой. Это нарушение positivity (overlap). Симптомы: единичные observations имеют веса в десятки раз больше остальных, ATE сильно меняется при добавлении одного наблюдения. Решения: trimming (выкинуть юниты с e(X) вне [0.05, 0.95]), stabilized weights, или другие методы (DR, см. следующий концепт).

Стабилизированные веса (stabilized weights) Robins, Hernan, Brumback (2000): w_i = T_i * P(T=1) / e(X_i) + (1-T_i) * P(T=0) / (1-e(X_i)). Числитель P(T=1) или P(T=0) - маргинальная вероятность - стабилизирует дисперсию, не меняя точечную оценку. Стандарт в эпидемиологии.

ML-связь: unbiased offline evaluation в рекомендательных

Schnabel et al. 2016: IPTW против missing-not-at-random

Netflix хочет оценить новую рекомендательную модель, но логи смещены: пользователь видит и оценивает только товары, выбранные старым алгоритмом. Это missing-not-at-random. Schnabel et al. предложили: для каждого взаимодействия (user, item) оценить propensity (вероятность показа item этому user) через GBM. Веса 1/propensity дают unbiased estimate новой модели даже на смещённых логах. Аналогично - IPS-based bandit feedback debiasing у Joachims и Swaminathan.

Любая production-система создаёт смещённые логи: показывает то, что считает релевантным, и собирает данные только о показанном. Это та же структура selection on observables. IPTW с propensity = вероятность показа item даёт unbiased оценку метрик новой модели. YouTube, Spotify, Amazon применяют эти техники для debiasing offline evaluation - чтобы не запускать каждую идею в продакшн только ради оценки.

Что происходит с IPTW-оценкой, когда e(X) близко к 0 для некоторых юнитов?

При e(X) близком к 0 один редкий treated юнит получает огромный вес и доминирует в оценке. Это симптом нарушения positivity (overlap). Решения: trimming, stabilized weights, doubly robust estimation.

Doubly robust и Double ML: страховка от ошибок модели

Matching и IPTW требуют корректной модели propensity score. Outcome regression (оценка E[Y|T, X]) требует корректной модели исхода. Каждая из этих моделей может ошибаться. Doubly robust (DR) estimator комбинирует обе: он consistent, если хотя бы ОДНА из моделей корректна. Это драматическое свойство - двойная страховка от misspecification - сделало DR стандартом в современном causal ML.

Структура AIPTW (Augmented IPTW) или AIPWE прозрачна: первая часть - outcome regression estimate (mu_1 - mu_0). Вторая часть - IPW-коррекция остатков. Если outcome model верна, остатки в среднем нулевые, и оценка сводится к outcome regression. Если propensity model верна, IPW-часть выполняет основную работу. Если обе верны - оценка эффективна (достигает нижней границы Крамера-Рао).

Double Machine Learning (DML), Chernozhukov et al. (2018): теоретический фундамент использования произвольных ML-моделей для оценки nuisance functions (mu и e) в causal inference. Ключевые ингредиенты: (1) orthogonal moment condition; (2) cross-fitting. Под этими условиями ATE-оценка sqrt(N)-consistent и асимптотически нормальная, даже когда mu и e оцениваются медленнее N^{-1/2}.

Uber открыто описал свою causal-платформу (CausalML library): DML, X-learner, R-learner для оценки uplift при промо-кодах, ценообразовании, продуктовых фичах. Nuisance functions оцениваются gradient boosting'ом. Cross-fitting позволяет использовать LightGBM с тысячами признаков без смещения. Аналогично - EconML от Microsoft и DoubleML в R/Python.

Double robustness - это страховка от неправильной функциональной формы моделей mu и e, но НЕ от пропущенных переменных. Если важный confounder не наблюдается, ни mu, ни e не корректны - и DR оценка тоже смещена. Также: DR теряет double robustness в малых выборках, где обе модели плохо оцениваются.

Сравнение методов на одних данных

Какой estimator выбрать

Cholesterol-исследование на 10 000 пациентов с 47 ковариатами. Naive difference: -14 mg/dL (смещён, нет коррекции на возраст). Outcome regression (linear): -19 mg/dL. IPTW с logistic propensity: -18 mg/dL. IPTW с GBM propensity: -21 mg/dL. AIPTW (linear outcome + GBM propensity): -22 mg/dL. DML с XGBoost для обеих nuisance functions: -22 mg/dL с CI [-24, -20]. DML даёт ту же точку, что AIPTW, но с лучшими стандартными ошибками за счёт cross-fitting и orthogonality.

Что означает 'doubly robust' свойство AIPTW estimator?

Doubly robust значит, что misspecification одной из двух nuisance functions не убивает состоятельность - вторая компенсирует. Это математически следует из orthogonal moment condition. Если ОБЕ ошибочны, DR тоже смещён. Если хотя бы одна верна - DR consistent.

Куда ведёт propensity score

Propensity score - первая практическая техника применения модели Рубина. Следующие методы относятся к ситуациям, когда ignorability нарушена или нужны дополнительные источники variation.

  • Инструментальные переменные — Альтернатива когда ignorability нарушена - экзогенный инструмент вместо балансировки ковариат
  • Sensitivity analysis: E-value, Rosenbaum — Проверка устойчивости к скрытому конфаундингу - необходима для любого propensity-based анализа

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

  • Propensity score e(X) = P(T=1|X) сжимает весь вектор ковариат до одного числа
  • Balancing property: X ⊥ T | e(X) - кондиционирование на скаляре эквивалентно
  • Matching: для каждого treated найти ближайший control в propensity space
  • IPTW: переваживание 1/e(X) и 1/(1-e(X)) даёт unbiased ATE
  • Positivity violation (e(X) -> 0 или 1) убивает IPTW через экстремальные веса
  • Doubly robust комбинирует outcome regression и IPTW, consistent при корректности любой из двух моделей
  • DML с cross-fitting позволяет использовать произвольные ML-модели для nuisance functions

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

  • Почему высокий AUC propensity-модели - это плохой признак, а не хороший?
  • Чем principially отличается matching от IPTW при одинаковой оценке e(X)?
  • В каких ситуациях DR estimator не спасает от bias, несмотря на double robustness?
  • Почему в high-dimensional X нельзя применять ML для оценки e(X) без cross-fitting?

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

  • stat-41-causal-potential-outcomes — Propensity score опирается на ignorability
  • stat-20-causal — Базовое понимание confounding
  • stat-38-logistic-regression — Logistic regression - классическая модель для e(X)
  • stat-46-causal-sensitivity — Sensitivity analysis для нарушений ignorability
  • ml-10-logistic-regression
Propensity Score: matching и IPTW

0

1

Войти

Зачем используется caliper при matching?

Caliper - порог максимально допустимой разницы e(X) между treated и control в паре. Если ближайший control слишком далеко, пара не создаётся, и treated юнит выкидывается. Это защита от плохих матчей в зонах нарушенного overlap.