To jest bardzo dobre pytanie. Najpierw sprawdźmy, czy twoja formuła jest poprawna. Podane informacje odpowiadają następującemu modelowi przyczynowemu:
I jak powiedziałeś, możemy uzyskać oszacowanie P(Y|do(X))stosując zasady rachunku różniczkowego. W R możemy to łatwo zrobić z pakietem causaleffect
. Najpierw ładujemy, igraph
aby utworzyć obiekt z proponowanym diagramem przyczynowym:
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")
Gdzie pierwsze dwa terminy X-+Y, Y-+X
reprezentują nieobserwowane pomieszaniaX i Y a pozostałe terminy reprezentują skierowane krawędzie, o których wspomniałeś.
Następnie prosimy o nasze szacunki:
library(causaleffect)
cat(causal.effect("Y", "X", G = g, primes = TRUE, simp = T, expr = TRUE))
∑W,Z(∑X′P(Y|W,X′,Z)P(X′|W))P(Z|W,X)P(W)
Co rzeczywiście pokrywa się z twoją formułą - przypadek drzwi wejściowych z zaobserwowanym pomieszaniem.
Przejdźmy teraz do części dotyczącej szacowania. Zakładając liniowość (i normalność), rzeczy są znacznie uproszczone. Zasadniczo chcesz oszacować współczynniki ścieżkiX→Z→Y.
Symulujmy niektóre dane:
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)
Zwróć uwagę w naszej symulacji na prawdziwy przyczynowo-skutkowy efekt zmiany X na Ywynosi 21. Możesz to oszacować, uruchamiając dwie regresje. Pierwszy Y∼Z+W+X uzyskać efekt Z na Y i wtedy Z∼X+W uzyskać efekt X na Z. Twoje oszacowanie będzie iloczynem obu współczynników:
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
Aby wyciągnąć wniosek, możesz obliczyć (asymptotyczny) błąd standardowy produktu:
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)
Które możesz wykorzystać do testów lub przedziałów ufności:
c(effect - 1.96*se, effect + 1.96*se) # 95% CI
x x
19.66441 23.08811
Możesz także wykonać (nie / pół) szacowanie parametrów, postaram się zaktualizować tę odpowiedź, w tym inne procedury później.