Efficient-Influence-Function (EIF) utilities for surrogate-index causal inference.
Project description
surrogate-index
Introduction
This package provides an implementation of the Surrogate Index Estimator introduced by Athey et al. (2016), a causal inference method for estimating long-term treatment effects using short-term randomized controlled trials (e.g., A/B tests).
The core idea is to combine a randomized experimental dataset with an external observational dataset to estimate the Average Treatment Effect (ATE) on a long-term outcome that is not directly observed in the experiment (e.g., annual revenue, long-term retention). This is particularly useful in settings where long-term metrics are delayed, costly, or infeasible to measure during the experiment window.
This package implements an estimator based on the Efficient Influence Function (EIF) derived by Chen & Ritzwoller (2023), leveraging the Double/Debiased Machine Learning (DML) framework of Chernozhukov et al. (2016). EIF-based estimators enable valid inference while incorporating flexible machine learning models for nuisance components, such as short-term outcome regressions and propensity scores, without compromising asymptotic efficiency or introducing first-order bias.
Brief Mathematical Background
Given the terms:
- $w\in\{0,1\}$: binary treatment indicator
- $s$: a vector of an arbitrary number of short-term outcomes (typically used as the "metrics of interest" in an A/B Test)
- $x$: a vector of pre-treatment covariates.
- $y$: long-term outcome
- $g$: binary indicator for if the user is in the observational sample ($g=1$) or the experimental sample ($g=0$)
the corresponding influence function for the ATE $\tau_0$ is as follows:
$$\xi_0(b,\tau_0,\varphi)=\frac{g}{1-\pi}\left[\frac{1-\gamma(s,x)}{\gamma(s,x)}\cdot\frac{(\varrho(s,x)-\varrho(x))(y-\nu(s,x))}{\varrho(x)(1-\varrho(x))}\right]+\frac{1-g}{1-\pi}\left[\frac{w(\nu(s,x)-\bar\nu_1(x))}{\varrho(x)}-\frac{(1-w)(\nu(s,x)-\bar\nu_0(x))}{1-\varrho(x)}+(\bar\nu_1(x)-\bar\nu_0(x))-\tau_0\right]$$
where:
- $\nu(s,x)=E[Y|S,X,G=1]$
- $\varrho(s,x)=P(W=1|S,X,G=0)$
- $\varrho(x)=P(W=1|X,G=0)$
- $\gamma(s,x)=P(G=1|S,X)$
- $\pi=P(G=1)$
- $\bar\nu_w(x)=E[\nu(S,X)|W=w, X,G=0]$
Table of Contents
Installation
# simplest
pip install surrogate-index
# with ML extras (e.g. XGBoost)
pip install "surrogate-index[ml]"
# Conda users
conda install -c conda-forge xgboost scikit-learn pandas numpy
pip install surrogate-index
Usage
from surrogate_index import efficient_influence_function
df_exp = ... # experimental sample
df_obs = ... # observational sample
results_df = efficient_influence_function(
df_exp=df_exp,
df_obs=df_obs,
y="six_month_revenue",
w="treatment",
s_cols=[...], # list of surrogate metrics
x_cols=[...], # list of covariate names
classifier=..., # e.g., GradientBoostingClassifier()
regressor=..., # e.g., XGBRegressor()
)
print(results_df)
Planned Features
- Convert structure to an Object-based one (scikit-learn style)
- Add diagnostic checks
- Add alternative estimators provided in Athey et al. 2016
- etc.
License
Distributed under the MIT License. See LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file surrogate_index-0.2.0.tar.gz.
File metadata
- Download URL: surrogate_index-0.2.0.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
05e49ef6f12b643ff74ff036d82a4455be6e1640193770aa0903b7909c297275
|
|
| MD5 |
fe8acdb374ce4d78e8089e8a107737bb
|
|
| BLAKE2b-256 |
ac0fed385d6c74d4b980c35c1649948fd8e5b17e3920510fa5cb7f6bc3d369a5
|
File details
Details for the file surrogate_index-0.2.0-py3-none-any.whl.
File metadata
- Download URL: surrogate_index-0.2.0-py3-none-any.whl
- Upload date:
- Size: 11.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be6b83a53095db729b3318f1b31a8413dc5ea12d2ccc33fda5e5df3950898213
|
|
| MD5 |
a2a9f89da2a06c80705ec1c9f6886101
|
|
| BLAKE2b-256 |
f517484cab9dbe8c987de8f69fb19c6cfdb9079f0277b6842fbece8b51f54dbb
|