De la identificación a la estimación

9

Actualmente estoy leyendo el artículo de Pearl (Pearl, 2009, 2ª edición) sobre causalidad y lucha para establecer el vínculo entre la identificación no paramétrica de un modelo y la estimación real. Desafortunadamente, el propio Pearl no dice nada sobre este tema.

Para dar un ejemplo, tengo en mente un modelo simple con una ruta causal, , y un factor de confusión que afecta a todas las variables , y . Además, e están relacionados por influencias no observadas, . Según las reglas del cálculo do, ahora sé que la distribución de probabilidad posterior a la intervención (discreta) viene dada por:w x w z w y x y x yxzywxwzwyXyX← →y

PAG(yreo(X))=w,z[PAG(zw,X)PAG(w)X[PAG(yw,X,z)PAG(Xw)]].

¿Me pregunto cómo puedo estimar esta cantidad (no paramétricamente o introduciendo supuestos paramétricos)? Especialmente para el caso cuando es un conjunto de varias variables de confusión y cantidades de interés son continuas. Estimar la distribución conjunta previa a la intervención de los datos parece ser muy poco práctico en este caso. ¿Alguien conoce una aplicación de los métodos de Pearl que aborde estos problemas? Estaría muy feliz por un puntero. w

PHU
fuente
1
Si tiene factores no observados que influyen tanto en x como en y, entonces creo que no puede estimar esto sin aleatorizar realmente x. Pero, aunque sé mucho sobre el enfoque contrafactual de la causalidad, no estoy tan familiarizado con el cálculo de Pearl (todavía estoy trabajando en su libro).
Ellie

Respuestas:

7

Esta es una muy buena pregunta. Primero verifiquemos si su fórmula es correcta. La información que ha proporcionado corresponde al siguiente modelo causal:

ingrese la descripción de la imagen aquí

Y como usted ha dicho, podemos derivar el estimado para usando las reglas del cálculo. En R podemos hacer eso fácilmente con el paquete . Primero cargamos para crear un objeto con el diagrama causal que está proponiendo:PAG(YEl |reo(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")

Donde los dos primeros términos X-+Y, Y-+Xrepresentan los factores de confusión no observados de e y el resto de los términos representan los bordes dirigidos que mencionó.YXY

Luego pedimos nuestro estimado:

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

W,Z(XPAG(YEl |W,X,Z)PAG(XEl |W))PAG(ZEl |W,X)PAG(W)

Lo que de hecho coincide con su fórmula: un caso de puerta frontal con un factor de confusión observado

Ahora vamos a la parte de estimación. Si asume linealidad (y normalidad), las cosas se simplifican enormemente. Básicamente lo que quiere hacer es estimar los coeficientes de la ruta .XZY

Simulemos algunos datos:

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)

Observe en nuestra simulación que el verdadero efecto causal de un cambio de en es 21. Puede estimar esto ejecutando dos regresiones. En primer lugar para obtener el efecto de sobre y para obtener el efecto de en . Su estimación será el producto de ambos coeficientes:Y Y Z + W + X Z Y Z X + W X ZXYYZ+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 

Y por inferencia, puede calcular el error estándar (asintótico) del producto:

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)

Que puede usar para pruebas o intervalos de confianza:

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

También puede realizar una estimación (no / semi) paramétrica, intentaré actualizar esta respuesta, incluidos otros procedimientos más adelante.

Carlos Cinelli
fuente