Skip to main content

This package contains several methods for calculating Conditional Average Treatment Effects

Project description

Build Status PyPI version PyPI wheel Supported Python versions

EconML: A Python Package for ML-Based Heterogeneous Treatment Effects Estimation

EconML is a Python package for estimating heterogeneous treatment effects from observational data via machine learning. This package was designed and built as part of the ALICE project at Microsoft Research with the goal to combine state-of-the-art machine learning techniques with econometrics to bring automation to complex causal inference problems. The promise of EconML:

  • Implement recent techniques in the literature at the intersection of econometrics and machine learning
  • Maintain flexibility in modeling the effect heterogeneity (via techniques such as random forests, boosting, lasso and neural nets), while preserving the causal interpretation of the learned model and often offering valid confidence intervals
  • Use a unified API
  • Build on standard Python packages for Machine Learning and Data Analysis

One of the biggest promises of machine learning is to automate decision making in a multitude of domains. At the core of many data-driven personalized decision scenarios is the estimation of heterogeneous treatment effects: what is the causal effect of an intervention on an outcome of interest for a sample with a particular set of features? In a nutshell, this toolkit is designed to measure the causal effect of some treatment variable(s) T on an outcome variable Y, controlling for a set of features X, W and how does that effect vary as a function of X. The methods implemented are applicable even with observational (non-experimental or historical) datasets. For the estimation results to have a causal interpretation, some methods assume no unobserved confounders (i.e. there is no unobserved variable not included in X, W that simultaneously has an effect on both T and Y), while others assume access to an instrument Z (i.e. an observed variable Z that has an effect on the treatment T but no direct effect on the outcome Y). Most methods provide confidence intervals and inference results.

For detailed information about the package, consult the documentation at https://econml.azurewebsites.net/.

For information on use cases and background material on causal inference and heterogeneous treatment effects see our webpage at https://www.microsoft.com/en-us/research/project/econml/

Table of Contents

News

March 3, 2021: Release v0.9.1, see release notes here

Previous releases

February 20, 2021: Release v0.9.0, see release notes here

January 20, 2021: Release v0.9.0b1, see release notes here

November 20, 2020: Release v0.8.1, see release notes here

November 18, 2020: Release v0.8.0, see release notes here

September 4, 2020: Release v0.8.0b1, see release notes here

March 6, 2020: Release v0.7.0, see release notes here

February 18, 2020: Release v0.7.0b1, see release notes here

January 10, 2020: Release v0.6.1, see release notes here

December 6, 2019: Release v0.6, see release notes here

November 21, 2019: Release v0.5, see release notes here.

June 3, 2019: Release v0.4, see release notes here.

May 3, 2019: Release v0.3, see release notes here.

April 10, 2019: Release v0.2, see release notes here.

March 6, 2019: Release v0.1, welcome to have a try and provide feedback.

Getting Started

Installation

Install the latest release from PyPI:

pip install econml

To install from source, see For Developers section below.

Usage Examples

Estimation Methods

Double Machine Learning (aka RLearner) (click to expand)
  • Linear final stage
from econml.dml import LinearDML
from sklearn.linear_model import LassoCV
from econml.inference import BootstrapInference

est = LinearDML(model_y=LassoCV(), model_t=LassoCV())
### Estimate with OLS confidence intervals
est.fit(Y, T, X=X, W=W) # W -> high-dimensional confounders, X -> features
treatment_effects = est.effect(X_test)
lb, ub = est.effect_interval(X_test, alpha=0.05) # OLS confidence intervals

### Estimate with bootstrap confidence intervals
est.fit(Y, T, X=X, W=W, inference='bootstrap')  # with default bootstrap parameters
est.fit(Y, T, X=X, W=W, inference=BootstrapInference(n_bootstrap_samples=100))  # or customized
lb, ub = est.effect_interval(X_test, alpha=0.05) # Bootstrap confidence intervals
  • Sparse linear final stage
from econml.dml import SparseLinearDML
from sklearn.linear_model import LassoCV

