Dall'identificazione alla stima


9

Attualmente sto leggendo il pezzo di Pearl (Pearl, 2009, 2a edizione) sulla causalità e la lotta per stabilire il legame tra l'identificazione non parametrica di un modello e la stima effettiva. Sfortunatamente, lo stesso Pearl è molto silenzioso su questo argomento.

Per fare un esempio, ho in mente un modello semplice con un percorso causale, , e un confonditore che influenza tutte le variabili w x , w z e w y . Inoltre, x ed y sono legati da influenze non osservate, x y . Secondo le regole del do-calcolo ora so che la distribuzione di probabilità post-intervento (discreta) è data da:xzywxwzwyxyx←→y

P(ydo(x))=Σw,z[P(z|w,X)P(w)ΣX[P(y|w,X,z)P(X|w)]].

So chissà come posso stimare questa quantità (non parametricamente o introducendo ipotesi parametriche)? Soprattutto per il caso in cui è un insieme di diverse variabili confondenti e le quantità di interesse sono continue. Stimare la distribuzione congiunta pre-intervento dei dati sembra in questo caso molto poco pratica. Qualcuno conosce un'applicazione dei metodi di Pearl che affronta questi problemi? Sarei molto felice per un puntatore. w


1
Se hai fattori non osservati che influenzano sia xey, penso che non puoi stimarlo senza aver randomizzato x. Ma, anche se so molto sull'approccio controfattuale alla causalità, non ho molta familiarità con il do-calculus di Pearl (sto ancora lavorando sul suo libro da solo).
Ellie,

Risposte:


7

Questa è un'ottima domanda Per prima cosa controlliamo se la tua formula è corretta. Le informazioni fornite corrispondono al seguente modello causale:

inserisci qui la descrizione dell'immagine

E come hai detto, possiamo derivare la stima per usando le regole del calcolo. In R possiamo farlo facilmente con il pacchetto . Prima cariciamo per creare un oggetto con il diagramma causale che stai proponendo: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")

Dove i primi due termini X-+Y, Y-+Xrappresentano i confonditori non osservati di e Y e il resto dei termini rappresentano i bordi diretti che hai citato.XY

Quindi chiediamo il nostro preventivo:

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)

Che in effetti coincide con la tua formula --- un caso di porta d'ingresso con un confonditore osservato.

XZY

Simuliamo alcuni dati:

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)

XYY~Z+W+XZYZ~X+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 

E per deduzione si può calcolare l'errore standard (asintotico) del prodotto:

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)

Che è possibile utilizzare per test o intervalli di confidenza:

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

Puoi anche eseguire una stima (non / semi) parametrica, cercherò di aggiornare questa risposta includendo altre procedure in seguito.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.