Importance Sampling (IS)¶
Implementation: crl.estimators.importance_sampling.ISEstimator
Assumptions¶
- Sequential ignorability
- Overlap/positivity
Requires¶
LoggedBanditDatasetorTrajectoryDatasetbehavior_action_probsfor logged actions
Diagnostics to check¶
overlap.support_violationsess.ess_ratioweights.tail_fraction
Formula¶
For trajectory return $G_i$ and importance weight $w_i = \prod_t \pi(a_t|s_t) / \mu(a_t|s_t)$,
$\hat V = \frac{1}{n} \sum_{i=1}^n w_i G_i$.
Uncertainty¶
- Normal-approximation CI by default.
- Bootstrap CI available via
bootstrap=True.
Failure modes¶
- High variance with weak overlap or long horizons.
- Heavy-tailed weights can dominate the estimate.
Minimal example¶
from crl.estimators.importance_sampling import ISEstimator
report = ISEstimator(estimand, clip_rho=10.0, use_log_weights=True).estimate(dataset)
References¶
- Robins, Hernan, Brumback (2000)