Release notes#

DoubleML 0.9.0
DoubleML 0.8.2
  • API Update: Change nuisance evaluation for classifiers. The corresponding properties are renamed nuisance_loss instead of rmses. #254 #184

  • Add new example on sensitivity analysis #190

  • Add a new example on DiD with DoubleML in R #178

  • Enable set_sample_splitting for cluster data #255

  • Update the make_confounded_irm_data data generating process #263

  • Maintainance package #264

  • Maintenance documentation #177 #180 #181 #187 #189

DoubleML 0.8.1
  • Increment package requirements and update workflows for python 3.9 (add tests for python 3.12) #247 #175

  • Additional example for ranking treatment effects (by Apoorva Lal) #173 #174

  • Maintainance documentation #172

DoubleML 0.8.0
  • Release highlight: Sample-selections models as DoubleMLSMM class (by Michaela Kecskésová) #231 #235 #171

  • API change: Remove options apply_crossfitting and dml_procedure from the DoubleML class #227 #166

  • Restructure the package to improve readability and maintainability #225

  • Add a DoubleMLFramework class to combine multiple DoubleML models (aggregation of estimates, boostrap and CI-procedures) #226 #169

  • Enable the use of external predictions for short models in benchmarks (by Lucien) #238 #239

  • Add the gain_statistics to utils to sensitivity analysis #229

  • Maintenance documentation #162 #163 #164 #165 #167 #168

  • Maintainance package #225 #229 #246

DoubleML 0.7.1
  • Release highlight: Add weights to DoubleMLIRM class to extend sensitivity to GATEs etc. #220 #229 #155 #161

  • Extend GATE and CATE estimation to the DoubleMLPLR class #220 #155

  • Enable the use of external predictions for DoubleML classes #221 #159

  • Implementing utility classes and functions (gain statistics and dummy learners) #221 #222 #229 #161

  • Extend example Gallery #153 #158 #161

  • Maintenance documentation #157 #160

  • Maintenance package #223 #224

DoubleML 0.7.0
  • Release highlight: Benchmarking for Sensitivity Analysis (omitted variable bias) #211

  • Policy tree estimation for the DoubleMLIRM class #212

  • Extending sensitivity and policy tree documentation in User Guide and Example Gallery #148 #150

  • The package requirements are set to python 3.8 or higher #211

  • Maintenance documentation #149

  • Maintenance package #213

DoubleML 0.6.3
  • Fix install requirements for 0.6.2 #208

DoubleML 0.6.2
  • Release highlight: Sensitivity Analysis (omitted variable bias) for #201

    • DoubleMLPLR

    • DoubleMLIRM

    • DoubleMLDID

    • DoubleMLDIDCS

  • Updated documentation #144 #141

  • Extend the guide with sensitivity and add further examples #142

  • Maintenance package #202 #206

  • Maintenance documentation #137 #138 #140 #143 #145 #146

DoubleML 0.6.1
  • Release highlight: Difference-in-differences models for ATTE estimation #200 #194

    • Panel data DoubleMLDID

    • Repeated cross sections DoubleMLDIDCS

  • Add a potential time variable to DoubleMLData (until now only used in DoubleMLDIDCS) #200

  • Extend the guide in the documentation and add further examples #132 #133 #135

  • Maintenance #199 #134 #136

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(). #182 #188

  • Implement gate() and cate() methods for DoubleMLIRM class. Both are based on the new DoubleMLBLP class. #169

  • Implement different type of quantile models #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 #190

  • Add ipw_normalization option to DoubleMLIRM and DoubleMLIIVM #186

  • Implement an abstract base class for data backends #173

  • Extend the guide in the documentation and add further examples #116 #125 #126

  • Code refactorings, bug fixes, docu updates, unit test extensions and continuous integration #183 #192 #195 #196

  • Change License to BSD 3-Clause #198

  • Maintenance #174 #178 #181

DoubleML 0.5.2
  • Fix / adapted unit tests which failed in the release of 0.5.1 to conda-forge #172

DoubleML 0.5.1
  • Store estimated models for nuisance parameters #159

  • Bug fix: Overwrite for tune method (introduced for depreciation warning) did not return the tune result #160 #162

  • Maintenance #166 #167 #168 #170

