मैं पूर्व और संभावना से एक पश्च घनत्व घनत्व की गणना कैसे कर सकता हूं?


9

मैं यह समझने की कोशिश कर रहा हूं कि एक पश्च की गणना करने के लिए बेयस प्रमेय का उपयोग कैसे किया जाए लेकिन कम्प्यूटेशनल दृष्टिकोण के साथ फंस रहा हूं, उदाहरण के लिए, निम्नलिखित मामले में यह मेरे लिए स्पष्ट नहीं है कि पूर्व और संभावना के उत्पाद को कैसे लिया जाए और फिर गणना करें। पीछे:

इस उदाहरण के लिए, मैं के बाद की संभावना की गणना में दिलचस्पी है μऔर मैं से पहले एक सामान्य मानक का उपयोग करता हूं , लेकिन मैं यह जानना चाहता हूं कि पूर्ववर्ती से पीछे के भाग की गणना कैसे की जाए जो कि प्रतिनिधित्व करता है एक MCMC श्रृंखला, इसलिए मैं अपने शुरुआती बिंदु के रूप में 1000 नमूनों का उपयोग करूंगा।μ पी(μ)~एन(μ=0,σ=1)μ

  • पूर्व से नमूना 1000।

    set.seed(0)
    prior.mu      <- 0
    prior.sigma   <- 1
    prior.samples <- sort(rnorm(1000, prior.mu, prior.sigma))
    
  • कुछ अवलोकन करें:

    observations <- c(0.4, 0.5, 0.8, 0.1)
    
  • और संभावना की गणना करें, उदाहरण के लिए :पी(y|μ,σ)

    likelihood <- prod(dnorm(observations, mean(prior.samplse), sd(prior.samples)))
    

जो मुझे समझ में नहीं आता है वह है:

  1. कब / कैसे संभावना से पहले गुणा करना है?
  2. कब / कैसे पीछे के घनत्व को सामान्य करने के लिए?

कृपया ध्यान दें: मैं सामान्य कम्प्यूटेशनल समाधान में रुचि रखता हूं जो बिना किसी विश्लेषणात्मक समाधान के सामान्यीकरण योग्य समस्याएं हो सकती हैं


1
यह स्पष्ट नहीं है कि आपके उदाहरण में विभिन्न वितरण क्या हैं। कृपया स्पष्ट करें कि आपके पूर्व / सशर्त वितरण क्या हैं। क्योंकि यह हो सकता है कि आपके पास कुछ शब्दावली हो।
निक सब्बे

@ आप सही हैं। धन्यवाद प्रतिक्रिया देना के लिए। मैंने स्पष्ट करने का प्रयास किया है।
अबे

जवाबों:


8

आपके पास कई चीजें मिश्रित हैं। सिद्धांत पूर्व वितरण और संभावना को गुणा करने के बारे में बात करता है, पूर्व वितरण से नमूने नहीं। इसके अलावा यह स्पष्ट नहीं है कि आपके पास क्या है, क्या यह किसी चीज के माध्यम से पूर्व है? या कुछ और?

फिर आपके पास संभावना में उलट चीजें हैं, आपकी टिप्पणियों को एक्स या तो ड्रॉ या ज्ञात स्थिरांक के साथ माध्य और मानक विचलन के रूप में x होना चाहिए। और तब भी यह वास्तव में x और समान माध्य और मानक विचलन के रूप में आपकी प्रत्येक टिप्पणियों के साथ 4 कॉल का उत्पाद होगा।

वास्तव में कोई स्पष्ट नहीं है कि आप क्या करने की कोशिश कर रहे हैं। क्या पूछते हैं? आप किन मापदंडों में रुचि रखते हैं? उन मापदंडों पर आपके पास क्या है? क्या अन्य पैरामीटर हैं? क्या आपके पास उनके लिए पुजारी या निश्चित मूल्य हैं?

चीजों के बारे में जाने की कोशिश करना जिस तरह से आप वर्तमान में कर रहे हैं वह केवल आपको और अधिक भ्रमित करेगा जब तक आप ठीक से काम नहीं करते हैं कि आपका सवाल क्या है और वहां से काम करें।

मूल प्रश्न के संपादन के बाद नीचे जोड़ा गया है।

आप अभी भी कुछ टुकड़ों को याद कर रहे हैं, और शायद सब कुछ समझ में नहीं आ रहा है, लेकिन हम उस जगह से शुरू कर सकते हैं जहां आप हैं।