est = SparseLinearDML(model_y=LassoCV(), model_t=LassoCV())
est.fit(Y, T, X=X, W=W) # X -> high dimensional features
treatment_effects = est.effect(X_test)
lb, ub = est.effect_interval(X_test, alpha=0.05) # Confidence intervals via debiased lasso
  • Generic Machine Learning last stage
from econml.dml import NonParamDML
from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier

est = NonParamDML(model_y=RandomForestRegressor(),
                  model_t=RandomForestClassifier(),
                  model_final=RandomForestRegressor(),
                  discrete_treatment=True)
est.fit(Y, T, X=X, W=W) 
treatment_effects = est.effect(X_test)
Causal Forests (click to expand)
from econml.dml import CausalForestDML
from sklearn.linear_model import LassoCV
# Use defaults
est = CausalForestDML()
# Or specify hyperparameters
est = CausalForestDML(criterion='het', n_estimators=500,       
                      min_samples_leaf=10, 
                      max_depth=10, max_samples=0.5,
                      discrete_treatment=False,
                      model_t=LassoCV(), model_y=LassoCV())
est.fit(Y, T, X=X, W=W)
treatment_effects = est.effect(X_test)
# Confidence intervals via Bootstrap-of-Little-Bags for forests
lb, ub = est.effect_interval(X_test, alpha=0.05)
Orthogonal Random Forests (click to expand)
from econml.orf import DMLOrthoForest, DROrthoForest
from econml.sklearn_extensions.linear_model import WeightedLasso, WeightedLassoCV
# Use defaults
est = DMLOrthoForest()
est = DROrthoForest()
# Or specify hyperparameters
est = DMLOrthoForest(n_trees=500, min_leaf_size=10,
                     max_depth=10, subsample_ratio=0.7,
                     lambda_reg=0.01,
                     discrete_treatment=False,
                     model_T=WeightedLasso(alpha=0.01), model_Y=WeightedLasso(alpha=0.01),
                     model_T_final=WeightedLassoCV(cv=3), model_Y_final=WeightedLassoCV(cv=3))
est.fit(Y, T, X=X, W=W)
treatment_effects = est.effect(X_test)
# Confidence intervals via Bootstrap-of-Little-Bags for forests
lb, ub = est.effect_interval(X_test, alpha=0.05)
Meta-Learners (click to expand)
  • XLearner
from econml.metalearners import XLearner
from sklearn.ensemble import GradientBoostingClassifier, GradientBoostingRegressor

est = XLearner(models=GradientBoostingRegressor(),
              propensity_model=GradientBoostingClassifier(),
              cate_models=GradientBoostingRegressor())
est.fit(Y, T, X=np.hstack([X, W]))
treatment_effects = est.effect(np.hstack([X_test, W_test]))

# Fit with bootstrap confidence interval construction enabled
est.fit(Y, T, X=np.hstack([X, W]), inference='bootstrap')
treatment_effects = est.effect(np.hstack([X_test, W_test]))
lb, ub = est.effect_interval(np.hstack([X_test, W_test]), alpha=0.05) # Bootstrap CIs
  • SLearner
from econml.metalearners import SLearner
from sklearn.ensemble import GradientBoostingRegressor

est = SLearner(overall_model=GradientBoostingRegressor())
est.fit(Y, T, X=np.hstack([X, W]))
treatment_effects = est.effect(np.hstack([X_test, W_test]))
  • TLearner
from econml.metalearners import TLearner
from sklearn.ensemble import GradientBoostingRegressor

est = TLearner(models=GradientBoostingRegressor())
est.fit(Y, T, X=np.hstack([X, W]))
treatment_effects = est.effect(np.hstack([X_test, W_test]))
Doubly Robust Learners (click to expand)
  • Linear final stage
from econml.dr import LinearDRLearner
from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier

est = LinearDRLearner(model_propensity=GradientBoostingClassifier(),
                      model_regression=GradientBoostingRegressor())
