5. QIATEs#
The Quantile Individualized Average Treatment Effect (QIATE) was introduced in Kutz and Lechner (2025).
5.1. Definition#
Here,
denotes the IATE contrasting treatments \(d\) and \(d'\) for individual \(i\).
\(q^\alpha := \inf \{ z \in \mathbb{R} \mid F(z) \geq \alpha \}\) is the \(\alpha\)-th quantile of a cumulative distribution function \(F\) of a random variable \(Z\), such that \(F(z) = P(Z \leq z)\).
5.2. Interpretation#
The QIATE estimates the \(\alpha\)-th quantile of the IATE distribution, focusing on the part of treatment effect variation that can be explained by observed characteristics (the actionable component of heterogeneity). This enables researchers to investigate how treatment effects differ across the explainable part of the distribution.
5.3. Implementation#
The QIATE is implemented as follows:
Estimate the IATE using the mcf.
Sort the estimated \(\widehat{IATE}\) and determine their relative position or rank \(z \in [0,1]\).
For each relative position \(z_i\) estimate the QIATE as a continuous GATE. To account for uncertainty in the ranking we smooth the weights using Nadaraya–Watson kernel regression.
5.4. Example#
from mcf.example_data_functions import example_data
from mcf.mcf_main import ModifiedCausalForest
# Generate artificial data
training_df, prediction_df, name_dict = example_data(
no_treatments=2,
obs_y_d_x_iate=2000,
obs_x_iate=2000,
no_effect=False
)
mymcf = ModifiedCausalForest(
var_d_name=name_dict['d_name'],
var_y_name=name_dict['y_name'],
var_x_name_ord=name_dict['x_name_ord'],
var_x_name_unord=name_dict['x_name_unord'],
# QIATE specific parameters
p_qiate=True,
p_qiate_se=True,
p_qiate_m_mqiate=True,
p_qiate_m_opp=True,
p_qiate_no_of_quantiles=None,
p_qiate_smooth=None,
p_qiate_smooth_bandwidth=None,
p_qiate_bias_adjust=None
)
mymcf.train(training_df)
results = mymcf.predict(prediction_df)