Skip to content
Research3 min read

Единый DGP для DML vs RCT vs IV vs DiD

Бизнес-событие во всех дизайнах одно: первая успешная оплата ЖКХ в приложении. Сначала генерируется один структурный мир клиентов и их потенциальные исходы, зат...

Единый DGP для DML vs RCT vs IV vs DiD

Бизнес-событие во всех дизайнах одно: первая успешная оплата ЖКХ в приложении. Сначала генерируется один структурный мир клиентов и их потенциальные исходы, затем к нему применяются разные механизмы назначения воздействия.

  • RCT / ITT: эффект случайного промо на PnL.
  • IV / LATE: эффект первой оплаты для клиентов-комплаеров; промо служит инструментом.
  • DML: эффект органического начала использования при selection on observables.
  • DiD: динамика PnL после staggered adoption относительно ещё не начавших / never-treated.

Названия y, d, z, propensity и oracle-полей следуют соглашениям causalis.dgp. Сам генератор общий, потому что готовые DGP в пакете создают независимые миры и не позволяют честно сравнивать дизайны на одних клиентах.

Параметры сценария

Базовый сценарий удовлетворяет ключевым предпосылкам. Для stress-тестов меняйте hidden_confounding, did_trend_violation, anticipation_strength и overlap_strength.

Result

{'n_clients': 20000, 'periods': 24, 'seed': 42, 'pre_month': 11, 'treatment_month': 12, 'post_month': 15, 'hidden_confounding': 0.0, 'did_trend_violation': 0.0, 'anticipation_strength': 0.0, 'overlap_strength': 1.0}

Генерация датасетов

Result
rowscolumns
clients200007
rct2000016
iv2000018
dml2000013
did48000014
Result
true_value
ate_exposure_horizon88.224
att_dml_horizon97.973
itt_rct_horizon58.048
late_iv_horizon90.165
first_stage_rct0.644

Быстрые sanity checks

Эти проверки не являются оценивателями исследования, но подтверждают механику DGP. Wald ratio должен быть близок к oracle LATE, difference-in-means по z — к ITT.

Result
estimateoracle
RCT difference-in-means (ITT)60.72058.048
IV first stage0.6440.644
IV Wald (LATE)94.31190.165
Result
value
rct_assignment_rate0.493
rct_treatment_z00.042
rct_treatment_z10.685
dml_treatment_rate0.488
dml_propensity_p010.065
dml_propensity_p990.959
did_ever_treated_rate0.433
Result

adoption_month 12.000 1342 14.000 1699 16.000 2170 18.000 3455 never 11334 Name: count, dtype: int64

Аналитические выборки без oracle leakage

Используйте объекты *_analysis в моделях. Полные датафреймы сохраняют истину только для расчёта bias/RMSE/coverage.

Result

{'rct': ['client_id', 'income_z', 'digital', 'loyalty', 'risk', 'products_before', 'region', 'z', 'd', 'y_pre', 'y'], 'iv': ['client_id', 'income_z', 'digital', 'loyalty', 'risk', 'products_before', 'region', 'z', 'd', 'y_pre', 'y'], 'dml_features': ['income_z', 'digital', 'loyalty', 'risk', 'products_before', 'region', 'y_pre'], 'did': ['client_id', 'income_z', 'digital', 'loyalty', 'risk', 'products_before', 'region', 'month', 'adoption_month', 'event_time', 'd', 'y']}

Сценарии нарушений

При одинаковом seed потенциальные исходы и клиентские признаки остаются теми же; меняется только соответствующий механизм назначения/нарушения.

Опциональный экспорт

Ячейка ниже намеренно не выполняется автоматически. Она сохраняет и аналитические, и oracle-версии рядом с notebook.

Проверяем

Result
client_idincome_zdigitalloyaltyriskproducts_beforeregion
000.305-1.6580.1240.63502
11-1.0400.8910.3530.56032
220.750-0.0580.6090.73110
330.941-0.6000.4810.20121
44-1.951-0.2510.0710.36911
Result
client_idincome_zdigitalloyaltyriskproducts_beforeregionzdy_preyy0_truetau_trued_z0_trued_z1_truecomplier_true
000.305-1.6580.1240.6350211105.048291.477235.54555.932011
11-1.0400.8910.3530.5603210357.247307.036307.036107.639000
220.750-0.0580.6090.7311011253.680505.302431.58873.714011
330.941-0.6000.4810.2012100401.763238.932238.93289.378011
44-1.951-0.2510.0710.369111066.070232.011232.01183.864000
Result
client_idincome_zdigitalloyaltyriskproducts_beforeregiondy_preyy0_truepropensity_truetau_true
000.305-1.6580.1240.635021105.048291.477235.5450.09755.932
11-1.0400.8910.3530.560321357.247414.675307.0360.667107.639
220.750-0.0580.6090.731101253.680505.302431.5880.41773.714
330.941-0.6000.4810.201210401.763238.932238.9320.35489.378
44-1.951-0.2510.0710.36911166.070315.875232.0110.53783.864