Doubly Robust Estimation
A doubly robust estimator combines a propensity model with outcome regressions. Under regularity conditions it can consistently estimate the target if either nuisance model is correctly specified—not if both are wrong, and never without the causal identification assumptions.
Prerequisites
Complete Propensity Scores and Weighting. Know that nuisance-model correctness is distinct from exchangeability, positivity, consistency, interference, and measurement assumptions.
Learning goals
- decompose augmented inverse-probability weighting into outcome predictions and weighted residual corrections.
- state the precise “either model” robustness claim and its limits.
- diagnose overlap, nuisance fit, balance, and sensitivity rather than treating estimator branding as evidence.
The estimand and formula
For an ATE, let be the probability of treatment and the expected outcome under treatment level . Augmented inverse-probability weighting averages
The outcome contrast supplies a prediction for every unit; weighted residuals correct it using observed outcomes. Cross-fitting can reduce overfitting bias when flexible nuisance learners are used, but it does not create missing overlap or observe an omitted confounder.
Worked robustness claim and counterexample
This deterministic simulation uses a finite population with known potential outcomes so model scenarios can be checked. Such access is impossible in real observational data; it is explicitly a teaching device.
rows = [
# A, e_true, Y0, Y1
(0, 0.25, 10, 13), (1, 0.25, 12, 15),
(0, 0.75, 20, 23), (1, 0.75, 22, 25),
]
def aipw(propensity, outcome0, outcome1):
terms = []
for index, (a, e_true, y0, y1) in enumerate(rows):
y = y1 if a else y0
e = propensity[index]
m0, m1 = outcome0[index], outcome1[index]
terms.append(m1 - m0 + a * (y - m1) / e - (1 - a) * (y - m0) / (1 - e))
return sum(terms) / len(terms)
true_e = [row[1] for row in rows]
correct_m0 = [row[2] for row in rows]
correct_m1 = [row[3] for row in rows]
wrong_e = [0.40] * len(rows)
wrong_m0 = [row[2] + 2 for row in rows]
wrong_m1 = [row[3] + 2 for row in rows]
print(f"true finite-population ATE={sum(r[3] - r[2] for r in rows) / len(rows):.2f}")
print(f"correct outcome model, wrong propensity={aipw(wrong_e, correct_m0, correct_m1):.2f}")
print(f"correct propensity, wrong outcome model={aipw(true_e, wrong_m0, wrong_m1):.2f}")
print(f"both nuisance models wrong={aipw(wrong_e, wrong_m0, wrong_m1):.2f}")
In this fixture the two one-model-correct cases recover the finite-population effect, while the deliberately misspecified pair does not. This illustrates algebra, not a way to verify model correctness on real counterfactuals. With near-zero scores, even a formally robust estimator can be unstable.
Diagnostics and falsification
Declare the estimand and folds before fitting. Inspect propensity overlap, weights, effective sample size, weighted covariate balance, residual patterns, calibration, and whether predictions extrapolate outside observed treatment regions. Compare pre-specified nuisance specifications and report influence from extreme observations.
Use negative controls, alternative timing, and hidden-bias sensitivity analyses. Cross-fit flexible learners when justified, keeping all observations for one unit in the same fold and respecting clusters or time. Confidence intervals must reflect the estimator and dependence structure.
The double-robustness statement concerns two statistical nuisance models under the identification assumptions. It does not cover unmeasured confounding, treatment-version ambiguity, interference, selection into observation, or data errors. If neither nuisance model is credible or overlap is absent, “not identified from these data” remains correct.
Failure modes
- Both nuisance models share the same omitted nonlinear structure.
- Flexible models overfit because predictions and residual corrections reuse the same small sample.
- Extreme propensity scores amplify residual noise.
- Outcome missingness adds another unmodeled selection process.
- Clustered assignment or spillovers are ignored in folds and uncertainty.
Common mistakes
- Saying two models make an estimate “twice as reliable.”
- Assuming one fitted model must be correct because two were fitted.
- using post-treatment predictors in either nuisance model.
- ignoring the target population after overlap restrictions.
- reporting only a point estimate without nuisance and influence diagnostics.
Practice
Annotate every term in the AIPW formula for one treated and one untreated student. Then list one failure that double robustness covers and three identification failures it does not cover.
Next steps
Difference-in-Differences uses outcome changes and a comparison group instead of conditional exchangeability in levels, but replaces it with a parallel-trends assumption.
Primary sources
Checked 2026-10-15: Bang and Robins, “Doubly Robust Estimation”, Robins, Rotnitzky, and Zhao, semiparametric regression, and Hernán and Robins, Causal Inference: What If.