est.fit(Y, T, X=X, W=W)
treatment_effects = est.effect(X_test)
lb, ub = est.effect_interval(X_test, alpha=0.05)
  • Sparse linear final stage
from econml.dr import SparseLinearDRLearner
from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier

est = SparseLinearDRLearner(model_propensity=GradientBoostingClassifier(),
                            model_regression=GradientBoostingRegressor())
est.fit(Y, T, X=X, W=W)
treatment_effects = est.effect(X_test)
lb, ub = est.effect_interval(X_test, alpha=0.05)
  • Nonparametric final stage
from econml.dr import ForestDRLearner
from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier

est = ForestDRLearner(model_propensity=GradientBoostingClassifier(),
                      model_regression=GradientBoostingRegressor())
est.fit(Y, T, X=X, W=W) 
treatment_effects = est.effect(X_test)
lb, ub = est.effect_interval(X_test, alpha=0.05)
Orthogonal Instrumental Variables (click to expand)
  • Intent to Treat Doubly Robust Learner (discrete instrument, discrete treatment)
from econml.iv.dr import LinearIntentToTreatDRIV
from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier
from sklearn.linear_model import LinearRegression

est = LinearIntentToTreatDRIV(model_Y_X=GradientBoostingRegressor(),
                              model_T_XZ=GradientBoostingClassifier(),
                              flexible_model_effect=GradientBoostingRegressor())
est.fit(Y, T, Z=Z, X=X) # OLS inference by default
treatment_effects = est.effect(X_test)
lb, ub = est.effect_interval(X_test, alpha=0.05) # OLS confidence intervals
Deep Instrumental Variables (click to expand)
import keras
from econml.iv.nnet import DeepIV

treatment_model = keras.Sequential([keras.layers.Dense(128, activation='relu', input_shape=(2,)),
                                    keras.layers.Dropout(0.17),
                                    keras.layers.Dense(64, activation='relu'),
                                    keras.layers.Dropout(0.17),
                                    keras.layers.Dense(32, activation='relu'),
                                    keras.layers.Dropout(0.17)])
response_model = keras.Sequential([keras.layers.Dense(128, activation='relu', input_shape=(2,)),
                                  keras.layers.Dropout(0.17),
                                  keras.layers.Dense(64, activation='relu'),
                                  keras.layers.Dropout(0.17),
                                  keras.layers.Dense(32, activation='relu'),
                                  keras.layers.Dropout(0.17),
                                  keras.layers.Dense(1)])
est = DeepIV(n_components=10, # Number of gaussians in the mixture density networks)
             m=lambda z, x: treatment_model(keras.layers.concatenate([z, x])), # Treatment model
             h=lambda t, x: response_model(keras.layers.concatenate([t, x])), # Response model
             n_samples=1 # Number of samples used to estimate the response
             )
est.fit(Y, T, X=X, Z=Z) # Z -> instrumental variables
treatment_effects = est.effect(X_test)

See the References section for more details.

Interpretability

Tree Interpreter of the CATE model (click to expand)
from econml.cate_interpreter import SingleTreeCateInterpreter
intrp = SingleTreeCateInterpreter(include_model_uncertainty=True, max_depth=2, min_samples_leaf=10)
# We interpret the CATE model's behavior based on the features used for heterogeneity
intrp.interpret(est, X)
# Plot the tree
plt.figure(figsize=(25, 5))
intrp.plot(feature_names=['A', 'B', 'C', 'D'], fontsize=12)
plt.show()

image

Policy Interpreter of the CATE model (click to expand)
from econml.cate_interpreter import SingleTreePolicyInterpreter
# We find a tree-based treatment policy based on the CATE model
intrp = SingleTreePolicyInterpreter(risk_level=0.05, max_depth=2, min_samples_leaf=1,min_impurity_decrease=.001)
intrp.interpret(est, X, sample_treatment_costs=0.2)
# Plot the tree
plt.figure(figsize=(25, 5))
intrp.plot(feature_names=['A', 'B', 'C', 'D'], fontsize=12)
plt.show()

