Causal Calculator
G-Computation · ATE · ATT · ATU · Kontrafaktuale
© Dr. Rainer Düsing · Interactive Tools by Claude
InteraktivKausalinferenz G-Computationmarginaleffects
Das Problem — und die Lösung
Szenario: L = Vorkenntnisse der Studierenden  ·  A = freiwillige Tutorial-Teilnahme  ·  Y = Prüfungsnote
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.
Aktuell im Tool
Naiv:
G-Comp:
Wahr:
Bias:
Estimand — Für welche Population?
Average Treatment Effect — Durchschnittlicher Effekt in der Gesamtpopulation. Als ob jede Person zufällig behandelt worden wäre.
① Warum täuscht der einfache Gruppenvergleich?
② Was schätzt G-Computation für den kausalen Effekt?
G-Computation (dunkel=50% HDI, hell=95% HDI) Wahr Naiv
ⓘ Browser-Approximation via Normal-Normal-Konjugiertheit — nicht MCMC-basiert; dient der konzeptuellen Illustration von G-Computation.
Bias-Anatomie — Warum täuscht der naive Schätzer?
Pfeilbreite ∝ |Pfadstärke|  ·  Orange = Backdoor-Pfad  ·  Grün = kausaler Pfad
Zerlegung des naiven Schätzers
β̂naiv = θ  +  γY · δA∼L
Zahlengerade (ATE)
θ (ATE) Naiv
OVB =   (γY =  × δA∼L = )
③ Wie funktioniert das? — Kontrafaktuale Vorhersagen
Ŷ(1) — unter Behandlung Ŷ(0) — ohne Behandlung Rohdaten
Jede Person erhält eine modellbasierte Vorhersage unter A=1 (●) und A=0 (●). Der vertikale Abstand = individueller Behandlungseffekt. G-Computation mittelt diese Lücken über die Zielpopulation (je nach Estimand).
④ Hat die Behandlung für alle denselben Effekt?
Behandelt (A=1) Kontrolle (A=0) Mittlerer Effekt (ATE)
Jeder Punkt = individueller kausaler Effekt Ŷ(1)−Ŷ(0) nach Confounder L. Ohne Effekt-Heterogenität (ξ=0): alle Punkte auf einer Linie. Mit ξ≠0: Steigung sichtbar — Personen mit höherem L profitieren mehr. Die gefärbten Punkte zeigen die Zielpopulation des gewählten Estimands.
G-Computation
95% HDI: —
Wahrer Wert (DGP)
Datengenerierender Prozess
Naiv (unkorrigiert)
Bias: —
R-Code (brms + marginaleffects)

      
    
Methodische Hintergründe

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.

Bias Deep Dive — OVB & Heckman-Zerlegung

Das Omitted Variable Bias (OVB) Framework.
Wird nur Y ~ A geschätzt (ohne L zu kontrollieren), gilt für den OLS-Schätzer:

β̂naiv = Cov(Y, A) / Var(A)
       = θ + γ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)):

ATE = π · ATT + (1−π) · ATU

Nach algebraischer Umstellung (E[Y(0)|A=1] addieren und subtrahieren) gilt direkt:

Naiver Vergleich
E[Y(1)|A=1] − E[Y(0)|A=0] = ATE

                                 + {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.

ℹ Causal Calculator — Hilfe
Was lerne ich hier?
Das fundamentale Problem kausaler Inferenz: Wir beobachten nie denselben Menschen gleichzeitig unter Behandlung und ohne Behandlung. G-Computation löst das durch ein Outcome-Modell: Schätze Y für jede Person unter beiden Treatment-Armen — und vergleiche. Voraussetzung: No unmeasured confounding (welche Variablen nötig sind, zeigt der Golem Builder).
Was bedeutet "Confounder" hier?
L beeinflusst sowohl wer behandelt wird (L → A) als auch das Outcome (L → Y). Das erzeugt eine Scheinkorrelation. Die naive Schätzung (bloße Differenz behandelt − unbehandelt) vermischt diesen Confounder-Einfluss mit dem echten Effekt. G-Computation korrigiert das durch explizite Kontrolle von L im Outcome-Modell.
Empfohlene Schritte
ATE · ATT · ATU
Drei verschiedene Fragen an dieselben Daten:

ATE: "Was wäre der Effekt, wenn die gesamte Population zufällig behandelt würde?" — bevölkerungsweite Entscheidungen.

ATT: "Wie stark hat das Treatment denen geholfen, die es bekamen?" — Programmevaluation.

ATU: "Was würde bei Ausweitung auf Unbehandelte passieren?" — Skalierungsentscheidungen.

Ohne Effekt-Heterogenität (ξ=0) sind alle drei gleich. Mit ξ≠0 weichen sie ab — weil die Subpopulationen unterschiedliche L-Verteilungen haben (sichtbar im Effektdiagramm: orange = Behandelte, blau = Kontrollen).
G-Computation (Standardisierung)
Schritt 1: Outcome-Modell fitten — Y ~ A + L (oder Y ~ A * L mit Heterogenität).
Schritt 2: Für jeden Posterior-Sample alle Ŷ(1) und Ŷ(0) berechnen und über die Zielpopulation mitteln.
Schritt 3: Differenz Ŷ(1) − Ŷ(0) = kausaler Effekt für diesen Sample.
Ergebnis: Eine Posterior-Verteilung des ATE/ATT/ATU — sichtbar im Posterior-Panel und als individuelle Punkte im Effektdiagramm (vierte Grafik).
Verwandte Tools
Golem Builder — DAG-basierte Kausalanalyse: Welche Variablen müssen im Modell kontrolliert werden? (Backdoor-Kriterium, Collider-Warnung, Datensimulation)

brms Model Builder — brms-Formel und Priors aus dem Golem Builder in R-Code überführen