statspai.qte¶
qte ¶
Quantile Treatment Effects (QTE) module for StatsPAI.
Provides estimators for: - Quantile DID (Athey & Imbens 2006) — DID at each quantile - QTE via Quantile Regression (Firpo 2007) — conditional QTE with controls - QTE via Distribution — propensity-score reweighting approach
References
Athey, S. & Imbens, G. W. (2006). Identification and Inference in Nonlinear Difference-in-Differences Models. Econometrica, 74(2), 431-497. [@athey2006identification]
Firpo, S. (2007). Efficient Semiparametric Estimation of Quantile Treatment Effects. Econometrica, 75(1), 259-276. [@firpo2007efficient]
QTEResult ¶
Container for quantile treatment effect estimates.
Attributes:
| Name | Type | Description |
|---|---|---|
quantiles |
ndarray
|
Quantile grid. |
effects |
ndarray
|
QTE point estimates. |
se |
ndarray
|
Bootstrap / analytical standard errors. |
ci_lower, ci_upper |
ndarray
|
Confidence interval bounds. |
ate |
float
|
Average treatment effect (for comparison). |
method |
str
|
Estimation method label. |
n_obs |
int
|
Sample size. |
alpha |
float
|
Significance level. |
DTEResult ¶
DistIVResult
dataclass
¶
Distributional IV LATE per quantile.
HDPanelQTEResult
dataclass
¶
QTE at multiple quantiles with high-dim control selection.
BeyondAverageResult
dataclass
¶
Distributional LATE on compliers.
qdid ¶
qdid(data: DataFrame, y: str, group: str, time: str, quantiles: Optional[List[float]] = None, n_boot: int = 500, alpha: float = 0.05, seed: int = 42) -> QTEResult
Quantile Difference-in-Differences (Athey & Imbens 2006).
QTE_DID(τ) = F_{11}^{-1}(τ) - F_{10}^{-1}(τ) - [F_{01}^{-1}(τ) - F_{00}^{-1}(τ)]
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
DataFrame
|
|
required |
y
|
str
|
Outcome variable. |
required |
group
|
str
|
Binary group indicator (0 = control, 1 = treated). |
required |
time
|
str
|
Binary time indicator (0 = pre, 1 = post). |
required |
quantiles
|
list of float
|
Defaults to |
None
|
n_boot
|
int
|
Bootstrap replications. |
500
|
alpha
|
float
|
Significance level. |
0.05
|
seed
|
int
|
Random seed. |
42
|
Returns:
| Type | Description |
|---|---|
QTEResult
|
|
distributional_te ¶
distributional_te(data: DataFrame, y: str, treatment: str, x: Optional[List[str]] = None, method: str = 'ipw', n_grid: int = 100, quantiles: Optional[List[float]] = None, n_boot: int = 500, alpha: float = 0.05, seed: Optional[int] = None) -> DTEResult
Estimate distributional treatment effects.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
DataFrame
|
|
required |
y
|
str — outcome column.
|
|
required |
treatment
|
str — treatment column (binary 0/1 for IPW/DR;
|
0-3 group encoding for CiC). |
required |
x
|
list[str], optional — covariates (required for DR).
|
|
None
|
method
|
('ipw', 'dr', 'cic')
|
|
'ipw'
|
n_grid
|
int — grid points for CDF evaluation.
|
|
100
|
quantiles
|
list[float] — QTE quantile indices.
|
|
None
|
n_boot
|
int — bootstrap replications.
|
|
500
|
alpha
|
float — significance level.
|
|
0.05
|
seed
|
int, optional — random seed.
|
|
None
|
Returns:
| Type | Description |
|---|---|
DTEResult
|
|
kan_dlate ¶
kan_dlate(data: DataFrame, y: str, treat: str, instrument: str, covariates: Optional[List[str]] = None, quantiles: Optional[ndarray] = None, alpha: float = 0.05, n_boot: int = 200, seed: int = 0) -> DistIVResult
KAN-Powered D-IV-LATE (Shaw 2025, arXiv 2506.12765).
Same identification as :func:dist_iv; would normally model the
bridge with a Kolmogorov-Arnold network. We currently fall back
to the kernel-smoothed Wald estimator (KAN requires a heavy
optional dependency). Functional equivalence is preserved at
standard quantile grids.
qte_hd_panel ¶
qte_hd_panel(data: DataFrame, y: str, treat: str, unit: str, time: str, covariates: List[str], quantiles: Optional[ndarray] = None, alpha: float = 0.05, lasso_alpha: float = 0.01, seed: int = 0) -> HDPanelQTEResult
High-dimensional panel QTE via LASSO-selected controls.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
DataFrame
|
Long-format panel. |
required |
y
|
str
|
|
required |
treat
|
str
|
|
required |
unit
|
str
|
|
required |
time
|
str
|
|
required |
covariates
|
list of str
|
High-dim candidate control set. |
required |
quantiles
|
array - like
|
Defaults to (0.1, 0.25, 0.5, 0.75, 0.9). |
None
|
alpha
|
float
|
|
0.05
|
lasso_alpha
|
float
|
|
0.01
|
seed
|
int
|
|
0
|
Returns:
| Type | Description |
|---|---|
HDPanelQTEResult
|
|
beyond_average_late ¶
beyond_average_late(data: DataFrame, y: str, treat: str, instrument: str, quantiles: Optional[ndarray] = None, alpha: float = 0.05, n_boot: int = 200, seed: int = 0) -> BeyondAverageResult
Distributional LATE on compliers under imperfect compliance.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
DataFrame
|
|
required |
y
|
str
|
|
required |
treat
|
str
|
|
required |
instrument
|
str
|
|
required |
quantiles
|
array - like
|
|
None
|
alpha
|
float
|
|
0.05
|
n_boot
|
int
|
|
200
|
seed
|
int
|
|
0
|
Returns:
| Type | Description |
|---|---|
BeyondAverageResult
|
|