image

SHAP values for the CATE model (click to expand)
import shap
from econml.dml import CausalForestDML
est = CausalForestDML()
est.fit(Y, T, X=X, W=W)
shap_values = est.shap_values(X)
shap.summary_plot(shap_values['Y0']['T0'])

Causal Model Selection and Cross-Validation

Causal model selection with the `RScorer` (click to expand)
from econml.score import Rscorer

# split data in train-validation
X_train, X_val, T_train, T_val, Y_train, Y_val = train_test_split(X, T, y, test_size=.4)

# define list of CATE estimators to select among
reg = lambda: RandomForestRegressor(min_samples_leaf=20)
clf = lambda: RandomForestClassifier(min_samples_leaf=20)
models = [('ldml', LinearDML(model_y=reg(), model_t=clf(), discrete_treatment=True,
                             linear_first_stages=False, n_splits=3)),
          ('xlearner', XLearner(models=reg(), cate_models=reg(), propensity_model=clf())),
          ('dalearner', DomainAdaptationLearner(models=reg(), final_models=reg(), propensity_model=clf())),
          ('slearner', SLearner(overall_model=reg())),
          ('drlearner', DRLearner(model_propensity=clf(), model_regression=reg(),
                                  model_final=reg(), n_splits=3)),
          ('rlearner', NonParamDML(model_y=reg(), model_t=clf(), model_final=reg(),
                                   discrete_treatment=True, n_splits=3)),
          ('dml3dlasso', DML(model_y=reg(), model_t=clf(),
                             model_final=LassoCV(cv=3, fit_intercept=False),
                             discrete_treatment=True,
                             featurizer=PolynomialFeatures(degree=3),
                             linear_first_stages=False, n_splits=3))
]

# fit cate models on train data
models = [(name, mdl.fit(Y_train, T_train, X=X_train)) for name, mdl in models]

# score cate models on validation data
scorer = RScorer(model_y=reg(), model_t=clf(),
                 discrete_treatment=True, n_splits=3, mc_iters=2, mc_agg='median')
scorer.fit(Y_val, T_val, X=X_val)
rscore = [scorer.score(mdl) for _, mdl in models]
# select the best model
mdl, _ = scorer.best_model([mdl for _, mdl in models])
# create weighted ensemble model based on score performance
mdl, _ = scorer.ensemble([mdl for _, mdl in models])
First Stage Model Selection (click to expand)

First stage models can be selected either by passing in cross-validated models (e.g. sklearn.linear_model.LassoCV) to EconML's estimators or perform the first stage model selection outside of EconML and pass in the selected model. Unless selecting among a large set of hyperparameters, choosing first stage models externally is the preferred method due to statistical and computational advantages.

from econml.dml import LinearDML
from sklearn import clone
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import GridSearchCV

cv_model = GridSearchCV(
              estimator=RandomForestRegressor(),
              param_grid={
                  "max_depth": [3, None],
                  "n_estimators": (10, 30, 50, 100, 200),
                  "max_features": (2, 4, 6),
              },
              cv=5,
           )
# First stage model selection within EconML
# This is more direct, but computationally and statistically less efficient
est = LinearDML(model_y=cv_model, model_t=cv_model)
# First stage model selection ouside of EconML
# This is the most efficient, but requires boilerplate code
model_t = clone(cv_model).fit(W, T).best_estimator_
model_y = clone(cv_model).fit(W, Y).best_estimator_
est = LinearDML(model_y=model_t, model_t=model_y)

Inference

Whenever inference is enabled, then one can get a more structure InferenceResults object with more elaborate inference information, such as p-values and z-statistics. When the CATE model is linear and parametric, then a summary() method is also enabled. For instance:

