我是PyMC的新手,在获取与我之前的参数相关的参数时遇到了一些困难,例如,平均值和标准差。在
我在一个名为'模型.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链:
^{pr2}$在最后一个命令M.summary()出现错误之前,一切似乎都正常:
AttributeError回溯(最近一次调用) 在() ----&1 M.总结()
AttributeError:“MCMC”对象没有属性“summary”
我确信链已经成功运行了,因为命令M.trace('alpha_0end')[:]显示那里有链元素,但我无法获得任何关于先前的信息,例如平均值或标准偏差。我试过对summary命令进行不同的排列。例如:M.alpha_0结束总结()
知道是否有一个简单的方法可以得到标准差和先验平均值,这将是很有帮助的。在
我无法运行您的代码,但是
M.summary()
在这个最小的示例中对我有效:摘要子程序于2012年2月添加(a04551094a70451a4afee4e11be8b6872e74fe46)。当时的版本号是2.2-grad。在
如果您的
pm.__version__
是2.2-grad或更低,那么您的pymc版本太旧,无法使用此函数。2.2-beta版或更高版本应该可以工作。在相关问题 更多 >
编程相关推荐