पहचान से लेकर अनुमान तक


10

मैं वर्तमान में पर्ल के टुकड़े (पर्ल, 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
यदि आपके पास एक्स और वाई दोनों को प्रभावित करने वाले अप्रभावित कारक हैं, तो मुझे लगता है कि आप वास्तव में एक्स को यादृच्छिक किए बिना इसका अनुमान नहीं लगा सकते हैं। लेकिन, हालाँकि मैं कार्य-कारण के प्रतिपक्षीय दृष्टिकोण के बारे में बहुत कुछ जानता हूँ, मैं पर्ल के कैलकुलस से परिचित नहीं हूँ (मैं अभी भी उनकी पुस्तक के माध्यम से काम कर रहा हूँ)।
ऐली

जवाबों:


7

यह एक बहुत अच्छा सवाल है। यदि आपका फॉर्मूला सही है, तो पहले सत्यापित करें। आपके द्वारा दी गई जानकारी निम्नलिखित कारण मॉडल से मेल खाती है:

यहाँ छवि विवरण दर्ज करें

और जैसा कि आपने कहा है कि हम इसके लिए अनुमान बढ़ा सकते हैं P(Y|do(X))do-पथरी के नियमों का उपयोग करना। आर में हम आसानी से पैकेज के साथ कर सकते हैं 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अप्रभावित कन्फ़्यूडर के प्रतिनिधित्व करते हैं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 पर Y21 है। आप दो प्रतिगमन चलाकर इसका अनुमान लगा सकते हैं। प्रथम 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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.