मुझे लगता है कि आप कुछ अवधारणाओं को भ्रमित कर रहे हैं। ऐसी संभावना है कि डेटा और मापदंडों के बीच के संबंध को दर्शाता है, आप सामान्य का उपयोग कर रहे हैं जिसमें 2 पैरामीटर हैं, मतलब और मानक विचलन (या विचरण, या सटीक)। फिर मापदंडों पर पूर्व वितरण होता है, आपने माध्य 0 और एसडी 1 के साथ एक सामान्य पूर्व निर्दिष्ट किया है, लेकिन यह मतलब और मानक विचलन पूरी तरह से माध्य और मानक विचलन से अलग है। पूर्ण होने के लिए आपको या तो संभावना जानने की आवश्यकता है SD या संभावना पर एक पूर्व लगाएं SD, सादगी के लिए (लेकिन कम वास्तविक) मुझे लगता है कि हम संभावना को जानते हैं SD is (इसके अलावा कोई अच्छा कारण काम नहीं करता है और इससे अलग है) 1)।12

तो हम आपके द्वारा किए गए समान काम शुरू कर सकते हैं और पूर्व से उत्पन्न कर सकते हैं:

> obs <- c(0.4, 0.5, 0.8, 0.1)
> pri <- rnorm(10000, 0, 1)

अब हमें संभावना की गणना करने की आवश्यकता है, यह माध्य के पूर्ववर्ती ड्रा, डेटा के साथ संभावना और एसडी के ज्ञात मूल्य पर आधारित है। Dnorm फ़ंक्शन हमें किसी एक बिंदु की संभावना देगा, लेकिन हमें प्रत्येक अवलोकन के लिए मूल्यों को एक साथ गुणा करने की आवश्यकता है, यहां ऐसा करने के लिए एक फ़ंक्शन है:

> likfun <- function(theta) {
+ sapply( theta, function(t) prod( dnorm(obs, t, 0.5) ) )
+ }

अब हम माध्य के लिए पूर्व से प्रत्येक ड्रा के लिए संभावना की गणना कर सकते हैं

> tmp <- likfun(pri)

अब पीछे आने के लिए हमें एक नए प्रकार का ड्रॉ करने की जरूरत है, एक तरीका जो रिजेक्शन सैंपलिंग के समान है, वह है प्रत्येक पूर्व ड्रॉ की संभावना के लिए आनुपातिक रूप से ड्रॉ के लिए। बारे में पूछना):

> post <- sample( pri, 100000, replace=TRUE, prob=tmp )

अब हम पश्चवर्ती ड्रा के परिणामों को देख सकते हैं:

> mean(post)
[1] 0.4205842
> sd(post)
[1] 0.2421079
> 
> hist(post)
> abline(v=mean(post), col='green')

और उपर्युक्त परिणामों की तुलना सिद्धांत से बंद प्रपत्र मानों से करें

> (1/1^2*mean(pri) + length(obs)/0.5^2 * mean(obs))/( 1/1^2 + length(obs)/0.5^2 )
[1] 0.4233263
> sqrt(1/(1+4*4))
[1] 0.2425356

एक बुरा सन्निकटन नहीं है, लेकिन यह संभव है कि पीछे से खींचने के लिए एक अंतर्निहित मैकएमसी उपकरण का उपयोग करना बेहतर होगा। इनमें से अधिकांश उपकरण एक समय में एक बिंदु को ऊपर की तरह बैचों में नहीं करते हैं।

अधिक वास्तविक रूप से हम संभावना के एसडी को नहीं जानते होंगे और इसके लिए पूर्व की आवश्यकता होगी (अक्सर विचरण पर पूर्व एक या गामा है), लेकिन तब गणना करना अधिक जटिल होता है (McMC काम आता है) ) और तुलना करने के लिए कोई बंद रूप नहीं है।χ2

सामान्य समाधान McMC गणना जैसे WinBugs या OpenBugs (R में R और Bugs के बीच एक इंटरफ़ेस देता है) या संकुल जैसे LearnBayes को करने के लिए मौजूदा उपकरणों का उपयोग करना है।


इसको थोड़ा और स्पष्ट करने में मेरी मदद करने के लिए धन्यवाद। मैंने अपना उत्तर अपडेट कर दिया है, हालांकि मैं अभी भी स्पष्ट नहीं हूं। मेरा सवाल है 'सबसे अच्छा अनुमान क्या हैμपूर्व और डेटा दिया? ' कोई अन्य पैरामीटर नहीं हैं।
अबे

मेरे लिए इसे तोड़ने के लिए धन्यवाद; मैं एक कठिन समय रहा है, लेकिन यह मदद करता है।
अबे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.