DoubleML 0.5.0
  • Implement a new score function score = 'IV-type' for the PLIV model (for details see #151)
    –> API change from DoubleMLPLIV(obj_dml_data, ml_g, ml_m, ml_r [, ...]) to DoubleMLPLIV(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 #151)
    –> API change from DoubleMLPLR(obj_dml_data, ml_g, ml_m [, ...]) to DoubleMLPLR(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 #134

  • Published in JMLR: DoubleML - An Object-Oriented Implementation of Double Machine Learning in Python (citation info updated in #138)

  • Maintenance #143 #148 #149 #152 #153

DoubleML 0.4.1
DoubleML 0.4.0
  • Release highlight: Clustered standard errors for double machine learning models #116

  • Improve exception handling for missings and infinite values in the confounders, predictions, etc. (fixes #120 by allowing null confounder values) #122

  • Clean up dev requirements and use dev requirements on github actions #121

  • Other updates #123

DoubleML 0.3.0
  • Always use the same bootstrap algorithm independent of dml1 vs dml2 and consistent with docu and paper #101 & #102

  • Added an exception handling to assure that an IV variable is specified when using a PLIV or IIVM model #107

  • Improve exception handling for externally provided sample splitting #110

  • Minor update of the str representation of DoubleMLData objects #112

  • Code refactorings and unit test extensions #103, #105, #106, #111 & #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 (#96).

  • Add checks for the intersections of y_col, d_cols, x_cols, z_cols (#84, #97). This also fixes #83 (with intersection between x_cols and d_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 or z_cols (#100).

  • Check the datatype of data when initializing DoubleMLData objects. Also check for duplicate column names (#100).

  • Fix bug #95 in #97: It occurred when x_cols where inferred via setdiff and y_col was a string with multiple characters.

  • We updated the citation info to refer to the arXiv paper (#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 #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 #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 #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 #76

  • Run lint checks with flake8 #78, align code with PEP8 standards #79, activate code quality checks at codacy #80

  • Refactoring (reduce code redundancy) of the code for tuning of the ML learners used for approximation the nuisance functions #81

  • Minor updates, bug fixes and improvements of the exception handling (contained in #82 & #89)

DoubleML 0.1.2
  • Fixed a compatibility issue with scikit-learn 0.24, which only affected some unit tests (#70, #71)

  • Added scheduled unit tests on github-action (three times a week) #69

  • Split up estimation of nuisance functions and computation of score function components. Further introduced a private method _est_causal_pars_and_se(), see #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 #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
  • Maintenance (upcoming breaking changes from paradox package), thanks to new contributor Martin Binder @mb706 # 195 # 198

DoubleML 1.0.0
  • Update citation info to publication in Journal of Statistical Software, rename helper function and fix links and GH actions 191

DoubleML 0.5.2
DoubleML 0.5.1
  • Fix a CRAN issue (html checks) by regenerating .Rd-files with the newest version of roxygen2. #166 #167 #168

DoubleML 0.5.0
  • Implement a new score function score = 'IV-type' for the PLIV model (for details see #161)
    –> API change from DoubleMLPLIV$new(obj_dml_data, ml_g, ml_m, ml_r [, ...]) to DoubleMLPLIV$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 #161)
    –> API change from DoubleMLPLR$new(obj_dml_data, ml_g, ml_m [, ...]) to DoubleMLPLR$new(obj_dml_data, ml_l, ml_m, ml_g [, ...])

  • Use task_type instead of learner_class to identify whether a learner is meant to regress or classify (this change makes it possible to easily integrate pipelines from mlr3pipelines as learner for the nuisance functions) #141

  • Add Contribution Guidelines, issue templates, a pull request template and a discussion forum to the R package repository #142 #146 #147

  • Allow the usage of classifiers for binary outcome variables in the model classes IRM and IIVM #114

  • Bug fixes and maintenance #155 #156 #157 #158 #160 #163

DoubleML 0.4.1
  • Prevent usage of glmnet learner for unit testing as recommended by CRAN (failing tests on Solaris) #137

  • Prepare for the upcoming release of checkmate which is not backward compatible with our unit tests #134

DoubleML 0.4.0
DoubleML 0.3.1
  • Initialize all numeric matrices, vectors and arrays with the correct data type by using NA_real_ instead of NA and replace a print() call with cat() #115

DoubleML 0.3.0
  • Use active bindings in the R6 OOP implementation #106 & #93

  • Fix the aggregation formula for standard errors from repeated cross-fitting #94 & #95

  • Always use the same bootstrap algorithm independent of dml1 vs dml2 and consistent with docu and paper #98 & #99

  • Initialize predictions with NA and make sure that there are no misleading entries in the evaluated score functions #96 & #105

  • Avoid overriding learner parameters during tuning #83 & #84

  • Fixes in the exception handling and extension of the unit tests for the score function choice #82

  • Prevent overwriting parameters from initialization when calling set_ml_nuisance_params #87 & #89

  • Major refactoring and cleanup and extension of the unit test framework #101

  • Extension and reorganization of exception handling for DoubleMLData objects #63 & #90

  • Introduce style guide and clean up code #80 & #81

  • Adaption to be compatible with an API change in the next mlr3 release #103

  • Run unit tests with mlr3 in dev version on github actions #104

  • Updated the citation info #78, #79 & #86

  • Added a short version of and a reference to the arXiv paper as vignette #110 & #113

  • Prevent using the subclassed methods check_score and check_data when constructing DoubleML objects #107

  • Other refactoring and minor adaptions #91, #92, #102 & #108

DoubleML 0.2.1
  • Provide an option to store & export the first-stage predictions #74

  • Reduce and refine messaging to the console during estimation #72

  • Fix bug in IIVM model if the IV variable is not named z #75

  • Fix failing unit test #71

  • Added the package logo to the doc

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 1

  • Major 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() and dml_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

  • Minor docu updates and adaptions: #58, #61 & #70

DoubleML 0.1.2
  • Adapt calls to mlr3tuning due to a change in their API (since version 0.6.0): fixes #51

  • Add bbotk to suggests: fixes R CMD check note #47

  • Use doi{} command: fixes R CMD check note #54

  • Minor docu updates as DoubleML is now available on CRAN

DoubleML 0.1.1
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.