Od identyfikacji do oszacowania

10

Obecnie czytam pracę Pearl (Pearl, 2009, 2. wydanie) na temat przyczynowości i walki o ustalenie związku między nieparametryczną identyfikacją modelu a faktycznym oszacowaniem. Niestety sam Pearl milczy na ten temat.

Na przykład mam na myśli prosty model z przyczynową ścieżką, xzyoraz zamieszanie, które wpływa na wszystkie zmienne wx, wz i wy. Dodatkowo,x i y są powiązane z nieobserwowanymi wpływami, x←→y. Dzięki regułom rachunku różniczkowego wiem, że rozkład prawdopodobieństwa po interwencji (dyskretny) wynika z:

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

Wiem, zastanawiam się, jak mogę oszacować tę ilość (nieparametrycznie lub wprowadzając założenia parametryczne)? Zwłaszcza w przypadku, gdywjest zbiorem kilku mylących zmiennych, a wielkości odsetek są ciągłe. Szacowanie, że wspólny rozkład danych przed interwencją wydaje się w tym przypadku bardzo niepraktyczny. Czy ktoś zna zastosowanie metod Pearl, które rozwiązują te problemy? Byłbym bardzo szczęśliwy z powodu wskaźnika.

PHU
źródło
1
Jeśli masz niezauważone czynniki, które wpływają zarówno na x, jak i y, myślę, że nie możesz tego oszacować bez faktycznego losowania x. Ale chociaż wiem dość dużo na temat kontrfaktycznego podejścia do związku przyczynowego, nie znam się na rachunku sumienia Pearl (sam wciąż pracuję nad jego książką).
Ellie,

Odpowiedzi:

7

To jest bardzo dobre pytanie. Najpierw sprawdźmy, czy twoja formuła jest poprawna. Podane informacje odpowiadają następującemu modelowi przyczynowemu:

wprowadź opis zdjęcia tutaj

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, igraphaby 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-+Xreprezentują 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(XP(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żkiXZY.

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 YZ+W+X uzyskać efekt Z na Y i wtedy ZX+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.

Carlos Cinelli
źródło