Wer mehr Vorkenntnisse hat (hohes L), meldet sich häufiger zum Tutorial an (L→A) und erzielt sowieso bessere Noten (L→Y). Das erzeugt eine Scheinkorrelation: Tutorial-Teilnehmer schneiden besser ab — aber nicht nur wegen des Tutorials, sondern weil sie schon mehr wussten.
Warum täuscht der naive Gruppenvergleich? Wer das Tutorial besucht (A=1), hat im Schnitt schon mehr Vorkenntnisse — bessere Noten kämen also zum Teil „von selbst“. Der naive Mittelwertsvergleich E[Y|A=1] − E[Y|A=0] mischt echten Tutorial-Effekt und Vorkenntnis-Vorteil: Naiver Schätzer = Kausaler Effekt + Konfundierungs-Bias. Nur in einem Experiment (RCT) wären beide Gruppen vergleichbar — in Beobachtungsstudien benötigen wir G-Computation.
G-Computation stellt für jede Person die Gegenfrage: „Was wäre die Note bei denselben Vorkenntnissen — einmal mit, einmal ohne Tutorial?" Die gemittelte Differenz ist der kausale Effekt — bereinigt um die Vorkenntnisse.
—
DGP dieses Tools.
Alle Daten werden nach folgendem Datengenerierenden Prozess simuliert:
L ~ Normal(0,1) — Confounder (z.B. Gesundheitszustand)
A | L ~ Bernoulli(σ(γ_A·L)) — Behandlung hängt von L ab
Y | A, L ~ Normal((θ + ξ·L)·A + γ_Y·L, 1) — Outcome
θ ist der wahre kausale Effekt von A auf Y. γ_A steuert wie stark L die Behandlungszuweisung beeinflusst; γ_Y wie stark L das Outcome beeinflusst. Je größer beide, desto stärker der Konfundierungs-Bias. In realen Daten sind θ, γ_A und γ_Y unbekannt; hier können wir alles einstellen.
G-Computation: voll Bayesianisch.
Das Outcome-Modell Y ~ A + L (bzw. Y ~ A·L mit Heterogenität) wird bayesianisch gefittet: flache Priors, dann K Samples aus dem Posterior. Für jeden Sample berechnen wir für jede Person "Wie hoch wäre Y unter A=1 vs. A=0?" und mitteln die Differenz über die Zielpopulation. Das Ergebnis ist eine echte Posterior-Verteilung des Estimands.
Warum unterschiedliche Populationen bei ATE, ATT, ATU?
Das Outcome-Modell gilt für alle, aber die Frage für wen wir mitteln, definiert den Estimand:
— ATE: Ŷ(1)−Ŷ(0) wird über alle n Personen gemittelt → "Was wäre der Effekt in der Gesamtpopulation?" Im Code: avg_comparisons(fit_gc, variables = "A")
— ATT: nur die n₁ tatsächlich Behandelten (A=1) → "Hat das Treatment denen geholfen, die es bekamen?" Ihre L-Werte sind systematisch höher (da Behandlung mit L zusammenhängt). Im Code: newdata = subset(dat, A==1)
— ATU: nur die n₀ Unbehandelten (A=0) → "Was würde passieren, wenn wir das Treatment ausweiten?" Im Code: newdata = subset(dat, A==0)
Ohne Effekt-Heterogenität (ξ=0) sind alle drei Werte gleich. Mit ξ≠0 divergieren sie — weil die Subpopulationen unterschiedliche L-Werte haben und der Effekt von L abhängt.
Approximation im Browser.
Zur Illustration nutzt dieses Tool die Normal-Normal-Konjugiertheit: Bei Normalverteilungs-Likelihood und Normalprior ist der Posterior analytisch berechenbar, kein MCMC nötig. Der R-Code zeigt brms mit vollständigem MCMC — das ist die empfohlene Vorgehensweise für eigene Analysen.
Effekt-Heterogenität (ξ).
Ohne Heterogenität (ξ=0): Y = θ·A + γ_Y·L + ε — der kausale Effekt θ ist für jede Person gleich, unabhängig von L. ATE = ATT = ATU = θ, und im Effektdiagramm (4. Grafik) liegen alle Punkte auf einer horizontalen Linie.
Mit ξ=0.5: Y = (θ + 0.5·L)·A + γ_Y·L + ε — Personen mit höherem L profitieren mehr. Im Effektdiagramm entsteht eine positive Steigung. Da bei positivem Konfunding die Behandelten im Schnitt höhere L-Werte haben (sie wurden häufiger behandelt), gilt: ATT > ATE > ATU. Dieselben Daten, dieselbe Methode, drei verschiedene richtige Antworten — weil drei verschiedene Populationsfragen gestellt werden.
Overlap (Positivity-Annahme).
Overlap bedeutet: Für jeden beobachteten L-Wert gibt es sowohl Behandelte als auch Unbehandelte — 0 < P(A=1|L=l) < 1. Im ersten Streudiagramm ist das sichtbar: Bei gutem Overlap mischen sich orange (A=1) und blaue (A=0) Punkte über den gesamten L-Bereich. Beim Szenario "Kein Overlap" sind die Gruppen fast vollständig getrennt — Personen mit hohem L werden fast immer behandelt.
Das ist ein Problem, weil G-Computation dann das Outcome-Modell in L-Bereiche extrapoliert, in denen keine (oder kaum) Kontrollen beobachtet wurden. Die Schätzung hängt stark vom Modell ab — sichtbar als breiterer Posterior und größere Unsicherheit.
Wann ist G-Computation unverzichtbar — und wann reicht der Regressionskoeffizient?
Im linearen Modell ohne Interaktion (Y ~ A + L) entspricht der G-Computation-ATE exakt dem Regressionskoeffizienten β̂_A: Die Linearität bewirkt, dass bedingter und marginaler Effekt übereinstimmen (ohne Konfundierung ist die G-Computation sogar identisch mit einem t-Test).
Im linearen Modell mit Interaktion (Y ~ A + L + A:L) gilt das nicht mehr allgemein: β̂_A ist nur der Effekt bei L=0, während G-Computation korrekt über die tatsächliche L-Verteilung der Zielpopulation mittelt (ATE = β̂_A + β̂_{AL}·Ē[L]). Zudem berechnet G-Computation ATT und ATU durch Einschränkung auf die jeweilige Subpopulation — das ist mit dem Koeffizienten allein nicht möglich.
Formelwahl: Y ~ A + L versus Y ~ A * L
Standard-DAGs kodieren kausale Struktur (welche Variable beeinflusst welche) — aber keine funktionale Form der Beziehungen. Ob der Effekt von A auf Y für verschiedene L-Werte unterschiedlich groß ist (Effekt-Heterogenität, A:L-Interaktion), ist eine inhaltliche Behauptung, die über den Graphen hinausgeht: „Ist es plausibel, dass L den Effekt von A moderiert?“
Im Tool wird das Outcome-Modell deshalb immer als Y ~ A * L spezifiziert — als konservativer Default, der Heterogenität zulässt ohne sie vorauszusetzen. Ob A:L tatsächlich nötig ist, lässt sich empirisch mit loo_compare(loo(fit_gc), loo(fit_add)) prüfen (s. R-Code). Fehlt Evidenz für die Interaktion, ist Y ~ A + L das sparsamere Modell. Der Golem Builder hilft zu entscheiden, ob eine Moderationsbeziehung im DAG theoretisch begründbar ist.
Entscheidend wird G-Computation bei GLMs mit nicht-linearem Link (z.B. logit bei logistischer Regression, log bei Poisson): Dort ist der Koeffizient ein bedingter Effekt auf der Link-Skala (z.B. Log-Odds-Ratio). Wegen der Nicht-Kollapsierbarkeit des logit-Links weichen bedingter und marginaler Effekt grundsätzlich voneinander ab — selbst ohne Konfundierung. G-Computation liefert den marginalen Effekt auf der Antwortskala (z.B. Risikodifferenz in Wahrscheinlichkeitspunkten), den der Koeffizient allein nicht geben kann. avg_comparisons() in marginaleffects realisiert genau das, modellklassenunabhängig.
Umfangreiche Beispiele für G-Computation mit brms für verschiedene GLMs (logistisch, Poisson, multinomial u.a.) finden sich im Blog von Solomon Kurz: Boost your power with baseline covariates.
Das Omitted Variable Bias (OVB) Framework.
Wird nur Y ~ A geschätzt (ohne L zu kontrollieren), gilt für den OLS-Schätzer:
= θ + γY · Cov(L, A) / Var(A)
= θ (wahrer Effekt) + γY · δA∼L (Konfundierungs-Bias)
δA∼L = Cov(L,A)/Var(A) ist der Steigungskoeffizient aus der Hilfsregression A ~ L — er misst, wie stark L die Behandlungszuweisung vorhersagt. Das Produkt γY · δA∼L ist der Omitted Variable Bias: er verschwindet genau dann, wenn entweder L das Outcome nicht beeinflusst (γY=0) oder L unabhängig von A ist (bestimmt durch γA) (δA∼L=0).
Vorzeichen des Bias. Im Tool können γ_A (L→A) und γ_Y (L→Y) getrennt eingestellt werden, was folgende Vorzeichenstruktur ergibt:
| L→A | L→Y | Bias = (L→Y)×(L→A) | Naiv vs. Wahr |
|---|---|---|---|
| + | + | + (Überschätzung) | Naiv größer |
| − | − | + (−×− = +) | Naiv größer (oft überraschend!) |
| + | − | − (Unterschätzung) | Naiv kleiner |
| − | + | − (Unterschätzung) | Naiv kleiner (falsches Vorzeichen möglich!) |
Merkregel: Bias > 0 wenn beide Pfade gleichsinnig sind (beide + oder beide −). Bias < 0 bei entgegengesetzten Vorzeichen. Im Tool kann man γ_A und γ_Y jetzt getrennt einstellen — bei gleichem Vorzeichen ist der Bias positiv, bei entgegengesetzten Vorzeichen negativ.
Heckman-Zerlegung: Naiver Vergleich = ATE + Selection Bias + HTEB.
Der naive Vergleich E[Y(1)|A=1] − E[Y(0)|A=0] entspricht i.d.R. nicht dem ATE (Cunningham, 2021; Morgan & Winship, 2007). Der ATE ist zunächst eine gewichtete Summe aus ATT und ATU (π = P(A=1)):
Nach algebraischer Umstellung (E[Y(0)|A=1] addieren und subtrahieren) gilt direkt:
+ {E[Y(0)|A=1] − E[Y(0)|A=0]} ← Selection Bias / Baseline Bias
+ (1−π) · (ATT − ATU) ← Heterogenous Treatment Effect Bias (HTEB)
Interpretation der Terme:
— Selection Bias / Baseline Bias = E[Y(0)|A=1] − E[Y(0)|A=0]: Wie unterscheiden sich die beiden Gruppen, wenn es von Anfang an keine Behandlung gäbe? Es ist lediglich eine Beschreibung der Unterschiede zwischen den beiden Gruppen unter der Kontrollbedingung.
— HTEB (Heterogenous Treatment Effect Bias) = (1−π)·(ATT−ATU): Entspricht dem erwarteten Unterschied im Behandlungseffekt zwischen denjenigen in der Behandlungs- und denjenigen in der Kontrollgruppe (multipliziert mit dem Anteil der Population). Entsteht wenn ξ≠0 in diesem Tool.
Wann gilt Naiv = ATE? Genau dann, wenn beide Terme verschwinden:
— Selection Bias = 0 ⟺ E[Y(0)|A=1] = E[Y(0)|A=0] ⟺ Y(0) ⊥ A (keine Baseline-Konfundierung)
— HTEB = 0 ⟺ ATT = ATU (kein Heterogenitätsproblem) oder π = 1
In einem RCT ist A zufällig zugewiesen → Y(0) ⊥ A (Selection Bias = 0) und ATT ≈ ATU (HTEB ≈ 0) → Naiv = ATE ✓
Quelle: Cunningham, S. (2021). Causal Inference: The Mixtape. Yale University Press. Frei online verfügbar — mit vielen weiteren Techniken für Kausalanalysen: IPW, Difference-in-Differences, Regression Discontinuity, Instrumental Variables u.a. Eine exzellente Einführung in die gesamte Breite kausaler Inferenzmethoden.