Compare Implementation of DML IRM in Causalis and DML IRM in DoubleMl

Compare Implementation of DML IRM in Causalis and DML IRM in DoubleMl

In Causalis we have dml_ate_source() implementation. It calls dml_irm_obj.fit() from DoubleML. Let's compare it with Causalis dml_ate()

Result

Treatment share ≈ 0.2052 Ground-truth ATE from the DGP: 0.800 Ground-truth ATT from the DGP: 0.800

Result
ydtenure_monthsavg_sessions_weekspend_last_monthpremium_userurban_resident
01.9039100.012.1305444.056687181.5706070.00.0
13.3881440.019.5865601.671561182.7935980.00.0
28.4565121.039.4551035.452889125.1857081.01.0
35.5359701.026.3276935.0516294.9329050.01.0
44.9651401.035.0427714.93399623.5774070.00.0

ATE

Result

Real ATE = 0.8 Estimated with Causalis = 0.7506313322797796 in (0.6668061755942251, 0.8344564889653342) Estimated with DoubleML = 0.7951243102839649 in (0.7340549132666624, 0.8561937073012674)

ATTE

Result

Real ATTE = 0.8 Estimated with Causalis = 0.8238669785039335 in (0.7558326760362799, 0.8919012809715872) Estimated with DoubleML = 0.7951243102839649 in (0.7340549132666624, 0.8561937073012674)

Conclusion

As we see estimates with Causalis are very close to the DoubleML. Nuance functions were out of box catboost model