Releases: py-why/EconML
v0.9.0b1
This is the beta for our next major release. It contains several major new features, as well as a few important breaks in backwards compatibility.
-
Introduces Cython implementations of GRF and CausalForestDML, greatly improving the performance of these estimators (#341)
-
Enables first stage nuisance estimates to be cached, allowing refitting only the final model for ortho learner subclasses (#360)
-
Enables averaging nuisance estimates over several random splits, resulting in lower variance estimates for ortho learner subclasses (#360)
-
Adds an
RScorer
class for performing model selection over different CATE estimators (#361) -
Enables getting SHAP feature importances for CATE estimates (#336, #369)
-
Major Breaking Change: restructured package organization, moving estimators to more consistent locations; for example, the
IntentToTreatDRIV
estimator is now found ateconml.iv.dr.IntentToTreatDRIV
. For the moment, we also support using the old package organization (e.g.econml.ortho_iv.IntentToTreatDRIV
), but this is deprecated and will be removed in a subsequent release (#370) -
Breaking Change: the
n_splits
initializer argument for ortho learner subclasses has been renamed tocv
to better match sklearn. For the moment, it is still possible to use the namen_splits
, but this will be removed in a future release (#362) -
Many small fixes and improvements (#337, #358, #373, #363, #365, #328)
v0.8.1
This is a bugfix release which addresses a few minor issues. The most important issues addressed are:
v0.8.0
This is a major release containing several important improvements.
- Support for python 3.8, tensorflow 2, and sklearn 0.22 and above (#210)
- Major enhancements to bootstrap inference, allowing stratified bootstrap for discrete treatments, full inference support \when using bootstrap (including things like
summary
to get nice results tables), and the ability to use pivot bootstrap (now the default) or bootstrap with a parametric normal assumption instead of percentile bootstrap (#236, #299) - Major performance improvements to our OrthoForest classes; in some of our tests the new code is ~10x faster (#316)
- Added a CausalForest implementation comparable to grf (#316)
- Added full inference support for our Forest classes using bootstrap of little bags (including things like
summary
to get a nice results table) (#316) - Added support for feature importance to ForestDML and ForestDRLearner, and sped them up substantially (#306)
- Most estimators now support
inference='auto'
by default during fitting to use a fast recommended form of inference for that estimator (#307) - Added a robust linear model (
StatsModelsRLM
) that can be used as a final stage for DML while supporting inference (#307) - Enabled grouping during cross-fitting for DML and other OrthoLearner classes (#273)
- New case study notebooks incorporating DoWhy (#255)
- Many bug fixes and small enhancements, such as enabling model serialization (#258, #248, #318, #305, #283)
Upcoming breaking changes
We have also taken this opportunity to deprecate some aspects of our existing code, and which we will remove completely in a future update to the library. You will now see a warning if you use these features.
- The DML estimators have been renamed to remove the
CateEstimator
suffix; for example, you can now use justLinearDML
instead ofLinearDMLCateEstimator
. You can continue to use the old names for now, but should move to the new names since the old ones will be removed in a future update. - The OrthoForest classes have also been renamed to make their names more similar to other classes in our package.
DiscreteTreatmentOrthoForest
is nowDROrthoForest
andContinuousTreatmentOrthoForest
is nowDMLOrthoForest
. - Arguments to
fit
other thanY
orT
should now be passed by keyword rather than positionally; previously we had encountered cases where users were passing arguments in the wrong order, which we hope this change will prevent. Again, the old usage will generate a warning and will be removed in a future update.
v0.8.0b1
v0.7.0
This is a major release, with the following important changes:
- Richer inference support, including hypothesis testing, p-values, and more when using linear models (#203)
- New estimators supporting orthogonal approaches to IV, including DML IV and DR IV (#218)
- Experimental support for using Azure Automated Machine Learning for model selection (#213)
- Allows the use of bootstrap of little bags for inference with the OrthoForest (#214)
- The CATE policy interpreter can now assign treatments to new units based on the learned policy (#228)
- Added new Jupyter notebooks illustrating how to use the library for end-to-end scenarios (#230)
- Several minor bugfixes (#220, #212, #223, #225, #226, #227, #232)
v0.7.0b1
This is the beta for our next major release, with the following important changes:
- Richer inference support, including hypothesis testing, p-values, and more when using linear models (#203)
- New estimators supporting orthogonal approaches to IV, including DML IV and DR IV (#218)
- Experimental support for using Azure Automated Machine Learning for model selection (#213)
- The ability to use bootstrap of little bags for inference with the OrthoForest (#214)
- Several minor bugfixes (#220, #212)
v0.6.1
v0.6
This release includes the following changes:
- Adds a new double ML class with a non-parametric final stage (#170)
- Adds an "honest forest" sklearn-compatible regressor, plus forest-based DML and DR CATE estimators based on it (#170)
- Adds classes to support visual interpretation of CATE estimates and policies, along with notebooks demonstrating their use (#177)
- Vastly improves the documentation (#197)
- Fixes an issue where we used more memory than necessary in a few places (#199)
v0.5
This release includes many major changes.
- Reorganized, expanded, and improved our documentation, including much better content around how to get started with the library (#159, #180)
- Enabled the user to specify which inference method to use at
fit
-time. - Made several enhancements to our Double ML implementation (#75)
- Added support for sample weights
- Added support for
statsmodels
-like inference for confidence intervals
- Introduced a more generic base class for orthogonal learners, enabling us to make our DML and DRLearner estimators more consistent with each other and setting the stage for future estimators like DMLIV (#132)
- Made several improvements to the DRLearner (#137, #167)
- Extended metalearners to handle multiple treatments (rather than only binary treatments) (#141)
- Added a debiased lasso implementation to our utilities (#138), and used that as the basis for the sparse linear DML estimator (#162)
- Enable automatic selection of appropriate models for DML (#172)
- Separated the CATE intercept from the CATE coefficients on features for DML (#174)
We have also made many improvements around the ergonomics of the library (setting better defaults, making estimators APIs more consistent, etc.), and fixed many minor bugs.
v0.4
This update provides several minor improvements:
- Adds support for controls to the
NonparametricTwoStageLeastSquares
estimator (this is a breaking change) - Fixes a few minor problems with the Deep IV implementation
- Added support for treatments and outcomes that are vectors rather than 2-D arrays
- Fixes a bug in the the
effect
method
- Enables the
BootstrapEstimator
to work in non-thread-based parallel contexts - Adds a prototype of the DMLIV estimator (this is not included in the PyPI package because it is a prototype)