Від ідентифікації до оцінки


10

Зараз я читаю твір Перла (Pearl, 2009, 2-е видання) про причинності та боротьбі за встановлення зв'язку між непараметричною ідентифікацією моделі та фактичною оцінкою. На жаль, сама Перл на цю тему дуже мовчить.

Для прикладу я маю на увазі просту модель з причинним шляхом, xzy, і конфодер, який впливає на всі змінні wx, wz і wy. На додачу,x і y пов'язані непоміченими впливами, x←→y. За правилами "числення" тепер я знаю, що розподіл ймовірностей після втручання (дискретний) задається:

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

Мені цікаво, як я можу оцінити цю кількість (непараметрично або вводячи параметричні припущення)? Особливо для випадку, колиwявляє собою сукупність декількох заплутаних змінних величин, що цікавлять, є безперервними. Оцінити спільний розподіл даних перед втручанням в цьому випадку представляється дуже недоцільним. Хтось знає застосування методів Перла, який займається цими проблемами? Я був би дуже радий вказівнику.


1
Якщо у вас є незафіксовані фактори, які впливають і на x, і на y, я думаю, ви не можете оцінити це без фактичної рандомізації x. Але, хоча я знаю досить багато про контрфактичний підхід до причинності, я не такий знайомий з пер-фактом числення (я все ще сам працюю над його книгою).
Еллі

Відповіді:


7

Це дуже гарне запитання. Спочатку давайте перевіримо, чи правильна ваша формула. Надана вами інформація відповідає наступній причинно-наслідковій моделі:

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

І як ви вже сказали, ми можемо отримати оцінку для P(Y|do(X))користуючись правилами числення. У R ми можемо легко зробити це з пакетом causaleffect. Спочатку завантажуємось igraphдля створення об'єкта за допомогою причинно-наслідкової діаграми, яку ви пропонуєте:

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представляють непомічені плутаниниX і Y а решта термінів представляють згадані вами спрямовані краї.

Тоді ми просимо нашу оцінку:

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)

Зауважте в нашому моделюванні справжній причинний ефект зміни X на Yє 21. Ви можете оцінити це, застосувавши дві регресії. Спочатку YZ+W+X щоб отримати ефект від Z на Y і потім ZX+W щоб отримати ефект від X на 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 

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.