假設我們在X(例如X〜高斯)和前向運算符y = f(x)之前給出。假設我們進一步通過實驗觀察到和,並且該實驗可以無限重複。輸出Y被假定爲高斯(Y〜高斯)或無噪聲(Y〜Delta(觀察))。用PyMC解決逆問題
如何一致地更新我們關於X知識的主觀知識程度?我試着PyMC下面的模型,但似乎我失去了一些東西:
from pymc import *
xtrue = 2 # this value is unknown in the real application
x = rnormal(0, 0.01, size=10000) # initial guess
for i in range(5):
X = Normal('X', x.mean(), 1./x.var())
Y = X*X # f(x) = x*x
OBS = Normal('OBS', Y, 0.1, value=xtrue*xtrue+rnormal(0,1), observed=True)
model = Model([X,Y,OBS])
mcmc = MCMC(model)
mcmc.sample(10000)
x = mcmc.trace('X')[:] # posterior samples
後部沒有收斂到xtrue。
我知道F(X)是不是一個雙射,它被選中,是因爲那具體原因。就我所知,MCMC能夠對複雜的多模式分佈進行採樣,但我無法看到MCMC因輸入分佈而失敗的任何爭論。 – juliohm
哦,我明白你的觀點,問題在於我如何更新之前。通過簡單地使用pos.mean()和pos.var()我假設一個單峯解決方案。如何解決找到2和-2的問題? – juliohm
換句話說,如何用PyMC表示非參數分佈?給定跟蹤,生成一個匹配直方圖的PDF。 – juliohm