Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions paper.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
@misc{byambadalai2024estimatingdistributionaltreatmenteffects,
title={Estimating Distributional Treatment Effects in Randomized Experiments: Machine Learning for Variance Reduction},
author={Undral Byambadalai and Tatsushi Oka and Shota Yasui},
year={2024},
eprint={2407.16037},
archivePrefix={arXiv},
primaryClass={econ.EM},
url={https://arxiv.org/abs/2407.16037},
}

@book{fisher1935design,
title={The Design of Experiments},
author={Fisher, Ronald A.},
year={1935},
publisher={Oliver and Boyd}
}

@ARTICLE{2020NumPy-Array,
author = {Harris, Charles R. and Millman, K. Jarrod and
van der Walt, Stéfan J and Gommers, Ralf and
Virtanen, Pauli and Cournapeau, David and
Wieser, Eric and Taylor, Julian and Berg, Sebastian and
Smith, Nathaniel J. and Kern, Robert and Picus, Matti and
Hoyer, Stephan and van Kerkwijk, Marten H. and
Brett, Matthew and Haldane, Allan and
Fernández del Río, Jaime and Wiebe, Mark and
Peterson, Pearu and Gérard-Marchant, Pierre and
Sheppard, Kevin and Reddy, Tyler and Weckesser, Warren and
Abbasi, Hameer and Gohlke, Christoph and
Oliphant, Travis E.},
title = {Array programming with {NumPy}},
journal = {Nature},
year = {2020},
volume = {585},
pages = {357–362},
Comment thread
TomeHirata marked this conversation as resolved.
Outdated
doi = {10.1038/s41586-020-2649-2}
}

@article{scikit-learn,
title={Scikit-learn: Machine Learning in {P}ython},
author={Pedregosa, F. and Varoquaux, G. and Gramfort, A. and Michel, V.
and Thirion, B. and Grisel, O. and Blondel, M. and Prettenhofer, P.
and Weiss, R. and Dubourg, V. and Vanderplas, J. and Passos, A. and
Cournapeau, D. and Brucher, M. and Perrot, M. and Duchesnay, E.},
journal={Journal of Machine Learning Research},
volume={12},
pages={2825--2830},
year={2011}
}

@inproceedings{byambadalai2025efficientestimationdistributionaltreatment,
title={On Efficient Estimation of Distributional Treatment Effects under Covariate-Adaptive Randomization},
author={Undral Byambadalai and Tomu Hirata and Tatsushi Oka and Shota Yasui},
booktitle={Proceedings of the 42nd International Conference on Machine Learning},
year={2025},
series={ICML'25},
url={https://arxiv.org/abs/2506.05945}
}

@misc{hirata2025efficientscalableestimationdistributional,
title={Efficient and Scalable Estimation of Distributional Treatment Effects with Multi-Task Neural Networks},
author={Tomu Hirata and Undral Byambadalai and Tatsushi Oka and Shota Yasui and Shunsuke Uto},
year={2025},
eprint={2507.07738},
archivePrefix={arXiv},
primaryClass={econ.EM},
url={https://arxiv.org/abs/2507.07738}
}

@misc{byambadalai2025imperfectcompliance,
title={Beyond the Average: Distributional Causal Inference under Imperfect Compliance},
author={Undral Byambadalai and Tomu Hirata and Tatsushi Oka and Shota Yasui},
year={2025},
eprint={2509.15594},
archivePrefix={arXiv},
primaryClass={econ.EM},
url={https://arxiv.org/abs/2509.15594}
}

@article{dowhy,
title={DoWhy: An End-to-End Library for Causal Inference},
author={Sharma, Amit and Kiciman, Emre},
journal={arXiv preprint arXiv:2011.04216},
year={2020},
url={https://arxiv.org/abs/2011.04216}
}

@inproceedings{econml,
title={Causal Inference and Machine Learning in Practice with {EconML} and {CausalML}: Industrial Use Cases at {Microsoft}, {TripAdvisor}, {Uber}},
author={Battocchi, Keith and Dillon, Eleanor and Hei, Maggie and Lewis, Greg and Ling, Miruna and Rao, Jing and Shyr, Dennis and Syrgkanis, Vasilis},
booktitle={Proceedings of the 27th ACM SIGKDD Conference on Knowledge Discovery \& Data Mining},
pages={4072--4073},
year={2021},
organization={ACM}
}
95 changes: 95 additions & 0 deletions paper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
---
title: 'dte_adj: A Python Package for Estimating Distributional Treatment Effects in Randomized Experiments'
tags:
- Python
- randomized experiments
- causal inference
- distributional treatment effects
- machine learning
- variance reduction
authors:
- name: Tomu Hirata
orcid: 0009-0006-3140-291X
equal-contrib: true
affiliation: "1, 3"
- name: Undral Byambadalai
corresponding: true
affiliation: 1
- name: Tatsushi Oka
corresponding: true
affiliation: "1, 2"
- name: Shota Yasui
corresponding: true
Comment thread
TomeHirata marked this conversation as resolved.
Outdated
affiliation: 1
affiliations:
- name: CyberAgent, Inc., Japan
index: 1
- name: Keio University, Japan
index: 2
- name: Databricks Japan, Japan
index: 3
date: 24 August 2025
bibliography: paper.bib
---

# Summary

`dte_adj` is a Python package designed for estimating distributional treatment effects (DTEs) in randomized experiments. Unlike traditional approaches that focus on average treatment effects, `dte_adj` enables researchers to analyze the full distributional impact of interventions across different outcome levels. The package implements machine learning-enhanced regression adjustment methods to achieve variance reduction, making distributional effect estimation more precise and computationally efficient. It supports multiple experimental designs including simple randomization, covariate-adaptive randomization (CAR), and local distributional treatment effect (LDTE) estimation. The package provides a scikit-learn compatible API and comprehensive functionality for computing distribution functions, probability treatment effects, and quantile treatment effects with confidence intervals.
Comment thread
TomeHirata marked this conversation as resolved.
Outdated

# Statement of Need

Randomized experiments (RCTs, also known as A/B tests) have been fundamental to scientific inquiry since the pioneering work of @fisher1935design, providing the gold standard for causal inference. While most experimental analyses focus on average treatment effects (ATEs), many research questions require understanding how treatments affect the entire distribution of outcomes, not just the mean. Distributional treatment effects (DTEs) capture these richer patterns, revealing heterogeneous impacts across different outcome levels that averages can mask.

Despite the growing importance of distributional analysis in fields ranging from economics to medicine, the Python ecosystem lacks comprehensive tools for DTE estimation. While SciPy provides basic empirical cumulative distribution functions, it offers no specialized functionality for treatment effect estimation, variance reduction, or confidence interval construction in experimental settings. Existing Python packages for causal inference, such as DoWhy [@dowhy] and EconML [@econml], focus primarily on average treatment effects and conditional average treatment effects (CATE), with EconML incorporating machine learning for heterogeneous treatment effect estimation. However, these packages do not address distributional treatment effects, which capture how treatments affect the entire outcome distribution rather than just the mean. Existing R packages like `RDDtools` focus on regression discontinuity rather than randomized experiments, and lack modern machine learning integration.

`dte_adj` addresses this gap by providing a comprehensive Python framework for distributional treatment effect analysis. The package implements state-of-the-art variance reduction techniques using machine learning models for regression adjustment [@byambadalai2024estimatingdistributionaltreatmenteffects], enabling more precise DTE estimates with smaller sample sizes. It supports multiple experimental designs including covariate-adaptive randomization [@byambadalai2025efficientestimationdistributionaltreatment] and local treatment effects, with a scikit-learn [@scikit-learn] compatible API that integrates seamlessly into existing machine learning workflows. This makes advanced distributional analysis accessible to the broader Python research community, supporting more nuanced causal inference in experimental studies.

# Features

`dte_adj` provides a comprehensive suite of tools for distributional treatment effect analysis:

## Estimator Classes

The package implements multiple estimator classes following a hierarchical design pattern:

**Simple Randomization Estimators:**
- `SimpleDistributionEstimator`: Basic empirical distribution function estimator for simple randomized experiments
- `AdjustedDistributionEstimator`: Machine learning-enhanced estimator with regression adjustment for variance reduction

**Stratified Estimators (for Covariate-Adaptive Randomization):**
- `SimpleStratifiedDistributionEstimator`: Handles stratified block randomization designs
- `AdjustedStratifiedDistributionEstimator`: Combines stratification with ML-based variance reduction

**Local Distribution Estimators (for Imperfect Compliance):**
- `SimpleLocalDistributionEstimator`: Estimates local distributional treatment effects (LDTE) for settings with imperfect compliance
- `AdjustedLocalDistributionEstimator`: LDTE estimation with ML adjustment for improved precision [@byambadalai2025imperfectcompliance]

## Core Methods

All estimators implement a consistent API with three primary methods:

- `predict_dte()`: Computes Distributional Treatment Effects $DTE_{w, w'}(y) := F_{Y(w)}(y) - F_{Y(w')}(y)$, where $F_{Y(w)}(y)$ represents the cumulative distribution function for treatment $w$ at outcome level $y$.

- `predict_pte()`: Computes Probability Treatment Effects over specified intervals, measuring differences in probability mass between treatment groups.

- `predict_qte()`: Computes Quantile Treatment Effects $QTE_{w, w'}(\tau) := F_{Y(w)}^{-1}(\tau) - F_{Y(w')}^{-1}(\tau)$, comparing quantiles across treatments.

## Advanced Features

**Multi-task Learning:** The package supports multi-task neural networks (`is_multi_task=True`) for computational efficiency when analyzing many outcome locations simultaneously [@hirata2025efficientscalableestimationdistributional].

**Cross-fitting:** Adjusted estimators use K-fold cross-fitting to prevent overfitting in machine learning models, ensuring robust treatment effect estimates.

**Confidence Intervals:** Built-in bootstrap methods provide confidence intervals with multiple variance estimation approaches (`moment`, `simple`, `uniform`).

**Visualization:** The `dte_adj.plot` module enables easy plotting of treatment effects and confidence bands.

![DTE](docs/source/_static/dte_moment.png)
![PTE](docs/source/_static/pte_empirical.png)
![QTE](docs/source/_static/qte.png)

# Acknowledgements

We thank CyberAgent, Inc. for supporting this research and the open-source community for valuable feedback during development.

# References
Loading