Release Notes#
DoubleML 0.9.3
Fix / adapted unit tests which failed in the release of 0.9.2 to conda-forge Docs #208
DoubleML 0.9.2
DoubleML 0.9.1
Release highlight: Regression Discontinuity Designs with Flexible Covariate Adjustment via
RDFlex
class (in cooperation with Claudia Noack and Tomasz Olma; see their paper) Py #276Add
cov_type=HC0
and enable key-worded arguments toDoubleMLBLP
Py #270 Py #271Update User Guide and Example Gallery Docs #204
Add AutoML example for tuning DoubleML estimators Docs #199
DoubleML 0.9.0
Release highlight: Average potential outcomes for multiple discrete treatments via
DoubleMLAPO
andDoubleMLAPOS
classes (proposed by Apoorva Lal) Py #245 Py #250Add sensitivity analysis to
DoubleMLFramework
Py #249Maintenance documentation Docs #182 Docs #184 Docs #186 Docs #193 Docs #194 Docs #196 Docs #197
DoubleML 0.8.2
API Update: Change nuisance evaluation for classifiers. The corresponding properties are renamed
nuisance_loss
instead ofrmses
. Py #254 Docs #184Add new example on sensitivity analysis Docs #190
Add a new example on DiD with DoubleML in R Docs #178
Enable
set_sample_splitting
for cluster data Py #255Update the
make_confounded_irm_data
data generating process Py #263Maintenance package Py #264
Maintenance documentation Docs #177 Docs #180 Docs #181 Docs #187 Docs #189
DoubleML 0.8.1
DoubleML 0.8.0
Release highlight: Sample-selections models as
DoubleMLSMM
class (by Michaela Kecskésová) Py #231 Py #235 Docs #171API change: Remove options
apply_crossfitting
anddml_procedure
from theDoubleML
class Py #227 Docs #166Restructure the package to improve readability and maintainability Py #225
Add a
DoubleMLFramework
class to combine multiple DoubleML models (aggregation of estimates, boostrap and CI-procedures) Py #226 Docs #169Enable the use of external predictions for short models in benchmarks (by Lucien) Py #238 Py #239
Add the
gain_statistics
toutils
to sensitivity analysis Py #229Maintenance documentation Docs #162 Docs #163 Docs #164 Docs #165 Docs #167 Docs #168
DoubleML 0.7.1
Release highlight: Add weights to
DoubleMLIRM
class to extend sensitivity to GATEs etc. Py #220 Py #229 Docs #155 Docs #161Extend GATE and CATE estimation to the
DoubleMLPLR
class Py #220 Docs #155Enable the use of external predictions for
DoubleML
classes Py #221 Docs #159Implementing utility classes and functions (gain statistics and dummy learners) Py #221 Py #222 Py #229 Docs #161
DoubleML 0.7.0
Release highlight: Benchmarking for Sensitivity Analysis (omitted variable bias) Py #211
Policy tree estimation for the
DoubleMLIRM
class Py #212Extending sensitivity and policy tree documentation in User Guide and Example Gallery Docs #148 Docs #150
The package requirements are set to python 3.8 or higher Py #211
Maintenance documentation Docs #149
Maintenance package Py #213
DoubleML 0.6.3
Fix install requirements for 0.6.2 Py #208
DoubleML 0.6.2
DoubleML 0.6.1
Release highlight: Difference-in-differences models for ATTE estimation Py #200 Py #194
Panel data
DoubleMLDID
Repeated cross sections
DoubleMLDIDCS
Add a potential time variable to
DoubleMLData
(until now only used inDoubleMLDIDCS
) Py #200Extend the guide in the documentation and add further examples Docs #132 Docs #133 Docs #135
DoubleML 0.6.0
Release highlight: Heterogeneous treatment effects (GATE, CATE, Quantile effects, …)
Add out-of-sample RMSE and targets for nuisance elements and implement nuisance estimation evaluation via
evaluate_learners()
. Py #182 Py #188Implement
gate()
andcate()
methods forDoubleMLIRM
class. Both are based on the newDoubleMLBLP
class. Py #169Implement different type of quantile models Py #179
Potential quantiles (PQ) in class
DoubleMLPQ
Local potential quantiles (LPQ) in class
DoubleMLLPQ
Conditional value at risk (CVaR) in class
DoubleMLCVAR
Quantile treatment effects (QTE) in class
DoubleMLQTE
Extend clustering to nonlinear scores Py #190
Add
ipw_normalization
option toDoubleMLIRM
andDoubleMLIIVM
Py #186Implement an abstract base class for data backends Py #173
Extend the guide in the documentation and add further examples Docs #116 Docs #125 Docs #126
Code refactorings, bug fixes, docu updates, unit test extensions and continuous integration Py #183 Py #192 Py #195 Py #196
Change License to BSD 3-Clause Py #198
DoubleML 0.5.2
Fix / adapted unit tests which failed in the release of 0.5.1 to conda-forge Py #172
DoubleML 0.5.1
DoubleML 0.5.0
Implement a new score function
score = 'IV-type'
for the PLIV model (for details see Py #151)
–> API change fromDoubleMLPLIV(obj_dml_data, ml_g, ml_m, ml_r [, ...])
toDoubleMLPLIV(obj_dml_data, ml_g, ml_m, ml_r, ml_g [, ...])
Adapt the nuisance estimation for the
'IV-type'
score for the PLR model (for details see Py #151)
–> API change fromDoubleMLPLR(obj_dml_data, ml_g, ml_m [, ...])
toDoubleMLPLR(obj_dml_data, ml_l, ml_m, ml_g [, ...])
Allow the usage of classifiers for binary outcome variables in the model classes IRM and IIVM Py #134
Published in JMLR: DoubleML - An Object-Oriented Implementation of Double Machine Learning in Python (citation info updated in Py #138)
DoubleML 0.4.1
We added Python Contribution Guidelines, issue templates, a pull request template and a Python discussion forum to the Python package repository Py #132
Code refactorings, docu updates, unit test extensions and continuous integration Py #126 Py #127 Py #128 Py #130 Py #131
DoubleML 0.4.0
Release highlight: Clustered standard errors for double machine learning models Py #116
Improve exception handling for missings and infinite values in the confounders, predictions, etc. (fixes Py #120 by allowing null confounder values) Py #122
Clean up dev requirements and use dev requirements on github actions Py #121
Other updates Py #123
DoubleML 0.3.0
Always use the same bootstrap algorithm independent of
dml1
vsdml2
and consistent with docu and paper Py #101 & Py #102Added an exception handling to assure that an IV variable is specified when using a PLIV or IIVM model Py #107
Improve exception handling for externally provided sample splitting Py #110
Minor update of the str representation of
DoubleMLData
objects Py #112Code refactorings and unit test extensions Py #103, Py #105, Py #106, Py #111 & Py #113
DoubleML 0.2.2
IIVM model: Added a subgroups option to adapt to cases with and without the subgroups of always-takers and never-takers (Py #96).
Add checks for the intersections of
y_col
,d_cols
,x_cols
,z_cols
(Py #84, Py #97). This also fixes Py #83 (with intersection betweenx_cols
andd_cols
a column could have been added multiple times to the covariate matrix).Added checks and exception handling for duplicate entries in
d_cols
,x_cols
orz_cols
(Py #100).Check the datatype of
data
when initializingDoubleMLData
objects. Also check for duplicate column names (Py #100).Fix bug Py #95 in Py #97: It occurred when
x_cols
where inferred via setdiff andy_col
was a string with multiple characters.We updated the citation info to refer to the arXiv paper (Py #98): Bach, P., Chernozhukov, V., Kurz, M. S., and Spindler, M. (2021), DoubleML - An Object-Oriented Implementation of Double Machine Learning in Python, arXiv:2104.03220.
DoubleML 0.2.1
Provide an option to store & export the first-stage predictions Py #91
Added the package logo to the doc
DoubleML 0.2.0
Major extensions of the unit test framework which result in a coverage >98% (a summary is given in Py #82)
In the PLR one can now also specify classifiers for
ml_m
in case of a binary treatment variable with values 0 and 1 (see Py #86 for details)The joint Python and R docu and user guide is now served to https://docs.doubleml.org from a separate repo DoubleML/doubleml-docs
Generate and upload a unit test coverage report to codecov https://app.codecov.io/gh/DoubleML/doubleml-for-py Py #76
Run lint checks with flake8 Py #78, align code with PEP8 standards Py #79, activate code quality checks at codacy Py #80
Refactoring (reduce code redundancy) of the code for tuning of the ML learners used for approximation the nuisance functions Py #81
Minor updates, bug fixes and improvements of the exception handling (contained in Py #82 & Py #89)
DoubleML 0.1.2
Fixed a compatibility issue with
scikit-learn
0.24, which only affected some unit tests (Py #70, Py #71)Added scheduled unit tests on github-action (three times a week) Py #69
Split up estimation of nuisance functions and computation of score function components. Further introduced a private method
_est_causal_pars_and_se()
, see Py #72. This is needed for the DoubleML-Serverless project: DoubleML/doubleml-serverless.
DoubleML 0.1.1
Bug fix in the drawing of bootstrap weights for the multiple treatment case Py #66 (see also DoubleML/doubleml-for-r#28)
Update install instructions as DoubleML is now listed on pypi
Prepare submission to conda-forge: Include LICENSE file in source distribution
Documentation is now served with HTTPS https://docs.doubleml.org/
DoubleML 0.1.0
Initial release
Development at DoubleML/doubleml-for-py
The Python package DoubleML provides an implementation of the double / debiased machine learning framework of Chernozhukov et al. (2018).
Implements double machine learning for four different models:
Partially linear regression models (PLR) in class
DoubleMLPLR
Partially linear IV regression models (PLIV) in class
DoubleMLPLIV
Interactive regression models (IRM) in class
DoubleMLIRM
Interactive IV regression models (IIVM) in class
DoubleMLIIVM
All model classes are inherited from an abstract base class
DoubleML
where the key elements of double machine learning are implemented.
DoubleML 1.0.1
DoubleML 1.0.0
Update citation info to publication in Journal of Statistical Software, rename helper function and fix links and GH actions R #191
DoubleML 0.5.3
Add documentation for estimated models for nuisance parameters R #181
New contributor @SvenKlaassen
Maintenance R #179
DoubleML 0.5.2
DoubleML 0.5.1
DoubleML 0.5.0
Implement a new score function
score = 'IV-type'
for the PLIV model (for details see R #161)
–> API change fromDoubleMLPLIV$new(obj_dml_data, ml_g, ml_m, ml_r [, ...])
toDoubleMLPLIV$new(obj_dml_data, ml_g, ml_m, ml_r, ml_g [, ...])
Adapt the nuisance estimation for the
'IV-type'
score for the PLR model (for details see R #161)
–> API change fromDoubleMLPLR$new(obj_dml_data, ml_g, ml_m [, ...])
toDoubleMLPLR$new(obj_dml_data, ml_l, ml_m, ml_g [, ...])
Use
task_type
instead oflearner_class
to identify whether a learner is meant to regress or classify (this change makes it possible to easily integrate pipelines frommlr3pipelines
as learner for the nuisance functions) R #141Add R Contribution Guidelines, issue templates, a pull request template and a R discussion forum to the R package repository R #142 R #146 R #147
Allow the usage of classifiers for binary outcome variables in the model classes IRM and IIVM R #114
Bug fixes and maintenance R #155 R #156 R #157 R #158 R #160 R #163
DoubleML 0.4.1
DoubleML 0.4.0
Release highlight: Clustered standard errors for double machine learning models R #119
Apply styler as described in the wiki (DoubleML/doubleml-for-r) and add a corresponding CI on github actions R #120 R #122
Other refactoring, bug fixes and documentation updates R #127 R #129 R #130 R #131 R #132 R #133
DoubleML 0.3.1
Initialize all numeric matrices, vectors and arrays with the correct data type by using
NA_real_
instead ofNA
and replace aprint()
call withcat()
R #115
DoubleML 0.3.0
Use active bindings in the R6 OOP implementation R #106 & R #93
Fix the aggregation formula for standard errors from repeated cross-fitting R #94 & R #95
Always use the same bootstrap algorithm independent of
dml1
vsdml2
and consistent with docu and paper R #98 & R #99Initialize predictions with NA and make sure that there are no misleading entries in the evaluated score functions R #96 & R #105
Avoid overriding learner parameters during tuning R #83 & R #84
Fixes in the exception handling and extension of the unit tests for the score function choice R #82
Prevent overwriting parameters from initialization when calling set_ml_nuisance_params R #87 & R #89
Major refactoring and cleanup and extension of the unit test framework R #101
Extension and reorganization of exception handling for
DoubleMLData
objects R #63 & R #90Adaption to be compatible with an API change in the next
mlr3
release R #103Run unit tests with mlr3 in dev version on github actions R #104
Added a short version of and a reference to the arXiv paper as vignette R #110 & R #113
Prevent using the subclassed methods check_score and check_data when constructing DoubleML objects R #107
Other refactoring and minor adaptions R #91, R #92, R #102 & R #108
DoubleML 0.2.1
DoubleML 0.2.0
In the PLR one can now also specify classifiers for
ml_m
in case of a binary treatment variable with values 0 and 1Major refactoring of core-parts of the estimation and tuning of the ML estimators for the nuisance functions: All models now use central helper functions
dml_cv_predict()
anddml_tune()
Extensions to the unit test framework to improve upon test coverage
Added unit test coverage via codecov: https://app.codecov.io/gh/DoubleML/doubleml-for-r
DoubleML 0.1.2
DoubleML 0.1.1
First release to CRAN https://cran.r-project.org/package=DoubleML
Clean up of imports
Continuous integration was extended by unit tests on github actions DoubleML/doubleml-for-r
DoubleML 0.1.0
Initial release
Development at DoubleML/doubleml-for-r
The R package DoubleML provides an implementation of the double / debiased machine learning framework of Chernozhukov et al. (2018).
Implements double machine learning for four different models:
Partially linear regression models (PLR) in class
DoubleMLPLR
Partially linear IV regression models (PLIV) in class
DoubleMLPLIV
Interactive regression models (IRM) in class
DoubleMLIRM
Interactive IV regression models (IIVM) in class
DoubleMLIIVM
All model classes are inherited from
DoubleML
where the key elements of double machine learning are implemented.