Skip to main content

DoubleML - Double Machine Learning in Python

build PyPI version Conda Version codecov Codacy Badge Python version

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 CRAN Version.

Documentation and Maintenance

Documentation and website: https://docs.doubleml.org/

DoubleML is currently maintained by @MalteKurz and @PhilippBach.

Bugs can be reported to the issue tracker at https://github.com/DoubleML/doubleml-for-py/issues.

Main Features

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,
  • ...

An overview of the OOP structure of the DoubleML package is given in the graphic available at https://github.com/DoubleML/doubleml-for-py/blob/main/doc/oop.svg

Installation

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.

Contributing

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.

Citation

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}
}

Acknowledgements

Funding by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) is acknowledged – Project Number 431701914.

References

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.

Release files for DoubleML 0.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for DoubleML 0.5.2
File Size Uploaded
DoubleML-0.5.2.tar.gz 77.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for DoubleML 0.5.2
File Interpreter ABI Platform
DoubleML-0.5.2-py3-none-any.whl Python 3 none any Details

Total release size: 203.9 kB

Release files / DoubleML-0.5.2.tar.gz

Download URL DoubleML-0.5.2.tar.gz
Size 77.5 kB
Tags Source
SHA-256 checksum
How to use checksums
09dda3a23c7bffe4a56b6d1c2a8e53cbafb2df721d0f861116d26e284ccdb896
BLAKE2b-256 checksum
How to use checksums
62bc8a6fece48826c394056846b6d6868097b25a94ec720c5cb51c40460565eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.6

Release files / DoubleML-0.5.2-py3-none-any.whl

Download URL DoubleML-0.5.2-py3-none-any.whl
Size 126.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
460a4ce8bf5bbdf7b9195778c03e2c9d1005f28c36dbaf1977546f6ba668899f
BLAKE2b-256 checksum
How to use checksums
8a5072fc19cfde816f987e5ba074b02a4e26af86636f744d089e5f484b29198b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.6

Release history Release notifications | RSS feed

0.11.4

2 release files

0.11.3

2 release files

0.11.2

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

This release

0.5.2 This release

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page