Tanımlamadan Kestirime


10

Şu anda Pearl'ün nedensellik ve bir modelin parametrik olmayan kimliği ile gerçek tahmin arasındaki bağlantıyı kurmak için mücadele konusundaki makalesini (Pearl, 2009, 2. baskı) okuyorum. Ne yazık ki, Pearl'ün kendisi bu konuda çok sessiz.

Örnek vermek gerekirse, nedensel bir yolla aklıma gelen basit bir modelim var, xzyve tüm değişkenleri etkileyen bir karışıklık wx, ve . Ayrıca, ve , gözlemlenmeyen etkilerle, ile ilişkilidir . Do-calculus kurallarına göre artık müdahale sonrası (ayrık) olasılık dağılımının aşağıdakiler tarafından verildiğini biliyorum:wzwyxyx←→y

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

Bu miktarı nasıl tahmin edebileceğimi merak ediyorum (parametrik olmayan veya parametrik varsayımlar getirerek)? Özellikle dewbirkaç karıştırıcı değişken kümesidir ve ilgi miktarları süreklidir. Müdahalenin ortak müdahale öncesi tahmininin bu durumda çok pratik olmadığı görülmektedir. Birisi bu problemlerle ilgilenen Pearl yöntemlerinin bir uygulamasını biliyor mu? İşaretçi için çok mutlu olurum.


1
Hem x hem de y'yi etkileyen gözlemlenmemiş faktörleriniz varsa, o zaman x'i gerçekten randomize etmeden bunu tahmin edemeyeceğinizi düşünüyorum. Ancak, nedenselliğe karşı olgusal yaklaşım hakkında çok şey bilmeme rağmen, Pearl'ün hesaplamasına aşina değilim (hala kitabında kendim çalışıyorum).
Ellie

Yanıtlar:


7

Bu çok iyi bir soru. İlk önce formülünüzün doğru olup olmadığını kontrol edelim. Verdiğiniz bilgiler aşağıdaki nedensel modele karşılık gelir:

resim açıklamasını buraya girin

Ve dediğin gibi, tahminini türetebiliriz P(Y|dÖ(X))kalkülüs kurallarını kullanarak. R'de bunu paketle kolayca yapabiliriz causaleffect. İlk olarak igraph, teklif ettiğiniz nedensel diyagramla bir nesne oluşturmak için yüklüyoruz :

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")

İlk iki terimin X-+Y, Y-+X,X ve Y ve terimlerin geri kalanı, bahsettiğiniz yönlendirilmiş kenarları temsil eder.

Sonra tahminimizi isteriz:

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)

Bu gerçekten formülünüzle çakışıyor --- gözlenen bir karışıklığa sahip bir ön kapı örneği.

Şimdi tahmin kısmına gidelim. Doğrusallığı (ve normalliği) varsayarsanız, işler büyük ölçüde basitleştirilmiştir. Temel olarak yapmak istediğiniz yolun katsayılarını tahmin etmektirXZY.

Bazı verileri simüle edelim:

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)

Simülasyonumuzda bir değişikliğin gerçek nedensel etkisine dikkat edin X üzerinde YBunu iki regresyon çalıştırarak tahmin edebilirsiniz. İlk Y~Z+W+X etkisini elde etmek Z üzerinde Y ve sonra Z~X+W etkisini elde etmek X üzerinde Z. Tahmininiz her iki katsayının da ürünü olacaktır:

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 

Çıkarım için ürünün (asimtotik) standart hatasını hesaplayabilirsiniz:

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)

Testler veya güven aralıkları için kullanabileceğiniz:

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

Ayrıca (non / semi) -parametrik tahmin yapabilirsiniz, daha sonra diğer prosedürler de dahil olmak üzere bu cevabı güncellemeye çalışacağım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.