MCMC में ऑटोकार्ट्रेशन प्लॉट की व्याख्या कैसे करें


12

जॉन के क्रूसके द्वारा "पिल्ला किताब" के रूप में भी जानी जाने वाली पुस्तक डूइंग बेयसियन डेटा एनालिसिस पढ़कर मैं बायेसियन आंकड़ों से परिचित हो रहा हूं । अध्याय 9 में, पदानुक्रमित मॉडल को इस सरल उदाहरण के साथ पेश किया जाता है: और बर्नोली अवलोकन 3 सिक्के, प्रत्येक 10 फ़्लिप हैं। एक में 9 सिर, दूसरे में 5 सिर और दूसरे में 1 सिर दिखाई देता है।

yजेमैं~बीआरnयूएलएलमैं(θजे)θजे~बीटी(μκ,(1-μ)κ)μ~बीटी(μ,बीμ)κ~जी(एसκ,आरκ)

मैंने हाइपरपरमेटर का पता लगाने के लिए pymc का उपयोग किया है।

with pm.Model() as model:
# define the     
    mu = pm.Beta('mu', 2, 2)
    kappa = pm.Gamma('kappa', 1, 0.1)
    # define the prior
    theta = pm.Beta('theta', mu * kappa, (1 - mu) * kappa, shape=len(N))
    # define the likelihood
    y = pm.Bernoulli('y', p=theta[coin], observed=y)

    # Generate a MCMC chain
    step = pm.Metropolis()
    trace = pm.sample(5000, step, progressbar=True)
    trace = pm.sample(5000, step, progressbar=True)


burnin = 2000  # posterior samples to discard
thin = 10  # thinning 
pm.autocorrplot(trace[burnin::thin], vars =[mu, kappa])

मेरा सवाल ऑटोकरेलेशन से संबंधित है। मैं निरंकुशता की व्याख्या कैसे करूंगा? क्या आप कृपया मुझे ऑटोक्रेलेशन प्लॉट की व्याख्या करने में मदद कर सकते हैं?

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

यह कहता है कि नमूने एक-दूसरे से आगे बढ़ जाते हैं, उनके बीच संबंध कम हो जाते हैं। सही? क्या हम इसका उपयोग इष्टतम पतलेपन को खोजने के लिए कर सकते हैं? क्या पतलेपन के बाद के नमूनों को प्रभावित करता है? आखिर इस साजिश का क्या फायदा?

जवाबों:


13

सबसे पहले: यदि एमसीएमसी आउटपुट को संभालने के लिए मेमोरी और कम्प्यूटेशनल समय सीमित नहीं है, तो थिनिंग कभी भी "इष्टतम" नहीं है। MCMC पुनरावृत्तियों की एक समान संख्या में, श्रृंखला का पतला होना हमेशा (औसतन) MCMC सन्निकटन की हानि परिशुद्धता की ओर जाता है।

स्वतःसंक्रमण या किसी अन्य निदान के आधार पर नियमित रूप से पतला होना इसलिए उचित नहीं है । देखें लिंक, WA और ईटन, एमजे (2012) एमसीएमसी में चेन के पतले होने पर। पारिस्थितिकी और विकास में विधियाँ, 3, 112-115।

हर दिन के अभ्यास में, हालांकि, सामान्य मामला है कि आपको एक मॉडल के साथ काम करना होगा जिसके लिए नमूना बहुत अच्छी तरह से मिश्रण नहीं करता है (उच्च ऑटोकॉर्लेशन)। इस मामले में

1) बंद श्रृंखला तत्व बहुत समान हैं, जिसका अर्थ है कि एक को फेंकना बहुत सारी जानकारी को ढीला नहीं करता है (यह वही है जो ऑटोकॉर्लर प्लॉट दिखाता है)

2) अभिसरण प्राप्त करने के लिए आपको बहुत सारे पुनरावृत्तियों की आवश्यकता होती है, जिसका अर्थ है कि यदि आप पतले नहीं हैं तो आपको बहुत बड़ी श्रृंखलाएं मिलती हैं। उस वजह से, पूर्ण श्रृंखला के साथ काम करना बहुत धीमा हो सकता है, बहुत सारे भंडारण की लागत होती है, या बहुत सारे चर की निगरानी करते समय स्मृति समस्याएं भी हो सकती हैं।

3) इसके अतिरिक्त, मुझे लग रहा है (लेकिन यह कि मैंने कभी भी व्यवस्थित रूप से परीक्षण नहीं किया है) कि थ्रेडिंग JAGS को थोड़ा तेज करता है, इसलिए एक ही समय में कुछ और पुनरावृत्तियों को प्राप्त करने में सक्षम हो सकता है।

तो, मेरी बात यह है: ऑटोकॉर्पेशन प्लॉट आपको एक मोटा अनुमान देता है कि आप थिनिंग के माध्यम से कितनी जानकारी खो रहे हैं (ध्यान दें कि हालांकि यह पूरे पोस्टवर पर औसत है, विशेष क्षेत्रों में नुकसान अधिक हो सकता है)।

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


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