পিএমসি শিক্ষানবিশ: লাগানো মডেল থেকে কীভাবে নমুনা পাবেন


12

আমি খুব সাধারণ মডেলটি চেষ্টা করছি: এমন একটি নরমাল ফিটিং করছি যেখানে আমি অনুমান করি যে আমি নির্ভুলতা জানি, এবং আমি কেবল এটির সন্ধান করতে চাই। নীচের কোডটি স্বাভাবিকের সাথে সঠিকভাবে ফিট করে বলে মনে হচ্ছে। তবে ফিটিংয়ের পরে, আমি মডেল থেকে নমুনা নিতে চাই, অর্থাৎ নতুন ডেটা তৈরি করতে পারি যা আমার dataভেরিয়েবলের অনুরূপ । আমি জানি আমি trace("mean")গড় পরিবর্তনশীলের জন্য নমুনা পেতে ব্যবহার করতে পারি। তবে আমি কীভাবে মডেল থেকে নতুন নমুনা পেতে পারি?

আমি দস্তাবেজগুলি দেখেছি যেমনঃ http://pymc-devs.github.io/pymc/database.html#accessing- স্যাম্পলড- ডেটা । আমি বেশ কয়েকটি উদাহরণও দেখেছি, যেমন খনিজ বিপর্যয় এবং সম্ভাব্য প্রোগ্রামিং নোটবুকগুলি থেকে কয়েকটি, এবং এর কোনওটিই উল্লেখ করে না। আমি (কমবেশি একজন এমসিসিএম শিক্ষানবিশ) প্রত্যাশা করেছি যে লাগানো মডেল থেকে স্যাম্পলিং পুরো বিষয়টি ছিল! আমি কী মিস করছি?

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

ঠিক আমার কাছে প্রশ্ন ছিল! ভাববাচক নমুনাটি পিএমসি 3-তে সরল করা থাকলে অবাক হচ্ছেন ...
ভ্লাদিসালভস ডভগ্যালিক্স

উত্তর:


15

ভবিষ্যদ্বাণীপূর্ণ বিতরণ যাকে বলে তা আপনি খুঁজছেন । এটি অন্তর্ভুক্ত করা খুব সহজ। তৈরি করার আগে Modelঅতিরিক্ত স্টোকাস্টিক ভেরিয়েবল যুক্ত করুন:

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

...

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

লাগানো মডেল থেকে কৃত্রিম তথ্য

এটি লাগানো মডেল থেকে কৃত্রিম তথ্য তৈরি করবে। এই নজরদারিটি আমার নজরে আনার জন্য ধন্যবাদ, আমি এটি বিএমএইচ প্রকল্পে অন্তর্ভুক্ত করব।


এন এলোমেলোভাবে এন এলোমেলো ভেরিয়েবলের অ্যারে কীভাবে তৈরি করবেন? stackoverflow.com/questions/45283843/… (দুঃখিত এটি খুব বেশি ...)
ড্রেকে

4

পাইএমসি 3 ব্যবহার করে একই জিনিসটির সন্ধান করার পরে বেশ কয়েক বছর পরে এখানে পৌঁছেছি, তাই আমি নতুন সংস্করণের সাথে সম্পর্কিত একটি উত্তর রেখে যাচ্ছি: ( পোস্টেরিয়ের প্রেডিকটিভ চেক থেকে )।

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

এখন, পিপিসিতে 500 জেনারেটেড ডেটা সেট রয়েছে (প্রতিটি 100 টি নমুনা রয়েছে), প্রতিটি পোস্টারিয়র থেকে আলাদা প্যারামিটার সেটিং ব্যবহার করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.