От идентификации к оценке

9

В настоящее время я читаю статью Перла (Pearl, 2009, 2-е издание) о причинности и борьбе за установление связи между непараметрической идентификацией модели и фактической оценкой. К сожалению, сам Перл очень молчит на эту тему.

Чтобы привести пример, я имею в виду простую модель с причинным путем, , и механизмом, влияющим на все переменные , и . Кроме того, и связаны с ненаблюдаемыми влияниями, . По правилам do-исчисления теперь я знаю, что пост-интервенционное (дискретное) распределение вероятностей определяется как:w x w z w y x y x yИксZYwxwzwyxyx←→y

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

Мне интересно, как я могу оценить эту величину (непараметрически или введя параметрические предположения)? Особенно для случая, когда представляет собой набор из нескольких смешанных переменных и представляющие интерес количества являются непрерывными. Оценка совместного распределения данных перед вмешательством представляется в этом случае очень непрактичной. Кто-нибудь знает применение методов Перла, которые занимаются этими проблемами? Я был бы очень рад за указатель. вес

PHU
источник
1
Если у вас есть ненаблюдаемые факторы, которые влияют как на x, так и на y, то я думаю, что вы не сможете оценить это без фактической рандомизации x. Но, хотя я знаю довольно много о контрфактуальном подходе к причинности, я не настолько знаком с исчислением Перла (я все еще сам прорабатываю его книгу).
Элли

Ответы:

7

Это очень хороший вопрос. Сначала давайте проверим правильность вашей формулы. Информация, которую вы предоставили, соответствует следующей причинно-следственной модели:

введите описание изображения здесь

И, как вы сказали, мы можем получить оценку для используя правила do-исчисления. В R мы можем легко сделать это с пакетом . Сначала мы загружаемся, чтобы создать объект с причинной диаграммой, которую вы предлагаете:п(Y|dо(Икс))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представляют ненаблюдаемые составители и а остальные слагаемые обозначают указанные вами ребра.YИксY

Затем мы просим нашу оценку:

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

ΣW,Z(ΣИкс'п(Y|W,Икс',Z)п(Икс'|W))п(Z|W,Икс)п(W)

Что действительно совпадает с вашей формулой - случай входной двери с наблюдаемым спутником.

Теперь перейдем к части оценки. Если вы предполагаете линейность (и нормальность), все значительно упрощается. В основном то , что вы хотите сделать , это оценить коэффициенты пути .ИксZY

Давайте смоделируем некоторые данные:

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)

Y Y Z + W + X Z Y Z X + W XИксYY~Z+W+ИксZYZ~Икс+WИксZ

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 

Вы также можете выполнить (не / полу) -параметрическую оценку, я постараюсь обновить этот ответ, включая другие процедуры позже.

Карлос Синелли
источник