Skip to content

Commit b7e80b9

Browse files
committed
yodate paper.md
1 parent 6d63034 commit b7e80b9

File tree

2 files changed

+80
-36
lines changed

2 files changed

+80
-36
lines changed

paper.bib

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
@misc{byambadalai2024estimatingdistributionaltreatmenteffects,
2-
title={Estimating Distributional Treatment Effects in Randomized Experiments: Machine Learning for Variance Reduction},
2+
title={Estimating Distributional Treatment Effects in Randomized Experiments: Machine Learning for Variance Reduction},
33
author={Undral Byambadalai and Tatsushi Oka and Shota Yasui},
44
year={2024},
55
eprint={2407.16037},
66
archivePrefix={arXiv},
77
primaryClass={econ.EM},
8-
url={https://arxiv.org/abs/2407.16037},
8+
url={https://arxiv.org/abs/2407.16037},
99
}
1010

1111
@book{fisher1935design,
@@ -46,4 +46,24 @@ @article{scikit-learn
4646
volume={12},
4747
pages={2825--2830},
4848
year={2011}
49-
}
49+
}
50+
51+
@misc{byambadalai2025efficientestimationdistributionaltreatment,
52+
title={On Efficient Estimation of Distributional Treatment Effects under Covariate-Adaptive Randomization},
53+
author={Undral Byambadalai and Tatsushi Oka and Shota Yasui},
54+
year={2025},
55+
eprint={2506.05945},
56+
archivePrefix={arXiv},
57+
primaryClass={econ.EM},
58+
url={https://arxiv.org/abs/2506.05945}
59+
}
60+
61+
@misc{hirata2025efficientscalableestimationdistributional,
62+
title={Efficient and Scalable Estimation of Distributional Treatment Effects with Multi-Task Neural Networks},
63+
author={Tomu Hirata and Undral Byambadalai and Tatsushi Oka and Shota Yasui},
64+
year={2025},
65+
eprint={2507.07738},
66+
archivePrefix={arXiv},
67+
primaryClass={econ.EM},
68+
url={https://arxiv.org/abs/2507.07738}
69+
}

paper.md

Lines changed: 57 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,95 @@
11
---
2-
title: 'dte_adj: A Python package for Distributional Treatment Effects'
2+
title: 'dte_adj: A Python Package for Estimating Distributional Treatment Effects in Randomized Experiments'
33
tags:
44
- Python
5-
- Distributional Treatment Effects
6-
- Variance Reduction
5+
- randomized experiments
6+
- causal inference
7+
- distributional treatment effects
8+
- machine learning
9+
- variance reduction
710
authors:
811
- name: Tomu Hirata
912
orcid: 0009-0006-3140-291X
1013
equal-contrib: true
1114
affiliation: "1, 3"
12-
- name: Undral Byambadalai
15+
- name: Undral Byambadalai
1316
corresponding: true
1417
affiliation: 1
1518
- name: Tatsushi Oka
1619
corresponding: true
1720
affiliation: "1, 2"
18-
- name: Shota Yasui
21+
- name: Shota Yasui
1922
corresponding: true
2023
affiliation: 1
2124
affiliations:
22-
- name: Cyber Agent, Inc, Japan
25+
- name: CyberAgent, Inc., Japan
2326
index: 1
2427
- name: Keio University, Japan
2528
index: 2
26-
- name: Indeed Technologies Japan, Japan
29+
- name: Databricks Japan, Japan
2730
index: 3
28-
date: 9 August 2024
31+
date: 24 August 2025
2932
bibliography: paper.bib
30-
31-
# Optional fields if submitting to a AAS journal too, see this blog post:
32-
# https://blog.joss.theoj.org/2018/12/a-new-collaboration-with-aas-publishing
33-
aas-doi: 10.3847/xxxxx
34-
aas-journal: International Conference on Machine Learning
3533
---
3634

3735
# Summary
3836

39-
`dte_adj` is a Python package for computing empirical cumulative distribution function (CDF) and distributional treatment effect (DTE) from data obtained by Randomized control tests. This package also contains a novel method to reduce variance of DTE using pre-treatment covariates introduced in `@Undral:2024`.
37+
`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.
38+
39+
# Statement of Need
40+
41+
Randomized experiments have been fundamental to scientific inquiry since the pioneering work of @Fisher:1935, 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.
42+
43+
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 R packages like `RDDtools` focus on regression discontinuity rather than randomized experiments, and lack modern machine learning integration.
44+
45+
`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.
46+
47+
# Features
48+
49+
`dte_adj` provides a comprehensive suite of tools for distributional treatment effect analysis:
50+
51+
## Estimator Classes
4052

41-
# Statement of need
53+
The package implements multiple estimator classes following a hierarchical design pattern:
4254

43-
Since the groundbreaking work by `@Fisher:1935`, randomized experiments have been essential in understanding the impact of interventions and shaping policy decisions. A widely used metric in this context is the Average Treatment Effect (ATE). However, exploring the distributional treatment effects often offers a more nuanced understanding than focusing solely on the average effects.
44-
Python is widely used in the research community recently with its flexibility and ease-of-use in the user-interface. However, there is no popular Python library for computing Distributional Treatment Effect from data obtained from randomized experiments. While scipy provides a method for computing the empirical cumulative distribution function, it lacks convenient functions for calculating DTE or for estimating the variance of the distribution.
45-
`dte_adj` was developed to fill the gap by offering the functionalities for 1) computing CDF from data, 2) calculating DTE and its confidence band based on CDF and 3) visualizing DTE. This library uses `numpy` as input and output of methods, which is widely used for matrix computation in Python. The main classes of this library also follows the interface of popular library `scikit-learn`, which makes it easy for the users with Machine Learning development experieneces.
55+
**Simple Randomization Estimators:**
56+
- `SimpleDistributionEstimator`: Basic empirical distribution function estimator for simple randomized experiments
57+
- `AdjustedDistributionEstimator`: Machine learning-enhanced estimator with regression adjustment for variance reduction
4658

47-
# Functionalities
59+
**Stratified Estimators (for Covariate-Adaptive Randomization):**
60+
- `SimpleStratifiedDistributionEstimator`: Handles stratified block randomization designs
61+
- `AdjustedStratifiedDistributionEstimator`: Combines stratification with ML-based variance reduction
4862

49-
The high level functionalities of `dte_adj` are as follows:
50-
1. Computing CDF and its variance based on number arrays
51-
2. Calculating distributional parameters and their confidence bands
52-
3. Visualiving distributional parameters and the confidence bands
63+
**Local Distribution Estimators:**
64+
- `SimpleLocalDistributionEstimator`: Estimates local distributional treatment effects (LDTE)
65+
- `AdjustedLocalDistributionEstimator`: LDTE estimation with ML adjustment for improved precision
5366

54-
It currently offers two classes to compute CDF and its variance.
55-
- `SimpleDistributionEstimator`: this class offers a standard way to compute empirical CDF
56-
- `AdjustedDistributionEstimator`: this class offers a way to compute CDF with smaller variance adjusted by pre-treatment covariates introduced in `@Undral:2024`
67+
## Core Methods
5768

58-
Both classes implement following methods to calculate distributional parameters.
59-
- `predict_dte`: method for computing Distributional Treatment Effect $DTE_{w, w'}(y) := F_{Y(w)}(y) - F_{Y(w')}(y)$, where $y$ is an outcome variable, $w$ is treatment type , and $F_{Y(w)}(y)$ is cumulative likelihood for treatment type $w$ and outcome $y$.
60-
- `predict_pte`: method for computing Probability Treatment Effect (PTE) $PTE_{w, w'}(y, h) := \left( F_{Y(w)}(y+h) - F_{Y(w)}(y) \right) - \left( F_{Y(w')}(y+h) - F_{Y(w')}(y) \right)$, where $h > 0$ is an interval of each evaluation window.
61-
- `predict_qte`: method for computing Quantile Treatment Effect (QTE) $QTE_{w, w'}(\tau) := F_{Y(w)}^{-1}(\tau) - F_{Y(w')}^{-1}(\tau)$, where $\tau$ is quantile.
69+
All estimators implement a consistent API with three primary methods:
6270

63-
Lastly, `dte_adj.plot` module can be used for visualiting the distribution parameters. The examples of the visualization are available in the figures below.
71+
- `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$.
72+
73+
- `predict_pte()`: Computes Probability Treatment Effects over specified intervals, measuring differences in probability mass between treatment groups.
74+
75+
- `predict_qte()`: Computes Quantile Treatment Effects $QTE_{w, w'}(\tau) := F_{Y(w)}^{-1}(\tau) - F_{Y(w')}^{-1}(\tau)$, comparing quantiles across treatments.
76+
77+
## Advanced Features
78+
79+
**Multi-task Learning:** The package supports multi-task neural networks (`is_multi_task=True`) for computational efficiency when analyzing many outcome locations simultaneously [@hirata2025efficientscalableestimationdistributional].
80+
81+
**Cross-fitting:** Adjusted estimators use K-fold cross-fitting to prevent overfitting in machine learning models, ensuring robust treatment effect estimates.
82+
83+
**Confidence Intervals:** Built-in bootstrap methods provide confidence intervals with multiple variance estimation approaches (`moment`, `simple`, `uniform`).
84+
85+
**Visualization:** The `dte_adj.plot` module enables easy plotting of treatment effects and confidence bands.
6486

6587
![DTE](docs/source/_static/dte_moment.png)
66-
![PTE](docs/source/_static/pte_simple.png)
88+
![PTE](docs/source/_static/pte_empirical.png)
6789
![QTE](docs/source/_static/qte.png)
6890

6991
# Acknowledgements
7092

71-
# References
93+
We thank CyberAgent, Inc. for supporting this research and the open-source community for valuable feedback during development.
94+
95+
# References

0 commit comments

Comments
 (0)