Skip to content

Causal MBRL Agent — Real-Data Demonstrations

Can CausalMBRLAgent solve real problems? We benchmark it against strong contenders — the methods a competent practitioner actually uses — across four real datasets and three regimes (confounded decisions, individual counterfactuals, off-policy evaluation), always checked against ground truth. The honest verdict is more valuable than a strawman win, and it is the headline of this page:

On real data, causal point estimates do not reliably beat strong contenders. They tie on well-behaved problems and are as fragile as everyone else on hard ones. causalrl's defensible edge is not a better number — it is the certificate that tells you when to distrust the number.

The scripts are out-of-CI (network / causaldata / obp / scikit-learn); run them yourself.

The engine

GFormulaBackdoorAgent (routed by CausalMBRLAgent(covariates=[...])) fits a per-action outcome model over all covariates and standardizes to E[Y | do(a)]; .cate(data) returns the per-unit effect (a T-learner). Numpy-ridge default (dependency-free); optional sklearn factory hook. examples/_causal_baselines.py holds the strong contenders: IPW, doubly-robust AIPW, propensity stratification, and the S-/X-learner ITE meta-learners.

Confounded decisions — vs IPW / AIPW / propensity stratification

NHEFS smoking → weight (examples/causal_mbrl_nhefs.py) — parity on well-behaved data. g-formula +3.41, IPW +3.28, AIPW +3.33, strata +3.23 kg — all agree, all clear the confounded naive +2.54, all near the textbook +3.4/+3.5. We sit in the pack of serious methods; no win claimed.

LaLonde job-training (examples/causal_mbrl_lalonde.py) — fragility on hard data. Truth (RCT) is +$1,794. Estimates scatter: g-formula +1,053, AIPW +508, IPW +231, naive −635, propensity strata −597 (wrong sign). A strong method gets the decision backwards; no point estimate is trustworthy.

Individual counterfactuals — vs the S-/T-/X-learner (examples/causal_mbrl_twins.py)

Twins carries both potential outcomes, so the per-pair effect is known exactly. Estimating individual effects is something DRL structurally cannot do — but on real, sparse, binary mortality it is near-unlearnable for the top causal methods too. PEHE (lower better): constant-ATE 0.320, ours (T-learner) 0.322, S-learner 0.320, X-learner 0.318 — every method ties with a constant at the noise floor. The population ATE (−0.025) is recoverable; the per-unit effect is not. An honest null.

Off-policy evaluation — vs IPS / SNIPS (examples/causal_mbrl_obd.py)

The Open Bandit Dataset logs a real recommender under a uniform-random policy (known propensity 1/80), so OPE is unconfounded and the top estimators are unbiased — nothing to deconfound.

  • Canonical task (random-policy value from BTS logs): IPS 0.00236, SNIPS 0.00233 vs on-policy ground truth 0.00380 — the top estimators agree and are in the ballpark, sample-limited on the 10k slice (accurate on the full dataset).
  • Controlled confounding illustration: induce outcome-selection and IPS balloons from 0.0240 to 0.0792 (3×) — the top OPE estimator is structurally fooled by confounding.
  • Certificate: a correct true-negative on the clean known-propensity logs. It cannot show its edge on OBD, because "a good item beats random" is clear-cut, not a marginal decision.

Selection bias / MNAR recsys — vs IPS / SNIPS / DR (examples/causal_mbrl_coat.py)

You only see ratings for items users chose to engage with, so the observed data is Missing Not At Random and a naive average is biased high. Coat (Schnabel et al.) ships the biased self-selected data, an unbiased randomly-assigned test set (ground truth), and the observation propensities.

method avg rating error vs truth
TRUE (MCAR test) 2.229 —
naive (biased) 2.611 +0.383
IPS 2.424 +0.195
SNIPS 2.331 +0.102
doubly-robust 2.336 +0.107

This is the suite's cleanest debiasing win: the top MNAR techniques cut ~50–75% of the selection bias, landing far closer to the truth than naive (and at parity with each other). But it hinges entirely on the propensity model — under Tan's marginal sensitivity model, propensities off by even Γ=1.3 put the debiased estimate anywhere in [2.07, 2.61], a band that still covers the naive number it was supposed to correct. The band first covers the measured truth at Γ≈1.11. The point estimate is only as trustworthy as the selection model you assume; the band is the honest part.

(Corrected 2026-08-07. The band previously reported here, [1.86, 3.15], came from a hand-rolled loop in the example that rescaled every propensity by the same Γ without self-normalising — not Tan's MSM, which lets each unit's odds move independently within [1/Γ, Γ] and takes the sharp extremum over that set. The example now calls msm_policy_value_bounds, and the correct bands are tighter.)

The certificate — the one place causal clearly earns its keep (examples/causal_mbrl_certificate.py)

On LaLonde, where every point estimate (ours and the strong contenders) is untrustworthy, certify_decision refuses to trust the naive kill-the-program decision (tips at Γ≈1.27), and the randomized experiment vindicates the refusal — the true effect is the opposite sign. No point estimator, strong or weak, gives you that honest "don't trust this." (It is conservative by design: NHEFS also ~Γ1.33.)

The honest meta-lesson

Dataset Regime Result
NHEFS confounded effect causal ties the strong contenders (well-behaved)
LaLonde confounded decision all methods fragile; a strong one gets the sign wrong
Twins individual ITE all methods tie a constant at the noise floor (unlearnable)
OBD off-policy eval top OPE unbiased on clean logs, fooled by confounding, sample-limited
Coat MNAR selection bias debiasing works (closest to truth) — but only if the propensity model is right

Point estimates — causal or strong — are reliable only when the problem is well-behaved and are fragile, noisy, or near-unlearnable on hard real data. The value causalrl adds is not a better point estimate (it usually isn't); it is the decision + certificate layer none of the contenders provide — an honest robustness score that correctly flags untrustworthy decisions (LaLonde, vindicated by the RCT). No SOTA claims. The point is that correlational RL/DRL and confident point estimators alike are structurally fooled or overconfident on hard real data, and the certificate is not.