Von der Identifizierung zur Schätzung

9

Ich lese gerade Pearl's Stück (Pearl, 2009, 2. Auflage) über Kausalität und den Kampf, um den Zusammenhang zwischen der nichtparametrischen Identifizierung eines Modells und der tatsächlichen Schätzung herzustellen. Leider schweigt Pearl selbst zu diesem Thema sehr.

Als Beispiel habe ich ein einfaches Modell mit einem Kausalpfad und einem Confounder im Sinn , der alle Variablen w x , w z und w y beeinflusst . Außerdem sind x und y durch unbeobachtete Einflüsse x y verbunden . Durch die Regeln des Do-Calculus weiß ich jetzt, dass die (diskrete) Wahrscheinlichkeitsverteilung nach der Intervention gegeben ist durch:xzywxwzwyxyx←→y

P(ydo(x))=w,z[P(zw,x)P(w)x[P(yw,x,z)P(xw)]].

Ich weiß, wie ich diese Menge schätzen kann (nicht parametrisch oder durch Einführung parametrischer Annahmen). Insbesondere für den Fall, dass eine Menge mehrerer verwirrender Variablen ist und interessierende Größen kontinuierlich sind. Die Schätzung der gemeinsamen Verteilung der Daten vor der Intervention erscheint in diesem Fall sehr unpraktisch. Kennt jemand eine Anwendung der Methoden von Pearl, die sich mit diesen Problemen befasst? Ich würde mich sehr über einen Hinweis freuen. w

PHU
quelle
1
Wenn Sie unbeobachtete Faktoren haben, die sowohl x als auch y beeinflussen, können Sie dies meiner Meinung nach nicht abschätzen, ohne x tatsächlich zufällig zu bestimmen. Aber obwohl ich ziemlich viel über den kontrafaktischen Ansatz zur Kausalität weiß, bin ich mit Perles Do-Kalkül nicht so vertraut (ich arbeite immer noch selbst an seinem Buch).
Ellie

Antworten:

7

Das ist eine sehr gute Frage. Lassen Sie uns zunächst überprüfen, ob Ihre Formel korrekt ist. Die von Ihnen angegebenen Informationen entsprechen dem folgenden Kausalmodell:

Geben Sie hier die Bildbeschreibung ein

P(Y|do(X))causaleffectigraph

library(igraph)
g <- graph.formula(X-+Y, Y-+X, X-+Z-+Y, W-+X, W-+Z, W-+Y, simplify = FALSE)
g <- set.edge.attribute(graph = g, name = "description", index = 1:2, value = "U")

X-+Y, Y-+XXY

Dann fragen wir nach unserer Schätzung:

library(causaleffect)
cat(causal.effect("Y", "X", G = g, primes = TRUE, simp = T, expr = TRUE))

W,Z(XP(Y|W,X,Z)P(X|W))P(Z|W,X)P(W)

Was in der Tat mit Ihrer Formel übereinstimmt - ein Fall von Haustür mit einem beobachteten Störfaktor.

XZY

Simulieren wir einige Daten:

set.seed(1)
n <- 1e3
u <- rnorm(n) # y -> x unobserved confounder
w <- rnorm(n)
x <- w + u + rnorm(n)
z <- 3*x + 5*w + rnorm(n)
y <- 7*z + 11*w + 13*u + rnorm(n)

XYYZ+W+XZYZX+WXZ

yz_model <- lm(y ~ z + w + x)
zx_model <- lm(z ~ x + w)

yz <- coef(yz_model)[2]
zx <- coef(zx_model)[2]
effect <- zx*yz
effect
       x 
21.37626 

Und als Schlussfolgerung können Sie den (asymptotischen) Standardfehler des Produkts berechnen:

se_yz <- coef(summary(yz_model))[2, 2]
se_zx <- coef(summary(zx_model))[2, 2]
se <- sqrt(yz^2*se_zx^2 + zx^2*se_yz^2)

Welche Sie für Tests oder Konfidenzintervalle verwenden können:

c(effect - 1.96*se, effect + 1.96*se) # 95% CI
       x        x 
19.66441 23.08811 

Sie können auch eine (nicht / halb) parametrische Schätzung durchführen. Ich werde versuchen, diese Antwort einschließlich anderer Verfahren später zu aktualisieren.

Carlos Cinelli
quelle