1
我正在嘗試使用pymc 2對一個簡單的概率編程示例進行建模。我一直在玩其他語言,比如Church和Anglican,並且能夠毫無困難地模擬這個問題。但是,我似乎無法在Python中找到它。如何用pymc 2對兩個泊松分佈的和進行建模?
這裏是code in Anglican,我認爲這是不言自明:
[assume a (- (poisson 100) 100)]
[assume b (- (poisson 100) 100)]
[observe (normal (+ a b) .00001) 7]
[predict (list a b)]
使用都市報 - 黑斯廷斯樣,我得到:
1 (10 1)
2 (10 8)
9977 (7 0)
20 (7 1)
隨着粒子吉布斯,我得到:
669 (-1 8)
71 (-10 17)
66 (-11 18)
208 (-12 19)
19 (-13 20)
84 (-14 21)
72 (-15 22)
441 (-2 9)
...and so on...
我試圖在pymc中這樣模擬它:
def make_model():
a = (pymc.Poisson("a", 100) - 100)
b = (pymc.Poisson("b", 100) - 100)
precision = pymc.Uniform('precision', lower=.0001, upper=1.0)
@pymc.deterministic
def mu(a=a, b=b):
return a+b
y = pymc.Normal("y", mu=mu, tau=precision, observed=True, value=7)
return pymc.Model(locals())
def run_mcmc(model):
mcmc = pymc.MCMC(model)
mcmc.sample(5000, burn=1000, thin=2)
return mcmc
result = run_mcmc(make_model())
pymc.Matplot.plot(result)
我歌廳痕跡其中A和B是100左右。但是,如果我跑(pymc.Poisson("a", 100) - 100).value
,我得到的數字接近0.
我失去了一些東西在這裏?我對這種可能性感到興奮,但我現在很困惑!謝謝你的幫助!
你能更詳細地描述聖公會模型的輸出嗎?我不熟悉這個系統。 – 2015-02-10 20:13:28
是的,它基本上是一個頻率計數。例如'9977(7 0)'表示a = 7,b = 0在10000個採樣中出現了9977次。 – stratospark 2015-02-10 23:23:49