gpt4 book ai didi

python - 用 PyMC 解决反问题

转载 作者:太空狗 更新时间:2023-10-29 21:29:20 24 4
gpt4 key购买 nike

假设我们在 X 上有一个先验(例如 X ~ Gaussian)和一个前向运算符 y = f(x)。进一步假设我们通过实验观察到了y,并且这个实验可以无限重复。假设输出 Y 为高斯分布 (Y ~ Gaussian) 或无噪声 (Y ~ Delta(observation))。

如何根据观察结果不断更新我们对 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

最佳答案

@user1572508 所设计的功能现在是 PyMC 的一部分,名称为 stochastic_from_data()Histogram()。该线程的解决方案变为:

from pymc import *
import matplotlib.pyplot as plt

xtrue = 2 # unknown in the real application
prior = rnormal(0,1,10000) # initial guess is inaccurate
for i in range(5):
x = stochastic_from_data('x', prior)
y = x*x
obs = Normal('obs', y, 0.1, xtrue*xtrue + rnormal(0,1), observed=True)

model = Model([x,y,obs])
mcmc = MCMC(model)
mcmc.sample(10000)

Matplot.plot(mcmc.trace('x'))
plt.show()

prior = mcmc.trace('x')[:]

关于python - 用 PyMC 解决反问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17409324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com