我是PyMC新手,在获取与我之前的数据相关的参数时遇到了一些困难,例如,均值和标准差。
我在一个名为“model.py”的文件中描述我的模型,如下所示:
import pymc
import numpy
#constants
r_div=numpy.loadtxt("r_div", comments="#", unpack=False)
map=numpy.loadtxt("map", comments="#", delimiter=",", unpack=False)
M_star=3*10^6;
#data
n=numpy.loadtxt("n")
#priors
alpha_0=pymc.Uniform('alpha_0end',-10,10, value=0)
logA_0=pymc.Uniform('logA_0end',-10,10,value=-6.1246)
#model
@pymc.deterministic(plot=False)
def r(logA_0=logA_0,alpha_0=alpha_0,M_star=M_star,r_div=r_div):
r=r_div*numpy.exp(logA_0)*((numpy.exp(map[:,1])/M_star)**(alpha_0))
return r
#likelihood
Distribution=pymc.Poisson('Distribution',mu=r,value=n,observed=True)然后在ipython中使用以下脚本运行MCMC链:
import pymc
import model
M=pymc.MCMC(model)
M.sample(100000, burn=10000)
M.summary()在得到错误的最后命令M.summary()之前,一切似乎都正常:
AttributeError跟踪(最近一次调用)在() ->1 M.summary()
AttributeError:'MCMC‘对象没有属性’汇总‘
我确信这个链已经成功运行了,因为命令M.trace('alpha_0end')显示了那里有链元素,但是我无法得到任何关于先前的信息,比如平均值或标准差。我尝试过汇总命令的不同排列。例如: M.alpha_0end.summary()
这将有助于了解是否有一个简单的方法,以获得标准偏差和前项的均值。
发布于 2014-06-17 19:32:37
我无法运行您的代码,但在这个最小的示例中,M.summary()为我工作:
In [1]: import pymc as pm
In [2]: pm.__version__
Out[2]: '2.3.2'
In [3]: X = pm.Normal('X', 0, 1)
In [4]: M = pm.MCMC(dict(X=X))
In [5]: M.sample(100000, burn=10000)
[-----------------100%-----------------] 100000 of 100000 complete in 5.0 sec
In [6]: M.summary()
X:
Mean SD MC Error 95% HPD interval
------------------------------------------------------------------
-0.0 1.003 0.003 [-1.897 2.026]
Posterior quantiles:
2.5 25 50 75 97.5
|---------------|===============|===============|---------------|
-1.961 -0.673 0.0 0.675 1.964发布于 2014-07-10 22:00:21
摘要子例程于2012年2月添加(a04551094a70451a4afee4e11be8b6872e74fe46)。当时的版本号是2.2级.
如果你的pm.__version__是2.2分或更低,你有一个版本的pymc太老了,不能使用这个函数。版本2.2-测试版或更高版本应该可以工作。
https://stackoverflow.com/questions/24247983
复制相似问题