PyMC शुरुआत: कैसे फिट मॉडल से वास्तव में नमूना है


12

मैं एक बहुत ही सरल मॉडल की कोशिश कर रहा हूं: एक सामान्य फिटिंग करना जहां मैं मानता हूं कि मैं सटीक जानता हूं, और मैं सिर्फ इसका मतलब खोजना चाहता हूं। नीचे दिया गया कोड सामान्य रूप से सही ढंग से फिट होता है। लेकिन फिटिंग के बाद, मैं मॉडल से नमूना लेना चाहता हूं, अर्थात नया डेटा उत्पन्न करता हूं जो मेरे dataचर के समान है । मुझे पता है कि मैं trace("mean")माध्य चर के लिए नमूने प्राप्त करने के लिए उपयोग कर सकता हूं । लेकिन मैं मॉडल से ही नए नमूने कैसे प्राप्त कर सकता हूं?

मैंने डॉक्स पर देखा है जैसे http://pymc-devs.github.io/pymc/database.html#accessing-sampled-data । मैंने काफी कुछ उदाहरणों पर भी ध्यान दिया है, उदाहरण के लिए, खनन आपदाएँ, और कई प्रोबायबिलिस्टिक प्रोग्रामिंग नोटबुक से, और किसी ने भी इसका उल्लेख नहीं किया है। मैं (कम या ज्यादा MCMC शुरुआती) उम्मीद करता था कि फिट किए गए मॉडल से नमूना पूरे बिंदु था! मैं क्या खो रहा हूँ?

from pymc import *
data = np.array([-1, 0, 4, 0, 2, -2, 1, 0, 0, 2, 1, -3, -1, 0, 0, 1, 0, 1])
mean = Uniform("mean", -4, 4)
precision = 2.0**-2
obs = Normal("obs", mean, precision, value=data, observed=True)
model = Model( {"mean": mean, "obs": obs})
mcmc = MCMC(model)
mcmc.sample(10000, 1000, 1)
# I can get samples for the "mean" variable
mean_samples = mcmc.trace("mean")[:]
hist(mean_samples)
# but how can I do the equivalent of mcmc.trace("obs")?

बिल्कुल सवाल मैं था! आश्चर्य है कि अगर pymc3 में भविष्यवाणिय नमूनाकरण को सरल बना दिया जाता है ...
व्लादिस्लाव डोभालगस

जवाबों:


15

आप वही देख रहे हैं जिसे भविष्य कहनेवाला वितरण कहा जाता है । इसमें शामिल करना बहुत सरल है। बनाने से पहले Model, अतिरिक्त स्टोचैस्टिक वैरिएबल जोड़ें:

predictive = mc.Normal( "predictive", mean, precision )
model = Model( {"mean": mean, "obs": obs, "pred":predictive})

...

predictive_traces = mcmc.trace("predictive")[:]
hist( predictive_traces )

फिट किए गए मॉडल से कृत्रिम डेटा

यह फिट किए गए मॉडल से कलात्मक डेटा उत्पन्न करेगा। इस ध्यान को मेरे ध्यान में लाने के लिए धन्यवाद, मैं इसे बीएमएच परियोजना में शामिल करूंगा।


आप एक यादृच्छिक यादृच्छिक चर कैसे बनाते हैं जिसमें n यादृच्छिक है? stackoverflow.com/questions/45283843/… (क्षमा करें यह बहुत ज्यादा है ...)
drake

4

कई साल बाद यहाँ उतरा जब PyMC3 का उपयोग करके एक ही चीज़ की तलाश में, तो मैं नए संस्करण के लिए प्रासंगिक उत्तर छोड़ने जा रहा हूँ: ( पोस्टीरियर प्रिडिक्टिव चेक से )।

ppc = pm.sample_ppc(trace, samples=500, model=model, size=100)

अब, पीपीसी में 500 उत्पन्न डेटा सेट (प्रत्येक में 100 नमूने होते हैं), प्रत्येक पोस्टीरियर से एक अलग पैरामीटर सेटिंग का उपयोग करते हैं।

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