THE POTENTIAL OUTCOMES

Every unit carries two numbers at once — Y(1), the outcome if treated, and Y(0), the outcome if not. Assignment reveals exactly one and hides the other forever. Causation is not something we observe; it is a comparison of one seen value against one that never happened.

source Neyman (1923, transl. Statistical Science 5(4):465–472, 1990) / Rubin, “Estimating Causal Effects of Treatments…” (1974), J. Educ. Psychol. 66:688–701 — ERIC EJ118470. No open full text; classic cited by journal + year AMBER.
Rendered, not quoted. The framework is rebuilt as a live structural causal model, not summarized.
Blue Team · builds & defends
3

THE MODEL

A finite population split into two strata. Each unit has a fixed pair of potential outcomes; nothing is random about the unit itself.

stratumshareY(0)Y(1)Y(1)−Y(0)

Individual effect τ_i = Y_i(1) − Y_i(0). Population target ATE = E[Y(1) − Y(0)]. Observed outcome obeys consistency Y = T·Y(1) + (1−T)·Y(0).

5

THE LINEAGE

This is the-counterfactual written as missing data. In Rubin’s reading, causal inference is imputation: the unseen outcome is a hole in a table, not a metaphysical mystery. It is the twin of Pearl’s do(·) operator (same target, different language) and the foundation the-propensity-score stands on — balance Y(0),Y(1) across T and the naive difference stops lying.

7

THE WITNESS

Live re-check. Recomputes the reported estimate against the known ATE. Green while the engine reports the randomized (unbiased) number; flips red the instant window 6 swaps in the confounded number under a false randomization label.

witness idle
The Machine
4

DATA IN in ↓

The population above, plus two assignment mechanisms for T:

Randomized: P(T=1) constant, T ⊥ {Y(0),Y(1)}
Confounded: P(T=1 | stratum) — high-Y(0) units treated more
↓ ↓ ↓
0

THE PANEL LIT

All numbers below are computed live from the SCM — closed form where exact, seeded sample where noted.

True ATE = E[Y(1)−Y(0)]
do(T=1)−do(T=0) on population
Randomized naive diff E[Y|T=1]−E[Y|T=0]
Confounded naive diff (same formula)
Selection bias = confounded − ATE
Decomposition ATT + baseline bias
0.80
→ confounded diff at this setting

Fundamental problem: the observed table only ever holds Y(T). The other column is null — the individual effect τ_i is never a row you can read.

↓ ↓ ↓
8

DATA OUT out ↓

Proven: randomization makes the naive difference an unbiased estimator of the ATE; confounding breaks it by a known selection term. Same arithmetic, opposite truth-value.

booting…
Red Team · attacks & breaks
1

THE ADVERSARY WALL

“You measured the effect — treated did better than controls, so the treatment works.” The wall: without randomization, E[Y|T=1]−E[Y|T=0] equals ATT plus a baseline gap E[Y(0)|T=1]−E[Y(0)|T=0]. When sicker (higher-Y(0)) units self-select into treatment, that gap can swamp — even reverse the sign of — the real effect. The number is real; its meaning is not the effect.

2

THE GRAVEYARD

“The individual causal effect can be estimated for each person.”
→ No. Only one potential outcome per unit is ever observed; τ_i is fundamentally unobservable — we recover averages, not individuals.

“Adjust for enough covariates and observational = experimental.”
→ Only under ignorability T ⊥ {Y(0),Y(1)} | X. Unmeasured confounders leave the baseline gap intact and untestable.

“A bigger sample removes the bias.”
→ Confounding bias is a property of the estimand, not the variance. N→∞ converges to the wrong number.

6

THE TAMPER

Report the confounded naive difference while labeling the study “randomized.” The headline estimate jumps to the biased value; the WITNESS (7) catches the mismatch against the known ATE.