gitextract_2llsel0e/ ├── .github/ │ └── workflows/ │ ├── ci.yml │ ├── generate_lkg.py │ ├── publish-documentation.yml │ └── publish-package.yml ├── .gitignore ├── .pre-commit-config.yaml ├── LICENSE ├── README.md ├── SECURITY.md ├── doc/ │ ├── conf.py │ ├── index.rst │ ├── reference.rst │ └── spec/ │ ├── api.rst │ ├── causal_intro.rst │ ├── community.rst │ ├── comparison.rst │ ├── estimation/ │ │ ├── dml.rst │ │ ├── dr.rst │ │ ├── dynamic_dml.rst │ │ ├── forest.rst │ │ ├── metalearners.rst │ │ ├── orthoiv.rst │ │ └── two_sls.rst │ ├── estimation.rst │ ├── estimation_dynamic.rst │ ├── estimation_iv.rst │ ├── faq.rst │ ├── federated_learning.rst │ ├── flowchart.rst │ ├── inference.rst │ ├── interpretability.rst │ ├── model_selection.rst │ ├── motivation.rst │ ├── overview.rst │ ├── references.rst │ ├── spec.rst │ └── validation.rst ├── econml/ │ ├── __init__.py │ ├── _cate_estimator.py │ ├── _ensemble/ │ │ ├── __init__.py │ │ ├── _ensemble.py │ │ └── _utilities.py │ ├── _ortho_learner.py │ ├── _shap.py │ ├── _tree_exporter.py │ ├── _version.py │ ├── automated_ml/ │ │ ├── __init__.py │ │ └── _automated_ml.py │ ├── cate_interpreter/ │ │ ├── __init__.py │ │ └── _interpreters.py │ ├── data/ │ │ ├── __init__.py │ │ ├── color-edits.sty │ │ ├── data_doc.bib │ │ ├── data_doc.tex │ │ ├── dgps.py │ │ ├── dynamic_panel_dgp.py │ │ ├── ihdp/ │ │ │ ├── example.csv │ │ │ ├── example_full.csv │ │ │ └── sim.csv │ │ └── input_dynamicdgp/ │ │ ├── cov_new.jbl │ │ ├── gm_0.jbl │ │ ├── gm_1.jbl │ │ ├── gm_2.jbl │ │ ├── gm_3.jbl │ │ ├── gm_4.jbl │ │ ├── gm_5.jbl │ │ ├── gm_6.jbl │ │ ├── lognorm_neg_0.jbl │ │ ├── lognorm_neg_1.jbl │ │ ├── lognorm_neg_2.jbl │ │ ├── lognorm_neg_3.jbl │ │ ├── lognorm_neg_4.jbl │ │ ├── lognorm_neg_5.jbl │ │ ├── lognorm_pos_0.jbl │ │ ├── lognorm_pos_1.jbl │ │ ├── lognorm_pos_2.jbl │ │ ├── lognorm_pos_3.jbl │ │ ├── lognorm_pos_4.jbl │ │ ├── lognorm_pos_5.jbl │ │ ├── lognorm_pos_6.jbl │ │ ├── n_0.jbl │ │ ├── n_1.jbl │ │ ├── n_2.jbl │ │ ├── n_3.jbl │ │ ├── n_4.jbl │ │ ├── n_5.jbl │ │ └── n_6.jbl │ ├── dml/ │ │ ├── __init__.py │ │ ├── _rlearner.py │ │ ├── causal_forest.py │ │ └── dml.py │ ├── dowhy.py │ ├── dr/ │ │ ├── __init__.py │ │ └── _drlearner.py │ ├── federated_learning.py │ ├── grf/ │ │ ├── __init__.py │ │ ├── _base_grf.py │ │ ├── _base_grftree.py │ │ ├── _criterion.pxd │ │ ├── _criterion.pyx │ │ ├── _utils.pxd │ │ ├── _utils.pyx │ │ └── classes.py │ ├── inference/ │ │ ├── __init__.py │ │ ├── _bootstrap.py │ │ └── _inference.py │ ├── iv/ │ │ ├── __init__.py │ │ ├── dml/ │ │ │ ├── __init__.py │ │ │ └── _dml.py │ │ ├── dr/ │ │ │ ├── __init__.py │ │ │ └── _dr.py │ │ └── sieve/ │ │ ├── __init__.py │ │ └── _tsls.py │ ├── metalearners/ │ │ ├── __init__.py │ │ └── _metalearners.py │ ├── orf/ │ │ ├── __init__.py │ │ ├── _causal_tree.py │ │ └── _ortho_forest.py │ ├── panel/ │ │ ├── __init__.py │ │ ├── dml/ │ │ │ ├── __init__.py │ │ │ └── _dml.py │ │ └── utilities.py │ ├── policy/ │ │ ├── __init__.py │ │ ├── _base.py │ │ ├── _drlearner.py │ │ └── _forest/ │ │ ├── __init__.py │ │ ├── _criterion.pxd │ │ ├── _criterion.pyx │ │ ├── _forest.py │ │ └── _tree.py │ ├── score/ │ │ ├── __init__.py │ │ ├── ensemble_cate.py │ │ └── rscorer.py │ ├── sklearn_extensions/ │ │ ├── __init__.py │ │ ├── linear_model.py │ │ └── model_selection.py │ ├── solutions/ │ │ └── causal_analysis/ │ │ ├── __init__.py │ │ └── _causal_analysis.py │ ├── tests/ │ │ ├── __init__.py │ │ ├── dgp.py │ │ ├── test_ate_inference.py │ │ ├── test_automated_ml.py │ │ ├── test_bootstrap.py │ │ ├── test_cate_interpreter.py │ │ ├── test_causal_analysis.py │ │ ├── test_discrete_outcome.py │ │ ├── test_dml.py │ │ ├── test_dmliv.py │ │ ├── test_dominicks.py │ │ ├── test_dowhy.py │ │ ├── test_driv.py │ │ ├── test_drlearner.py │ │ ├── test_drtester.py │ │ ├── test_dynamic_dml.py │ │ ├── test_federated_learning.py │ │ ├── test_grf_cython.py │ │ ├── test_grf_python.py │ │ ├── test_inference.py │ │ ├── test_integration.py │ │ ├── test_linear_model.py │ │ ├── test_metalearners.py │ │ ├── test_missing_values.py │ │ ├── test_model_selection.py │ │ ├── test_montecarlo.py │ │ ├── test_notebooks.py │ │ ├── test_orf.py │ │ ├── test_ortho_learner.py │ │ ├── test_policy_forest.py │ │ ├── test_random_state.py │ │ ├── test_refit.py │ │ ├── test_rscorer.py │ │ ├── test_sensitivity_analysis.py │ │ ├── test_shap.py │ │ ├── test_statsmodels.py │ │ ├── test_treatment_featurization.py │ │ ├── test_tree.py │ │ ├── test_two_stage_least_squares.py │ │ ├── test_utilities.py │ │ └── utilities.py │ ├── tree/ │ │ ├── __init__.py │ │ ├── _criterion.pxd │ │ ├── _criterion.pyx │ │ ├── _splitter.pxd │ │ ├── _splitter.pyx │ │ ├── _tree.pxd │ │ ├── _tree.pyx │ │ ├── _tree_classes.py │ │ ├── _utils.pxd │ │ └── _utils.pyx │ ├── utilities.py │ └── validate/ │ ├── __init__.py │ ├── drtester.py │ ├── results.py │ ├── sensitivity_analysis.py │ └── utils.py ├── lkg-notebook.txt ├── lkg.txt ├── monte_carlo_tests/ │ ├── monte_carlo_honestforest.py │ └── monte_carlo_statsmodels.py ├── notebooks/ │ ├── AutomatedML/ │ │ └── Automated Machine Learning For EconML.ipynb │ ├── CATE validation.ipynb │ ├── Causal Forest and Orthogonal Random Forest Examples.ipynb │ ├── Causal Model Selection with the RScorer.ipynb │ ├── Choosing First Stage Models.ipynb │ ├── CustomerScenarios/ │ │ ├── Case Study - Customer Segmentation at An Online Media Company - EconML + DoWhy.ipynb │ │ ├── Case Study - Customer Segmentation at An Online Media Company.ipynb │ │ ├── Case Study - Long-Term Return-on-Investment via Short-Term Proxies.ipynb │ │ ├── Case Study - Multi-investment Attribution at A Software Company - EconML + DoWhy.ipynb │ │ ├── Case Study - Multi-investment Attribution at A Software Company.ipynb │ │ ├── Case Study - Recommendation AB Testing at An Online Travel Company - EconML + DoWhy.ipynb │ │ ├── Case Study - Recommendation AB Testing at An Online Travel Company.ipynb │ │ └── Case Study - Using EconML to evaluate the treatment effect of training program - Lalonde dataset.ipynb │ ├── Double Machine Learning Examples.ipynb │ ├── Doubly Robust Learner and Interpretability.ipynb │ ├── Dynamic Double Machine Learning Examples.ipynb │ ├── ForestLearners Basic Example.ipynb │ ├── Generalized Random Forests.ipynb │ ├── Interpretability with SHAP.ipynb │ ├── Metalearners Examples.ipynb │ ├── OrthoIV and DRIV Examples.ipynb │ ├── Policy Learning with Trees and Forests.ipynb │ ├── Scaling EconML using Ray.ipynb │ ├── Solutions/ │ │ ├── Causal Interpretation for Ames Housing Price.ipynb │ │ └── Causal Interpretation for Employee Attrition Dataset.ipynb │ ├── Treatment Featurization Examples.ipynb │ └── Weighted Double Machine Learning Examples.ipynb ├── prototypes/ │ ├── dml_iv/ │ │ ├── NLSYM_GBM.ipynb │ │ ├── NLSYM_Linear.ipynb │ │ ├── NLSYM_Semi_Synthetic_GBM.ipynb │ │ ├── NLSYM_Semi_Synthetic_Linear.ipynb │ │ ├── README.md │ │ ├── TA_DGP_analysis.ipynb │ │ ├── TA_DGP_analysis_Step_CATE.ipynb │ │ ├── coverage_experiment.py │ │ ├── data/ │ │ │ ├── NEW7080.dta │ │ │ ├── card.csv │ │ │ ├── code_bk.txt │ │ │ └── readme │ │ ├── deep_dml_iv.py │ │ ├── deep_dr_iv.py │ │ ├── dml_ate_iv.py │ │ ├── dml_iv.py │ │ ├── dr_iv.py │ │ ├── post_processing.ipynb │ │ ├── utilities.py │ │ └── xgb_utilities.py │ ├── dynamic_dml/ │ │ ├── README.md │ │ ├── all_coverage.sh │ │ ├── coverage_panel.py │ │ ├── coverage_panel_hetero.py │ │ ├── dynamic_panel_dgp.py │ │ ├── hetero_panel_dynamic_dml.py │ │ ├── high_dim_state_any_m_panel.ipynb │ │ ├── high_dim_state_any_m_panel_hetero.ipynb │ │ ├── panel_dynamic_dml.py │ │ ├── postprocess_panel.ipynb │ │ └── postprocess_panel_hetero.ipynb │ ├── orthogonal_forests/ │ │ ├── GRF_treatment_effects.R │ │ ├── README.md │ │ ├── causal_tree.py │ │ ├── comparison_plots.py │ │ ├── hetero_dml.py │ │ ├── monte_carlo.py │ │ ├── ortho_forest.py │ │ ├── residualizer.py │ │ └── seq_map.sh │ └── sensitivity_analysis/ │ ├── ovb_dml.ipynb │ └── ovb_dr.ipynb ├── pyproject.toml └── setup.py