Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pymc正常优先级+;正常可能性不能正确收敛?_Python_Bayesian_Pymc - Fatal编程技术网

Python pymc正常优先级+;正常可能性不能正确收敛?

Python pymc正常优先级+;正常可能性不能正确收敛?,python,bayesian,pymc,Python,Bayesian,Pymc,我是pymc和贝叶斯统计的新手。在这里,我试图实现一个非常简单的pymc模型,以便与理论结果进行比较。在我的测试用例中,我假设一个正常的先验为mu~N(20,20),一个似然为data~N(mu,10) 假设有10个观测值,其值如以下代码所示,在这个简单模型中,后验pdf的理论结果应为N(6.84,6.67);然而,我很困惑为什么我的pymc模型产生的结果与理论结果相差甚远。这是我的密码。我想知道问题是来自我的代码还是我的贝叶斯统计概念。谢谢你的帮助 from __future__ import

我是pymc和贝叶斯统计的新手。在这里,我试图实现一个非常简单的pymc模型,以便与理论结果进行比较。在我的测试用例中,我假设一个正常的先验为
mu~N(20,20)
,一个似然为
data~N(mu,10)

假设有10个观测值,其值如以下代码所示,在这个简单模型中,后验pdf的理论结果应为
N(6.84,6.67)
;然而,我很困惑为什么我的pymc模型产生的结果与理论结果相差甚远。这是我的密码。我想知道问题是来自我的代码还是我的贝叶斯统计概念。谢谢你的帮助

from __future__ import division
import pymc as pm
import numpy as np

data=[2.944,-13.361,7.143,16.235,-6.917, 8.580,12.540,
          -15.937,-14.409, 5.711]
mean=pm.Normal('mean',mu=20.,tau=1./20)
prec=1./10

obs=pm.Normal('obs',mu=mean,tau=prec,value=data,observed=True)
model=pm.Model([obs, mean])
mcmc=pm.MCMC(model)

mcmc.sample(500,100)

mcmc.stats()
结果表明,后验平均值为N(0.25,1),与理论结果相差甚远

'mean': {'95% HPD interval': array([-1.80515483,  2.06741224]),
  'mc error': 0.04850118114229577,
  'mean': 0.22188919237458093,
  'n': 400,
  'quantiles': {2.5: -1.7106911626432717,
   25: -0.39834886222214749,
   50: 0.24108945921296354,
   75: 0.85983578287420315,
   97.5: 2.282198749772455},
  'standard deviation': 0.99310330871482888}

应该
平均值=pm.Normal('mean',mu=20,tau=1./20**2)

我自己发现了问题。pymc代码和结果中没有问题,问题出在我的理论推导中。顺便说一句,也许你已经知道了,但是如果你刚开始使用pymc的贝叶斯统计,这个网站非常酷;)