from econml.dml import LinearDML
# Use defaults
est = LinearDML()
est.fit(Y, T, X=X, W=W)
# Get the effect inference summary, which includes the standard error, z test score, p value, and confidence interval given each sample X[i]
est.effect_inference(X_test).summary_frame(alpha=0.05, value=0, decimals=3)
# Get the population summary for the entire sample X
est.effect_inference(X_test).population_summary(alpha=0.1, value=0, decimals=3, tol=0.001)
#  Get the parameter inference summary for the final model
est.summary()
Example Output (click to expand)
# Get the effect inference summary, which includes the standard error, z test score, p value, and confidence interval given each sample X[i]
est.effect_inference(X_test).summary_frame(alpha=0.05, value=0, decimals=3)

image

# Get the population summary for the entire sample X
est.effect_inference(X_test).population_summary(alpha=0.1, value=0, decimals=3, tol=0.001)

image

#  Get the parameter inference summary for the final model
est.summary()

image

To see more complex examples, go to the notebooks section of the repository. For a more detailed description of the treatment effect estimation algorithms, see the EconML documentation.

For Developers

You can get started by cloning this repository. We use setuptools for building and distributing our package. We rely on some recent features of setuptools, so make sure to upgrade to a recent version with pip install setuptools --upgrade. Then from your local copy of the repository you can run python setup.py develop to get started.

Running the tests

This project uses pytest for testing. To run tests locally after installing the package, you can use python setup.py pytest.

Generating the documentation

This project's documentation is generated via Sphinx. Note that we use graphviz's dot application to produce some of the images in our documentation, so you should make sure that dot is installed and in your path.

To generate a local copy of the documentation from a clone of this repository, just run python setup.py build_sphinx -W -E -a, which will build the documentation and place it under the build/sphinx/html path.

The reStructuredText files that make up the documentation are stored in the docs directory; module documentation is automatically generated by the Sphinx build process.

Blogs and Publications

Citation

If you use EconML in your research, please cite us as follows:

Microsoft Research. EconML: A Python Package for ML-Based Heterogeneous Treatment Effects Estimation. https://github.com/microsoft/EconML, 2019. Version 0.x.

BibTex:

