식별에서 추정까지


9

저는 현재 인과 관계에 관한 Pearl의 작품 (Pearl, 2009, 2nd edition)을 읽고 있으며 비모수 적 모델 식별과 실제 추정 사이의 연결을 설정하기 위해 노력하고 있습니다. 불행히도 Pearl 자신은이 주제에 대해 매우 침묵합니다.

예를 들어, 인과 적 경로 와 모든 변수 , 및 영향을 미치는 혼란을 가진 간단한 모델을 염두에두고 있습니다. 또한 와 는 관찰되지 않은 영향 인 와 관련이 있습니다. do-calculus의 규칙에 따라 이제 중재 후 (분산) 확률 분포가 다음과 같이 주어진다는 것을 알고 있습니다.xzywxwzwyxyx←→y

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

이 수량을 어떻게 비모수 적으로 또는 모수 적 가정을 도입하여 추정 할 수 있는지 궁금합니다. 특히 가 여러 가지 혼란스러운 변수의 집합이고 관심의 양이 연속적인 경우에 특히 그렇습니다. 데이터의 공동 개입 전 분포를 추정하는 것은이 경우 매우 비실용적 인 것으로 보입니다. 누군가 이러한 문제를 다루는 Pearl의 방법이 적용되는지 알고 있습니까? 나는 포인터에 매우 만족할 것입니다. w


1
x와 y 모두에 영향을 미치는 관찰되지 않은 요인이 있다면 실제로 x를 무작위 화하지 않으면 이것을 추정 할 수 없다고 생각합니다. 그러나, 인과 관계에 대한 반 현실적 접근에 대해 많은 것을 알고 있지만, 나는 진주의 미적분학에 익숙하지 않습니다 (나는 여전히 그의 책을 직접 연구하고 있습니다).
Ellie

답변:


7

이것은 매우 좋은 질문입니다. 먼저 공식이 올바른지 확인하십시오. 제공 한 정보는 다음과 같은 원인 모델에 해당합니다.

여기에 이미지 설명을 입력하십시오

그리고 당신이 말했듯이 우리는 do-calculus의 규칙을 사용하여 대한 추정치를 도출 할 수 있습니다 . R에서는 패키지를 사용하여 쉽게 할 수 있습니다 . 먼저 제안하는 인과 관계 다이어그램으로 객체를 만들기 위해 로드 합니다.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-+X은 관찰되지 않은 와 혼란을 나타내고 나머지 항은 언급 한 방향을 나타냅니다.XY

그런 다음 우리는 우리의 추정을 요구합니다.

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)

실제로 당신의 공식과 일치합니다 --- 관찰자가 혼란스러운 정문의 경우.

이제 추정 부분으로갑니다. 선형성 및 정규성을 가정하면 상황이 크게 단순화됩니다. 기본적으로 원하는 것은 경로 의 계수를 추정하는 것 입니다.XZY

일부 데이터를 시뮬레이트합시다 :

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)

시뮬레이션에서 가 에 미치는 변화의 실제 원인 은 21입니다. 두 회귀 분석을 실행하여이를 추정 할 수 있습니다. 먼저 는 에 의 효과를 얻은 다음 는 에 의 효과를 얻는 것 입니다. 추정치는 두 계수의 곱이됩니다.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 

추론을 위해 제품의 (점근) 표준 오류를 계산할 수 있습니다.

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)

테스트 또는 신뢰 구간에 사용할 수있는 것 :

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

(비 / 반) 모수 추정을 수행 할 수도 있습니다. 나중에 다른 절차를 포함 하여이 답변을 업데이트하려고합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.