Weighted Importance Sampling (WIS)¶
Implementation: crl.estimators.importance_sampling.WISEstimator
Assumptions¶
- Sequential ignorability
- Overlap/positivity
Requires¶
LoggedBanditDatasetorTrajectoryDatasetbehavior_action_probsfor logged actions
Diagnostics to check¶
overlap.support_violationsess.ess_ratioweights.tail_fraction
Formula¶
Self-normalized IS:
$\hat V = \frac{\sum_i w_i G_i}{\sum_i w_i}$.
Uncertainty¶
- Normal-approximation CI by default.
- Bootstrap CI available via
bootstrap=True.
Failure modes¶
- Bias from normalization in small samples.
- Heavy-tailed ratios can still dominate variance.
Minimal example¶
from crl.estimators.importance_sampling import WISEstimator
report = WISEstimator(estimand, clip_rho=10.0).estimate(dataset)
References¶
- Swaminathan & Joachims (2015)