@misc{econml,
  author={Microsoft Research},
  title={{EconML}: {A Python Package for ML-Based Heterogeneous Treatment Effects Estimation}},
  howpublished={https://github.com/microsoft/EconML},
  note={Version 0.x},
  year={2019}
}

Contributing and Feedback

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

References

X Nie, S Wager. Quasi-Oracle Estimation of Heterogeneous Treatment Effects. Biometrika, 2020

V. Syrgkanis, V. Lei, M. Oprescu, M. Hei, K. Battocchi, G. Lewis. Machine Learning Estimation of Heterogeneous Treatment Effects with Instruments. Proceedings of the 33rd Conference on Neural Information Processing Systems (NeurIPS), 2019 (Spotlight Presentation)

D. Foster, V. Syrgkanis. Orthogonal Statistical Learning. Proceedings of the 32nd Annual Conference on Learning Theory (COLT), 2019 (Best Paper Award)

M. Oprescu, V. Syrgkanis and Z. S. Wu. Orthogonal Random Forest for Causal Inference. Proceedings of the 36th International Conference on Machine Learning (ICML), 2019.

S. Künzel, J. Sekhon, J. Bickel and B. Yu. Metalearners for estimating heterogeneous treatment effects using machine learning. Proceedings of the national academy of sciences, 116(10), 4156-4165, 2019.

S. Athey, J. Tibshirani, S. Wager. Generalized random forests. Annals of Statistics, 47, no. 2, 1148--1178, 2019.

V. Chernozhukov, D. Nekipelov, V. Semenova, V. Syrgkanis. Plug-in Regularized Estimation of High-Dimensional Parameters in Nonlinear Semiparametric Models. Arxiv preprint arxiv:1806.04823, 2018.

S. Wager, S. Athey. Estimation and Inference of Heterogeneous Treatment Effects using Random Forests. Journal of the American Statistical Association, 113:523, 1228-1242, 2018.

Jason Hartford, Greg Lewis, Kevin Leyton-Brown, and Matt Taddy. Deep IV: A flexible approach for counterfactual prediction. Proceedings of the 34th International Conference on Machine Learning, ICML'17, 2017.

V. Chernozhukov, D. Chetverikov, M. Demirer, E. Duflo, C. Hansen, and a. W. Newey. Double Machine Learning for Treatment and Causal Parameters. ArXiv preprint arXiv:1608.00060, 2016.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

econml-0.9.1.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

econml-0.9.1-cp38-cp38-win_amd64.whl (803.2 kB view details)

Uploaded CPython 3.8 Windows x86-64

econml-0.9.1-cp38-cp38-win32.whl (714.4 kB view details)

Uploaded CPython 3.8 Windows x86

econml-0.9.1-cp38-cp38-manylinux2010_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

econml-0.9.1-cp38-cp38-manylinux2010_i686.whl (2.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686

econml-0.9.1-cp38-cp38-manylinux1_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.8

econml-0.9.1-cp38-cp38-manylinux1_i686.whl (2.8 MB view details)

Uploaded CPython 3.8

econml-0.9.1-cp38-cp38-macosx_10_9_x86_64.whl (811.1 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

econml-0.9.1-cp37-cp37m-win_amd64.whl (794.8 kB view details)

Uploaded CPython 3.7m Windows x86-64

econml-0.9.1-cp37-cp37m-win32.whl (706.3 kB view details)

Uploaded CPython 3.7m Windows x86

econml-0.9.1-cp37-cp37m-manylinux2010_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

econml-0.9.1-cp37-cp37m-manylinux2010_i686.whl (2.5 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686

econml-0.9.1-cp37-cp37m-manylinux1_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.7m

econml-0.9.1-cp37-cp37m-manylinux1_i686.whl (2.5 MB view details)

Uploaded CPython 3.7m

econml-0.9.1-cp37-cp37m-macosx_10_9_x86_64.whl (812.2 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

econml-0.9.1-cp36-cp36m-win_amd64.whl (794.2 kB view details)

Uploaded CPython 3.6m Windows x86-64

econml-0.9.1-cp36-cp36m-win32.whl (706.2 kB view details)

Uploaded CPython 3.6m Windows x86

econml-0.9.1-cp36-cp36m-manylinux2010_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

econml-0.9.1-cp36-cp36m-manylinux2010_i686.whl (2.5 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ i686

econml-0.9.1-cp36-cp36m-manylinux1_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.6m

econml-0.9.1-cp36-cp36m-manylinux1_i686.whl (2.5 MB view details)

Uploaded CPython 3.6m

econml-0.9.1-cp36-cp36m-macosx_10_9_x86_64.whl (815.4 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

Details for the file econml-0.9.1.tar.gz.

File metadata

  • Download URL: econml-0.9.1.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1.tar.gz
Algorithm Hash digest
SHA256 5b4d437d504b016807870d304dcb70ad8f78e77718bb8ceed86cac9511b20d4f
MD5 f23c731e5fa986a85268f4c9a7626715
BLAKE2b-256 ef2cc262ae40bde6709bacc0fd97a522658bdf5f6110c091fe64be0aef0df486

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: econml-0.9.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 803.2 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 6963f5472e6afcf1d4193b1878ec384c6c6f318be7f0c8120b348a43d2f95079
MD5 6a8c4a835c438f5a52901cb0d20c36b7
BLAKE2b-256 7e27657faea3d05714559a3cb451c75d58b262050a0cce27395831937ca4933a

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp38-cp38-win32.whl.

File metadata

  • Download URL: econml-0.9.1-cp38-cp38-win32.whl
  • Upload date:
  • Size: 714.4 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 b8aa3017c9201a1ca018b7c2d636518a0ead854829c2e3e77f922e19bbbfe6aa
MD5 69ba7c7f7b0a646c17a2d3e4a3064718
BLAKE2b-256 dfc38897ed6be09b78b10877269b41531d708385ed9d2c08cfca0a62b070b279

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp38-cp38-manylinux2010_x86_64.whl.

File metadata

  • Download URL: econml-0.9.1-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 b9e8087c7e82a3f8111fdb66407db54d8e5913fcf962bba4cee3b58a1391088b
MD5 8e69a7dae4692a17b495ea26bb014c8a
BLAKE2b-256 90b06962ea4c6ec82968b08158229c01c08876ee188fa4ccf33abd35b83259c0

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp38-cp38-manylinux2010_i686.whl.

File metadata

  • Download URL: econml-0.9.1-cp38-cp38-manylinux2010_i686.whl
  • Upload date:
  • Size: 2.8 MB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp38-cp38-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 ea90f772c0f9652c00ec6ce515f2b5e6335b067008a29b95b7aad9114418dd00
MD5 4fe5871f254c3c5a1d41497124cddfba
BLAKE2b-256 3d63b8cc41e8bb202d3ccdcc72a77184339ee8427f9a6107a690468073a01eb2

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: econml-0.9.1-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1c0576ca3b568bb177539706029221177874dad2018c78027affb912b1d13c56
MD5 9f56231d5ca0b6f5af1db279bd364145
BLAKE2b-256 dddf966abd4881c8dbe504e1927116f40eff4886fe2c8e414b05f07a60ba613b

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp38-cp38-manylinux1_i686.whl.

File metadata

  • Download URL: econml-0.9.1-cp38-cp38-manylinux1_i686.whl
  • Upload date:
  • Size: 2.8 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp38-cp38-manylinux1_i686.whl
Algorithm Hash digest
SHA256 bdb4065423d4d482fc521dc7719a20ac5c78cda0bf1300b8d45ac89d4f61536e
MD5 84045e4c79719632e808b8338e067fdf
BLAKE2b-256 ac22a9d09b6f59633aca89bd061767b66fdd641fbfdd9e163a97e32a918ad02f

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: econml-0.9.1-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 811.1 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 83ed4a2be4aff203f581b7c91171c6baeafdf1fb6964cac999e46be349d70287
MD5 e7f7d955b6e7709819f87947081376b2
BLAKE2b-256 bb9f74e917c2e7909dc78518f60c5ea3aedb84bb12ff3179db9242926a9bdaa4

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: econml-0.9.1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 794.8 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 5c5166ccbfdedbd1d38c962071eb29f9d88530108d802bd3caffb4e73d19681c
MD5 8afcbcccd238762eefb92a59ce43ecaf
BLAKE2b-256 089e7b8b7fbed19aaba396c3e97a822a6c38fba112d36f0074c0304934754334

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp37-cp37m-win32.whl.

File metadata

  • Download URL: econml-0.9.1-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 706.3 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 2df37bb6f9904f453a7a07a758c207d9fd52bb59325d8a1cd5a7de891bf7ff5a
MD5 0d3d75019d1f8a9e90570f4d6cdb7f82
BLAKE2b-256 4c6ecc026629e2b62c23df9194a0111d920c736158a8de0a9c820d9a09edc1c5

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp37-cp37m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: econml-0.9.1-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 2b14545f41811b700bb01cd9be16817a5b84509f2116d9d1f55a654b42993928
MD5 5926e70d885cb7cc93e5c538cf6410af
BLAKE2b-256 6308895de998c897f7ce6fadb9dc3752101f39d0d884b2f529357b95d2e87c92

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp37-cp37m-manylinux2010_i686.whl.

File metadata

  • Download URL: econml-0.9.1-cp37-cp37m-manylinux2010_i686.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp37-cp37m-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 4ddaa8baba02430208081f19f369ba1ccb268012a4e759691b2fdb96cd998e3d
MD5 f953ae5c369941c286a907244b4629e9
BLAKE2b-256 4e5c12390432fba35d8e8af9efaf2fcefea327b1e8a052bf6435681e16e98c26

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: econml-0.9.1-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 fb6ec312cb4d7a519ebc9d8e2d46bfb54dc90b5891c587d8917baaedcc1087e8
MD5 c3648f755d473e086fb7b549196435ef
BLAKE2b-256 5d542677a6bb8f94b16ac028ca8a8d24df24bc2d3091d126e9543d7126053374

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp37-cp37m-manylinux1_i686.whl.

File metadata

  • Download URL: econml-0.9.1-cp37-cp37m-manylinux1_i686.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp37-cp37m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 44ca2e885717df2d145acfe3f79f458d8e23c484848236a9824af17c5ff76513
MD5 4bed27e572b7d5ffe170afaddac97c22
BLAKE2b-256 cef3592f33a00dd51d9ee8dfbf617056ec5a84f36ac9f002c197e85c4eb4b6ad

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: econml-0.9.1-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 812.2 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 27e1c62c770b2f42e80229bb7e34d394ac0ab842ee92faf00d6207beaa2222a1
MD5 3669b992555c192b13d67dc866709f03
BLAKE2b-256 7380dd75fc9260936a4788b6adfdf2474930c41a553ccad7bf961bb27500ab3e

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: econml-0.9.1-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 794.2 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 21a1eadd61605e3a80fbb592968b46f21e47b91589af6ac026dca1c3130d884e
MD5 891de22ec90a1084e605850284611a31
BLAKE2b-256 83cdb2063b4a4ec1b9d50b45784633aaaa8e79fcda707df1d439b814aaa5228a

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp36-cp36m-win32.whl.

File metadata

  • Download URL: econml-0.9.1-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 706.2 kB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 c3132c474f5bbd5a3a4b9e903a3e59a5ad663248c8c4a596158306d3e4ce8196
MD5 c3f2833101bc834187a6354cd8dc20d2
BLAKE2b-256 300ef61f06d585c40f10250df25b51817039f7fbdcec2a147f1768c2dc3edc07

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp36-cp36m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: econml-0.9.1-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 b69685bf1e405221c50e8a74647448ab4416637c6194491909860756a00d4dd1
MD5 6e41ac34892fe8132efc13571fcd8a37
BLAKE2b-256 a18da2aa56282c344809ad4f707e0594bc543d71560b0983abf8cc77fc8b8ae1

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp36-cp36m-manylinux2010_i686.whl.

File metadata

  • Download URL: econml-0.9.1-cp36-cp36m-manylinux2010_i686.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp36-cp36m-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 e9dd0a5592430d9ba02bdd97751a44f5b8bd99d57c4829a0866687005a9c1588
MD5 da07184317c942727f01be99d8f69d59
BLAKE2b-256 39a5bc37615d7fb2ec233ef006434633e99009a5da42cd7d83114e542b1b8aae

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: econml-0.9.1-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8e8678d6cebd6eb2cae61c275b168ea75392a820611481db59085c6cd6117f3f
MD5 8587605fe67587b230398cbb2c1efb23
BLAKE2b-256 ef3cdea22f03bbf48b9b5755ba3bb2b48b8b81f63c27e5e07e76a19b290bcde1

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp36-cp36m-manylinux1_i686.whl.

File metadata

  • Download URL: econml-0.9.1-cp36-cp36m-manylinux1_i686.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 8a2df900f1eafd8dad3ac663adab16509c7b321fb641abecfc536c329c6fcfd1
MD5 b2faca207c59aec1693c1b31ccc2fcf2
BLAKE2b-256 16425dae430c0789cca3f3895b41008d102853584f572ddfb32c0320979adefe

See more details on using hashes here.

File details

Details for the file econml-0.9.1-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: econml-0.9.1-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 815.4 kB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.6.6

File hashes

Hashes for econml-0.9.1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 56e050eb786e7b857933d7a01f599376a9ffd3d97de80fe88b0f23c19d078c0b
MD5 ade1826ab09197371fdaad2ee7de4cd4
BLAKE2b-256 af97285535bc46bab1363173cfb319c8c33f7950aa9942e3e9f634b7798164a9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page