The Python package DoubleML provides an implementation of the double / debiased machine learning framework of Chernozhukov et al. (2018). It is built on top of scikit-learn (Pedregosa et al., 2011).
Note that the Python package was developed together with an R twin based on mlr3. The R package is also available on GitHub and .
Documentation and website: https://docs.doubleml.org/
DoubleML is currently maintained by @MalteKurz, @PhilippBach and @SvenKlaassen.
Bugs can be reported to the issue tracker at https://github.com/DoubleML/doubleml-for-py/issues.
Double / debiased machine learning (Chernozhukov et al. (2018)) for
- Partially linear regression models (PLR)
- Partially linear IV regression models (PLIV)
- Interactive regression models (IRM)
- Interactive IV regression models (IIVM)
The object-oriented implementation of DoubleML is very flexible.
The model classes DoubleMLPLR
, DoubleMLPLIV
, DoubleMLIRM
and DoubleIIVM
implement the estimation of the nuisance
functions via machine learning methods and the computation of the Neyman orthogonal score function.
All other functionalities are implemented in the abstract base class DoubleML
.
In particular functionalities to estimate double machine learning models and to perform statistical inference via the
methods fit
, bootstrap
, confint
, p_adjust
and tune
.
This object-oriented implementation allows a high flexibility for the model specification in terms of ...
- ... the machine learners for the nuisance functions,
- ... the resampling schemes,
- ... the double machine learning algorithm,
- ... the Neyman orthogonal score functions,
- ...
It further can be readily extended with regards to
- ... new model classes that come with Neyman orthogonal score functions being linear in the target parameter,
- ... alternative score functions via callables,
- ... alternative resampling schemes,
- ...
DoubleML requires
- Python
- sklearn
- numpy
- scipy
- pandas
- statsmodels
- joblib
To install DoubleML with pip use
pip install -U DoubleML
DoubleML can be installed from source via
git clone git@github.com:DoubleML/doubleml-for-py.git
cd doubleml-for-py
pip install --editable .
Detailed installation instructions can be found in the documentation.
DoubleML is a community effort. Everyone is welcome to contribute. To get started for your first contribution we recommend reading our contributing guidelines and our code of conduct.
If you use the DoubleML package a citation is highly appreciated:
Bach, P., Chernozhukov, V., Kurz, M. S., and Spindler, M. (2022), DoubleML - An Object-Oriented Implementation of Double Machine Learning in Python, Journal of Machine Learning Research, 23(53): 1-6, https://www.jmlr.org/papers/v23/21-0862.html.
Bibtex-entry:
@article{DoubleML2022,
title = {{DoubleML} -- {A}n Object-Oriented Implementation of Double Machine Learning in {P}ython},
author = {Philipp Bach and Victor Chernozhukov and Malte S. Kurz and Martin Spindler},
journal = {Journal of Machine Learning Research},
year = {2022},
volume = {23},
number = {53},
pages = {1--6},
url = {http://jmlr.org/papers/v23/21-0862.html}
}
Funding by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) is acknowledged – Project Number 431701914.
Bach, P., Chernozhukov, V., Kurz, M. S., and Spindler, M. (2022), DoubleML - An Object-Oriented Implementation of Double Machine Learning in Python, Journal of Machine Learning Research, 23(53): 1-6, https://www.jmlr.org/papers/v23/21-0862.html.
Chernozhukov, V., Chetverikov, D., Demirer, M., Duflo, E., Hansen, C., Newey, W. and Robins, J. (2018), Double/debiased machine learning for treatment and structural parameters. The Econometrics Journal, 21: C1-C68. doi:10.1111/ectj.12097.
Pedregosa, F., Varoquaux, G., Gramfort, A., Michel, V., Thirion, B., Grisel, O., Blondel, M., Prettenhofer, P., Weiss, R., Dubourg, V., Vanderplas, J., Passos, A., Cournapeau, D., Brucher, M., Perrot, M. and Duchesnay, E. (2011), Scikit-learn: Machine Learning in Python. Journal of Machine Learning Research, 12: 2825--2830, https://jmlr.csail.mit.edu/papers/v12/pedregosa11a.html.