Skip to content

Importance Sampling (IS)

Implementation: crl.estimators.importance_sampling.ISEstimator

Assumptions

  • Sequential ignorability
  • Overlap/positivity

Requires

  • LoggedBanditDataset or TrajectoryDataset
  • behavior_action_probs for logged actions

Diagnostics to check

  • overlap.support_violations
  • ess.ess_ratio
  • weights.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)

Notebook