我正在使用PyMC 2.3.4并尝试获取模型变量子集的摘要统计信息,但似乎无法使用文档中的方法执行此操作。
模型构建代码:
import pymc
a = pymc.Normal('a',0,1)
b = pymc.Normal('b',0,1)
myModel = pymc.Model((a,b))
M = pymc.MCMC(myModel)
M.sample(1000)
根据https://pymc-devs.github.io/pymc/database.html的文档,我应该可以运行
M.a.summary() -> summary statistics for a
但相反,我得到了
AttributeError: 'MCMC' object has no attribute 'a'
但是,M.summary()
提供了所有变量的摘要统计信息。
答案 0 :(得分:2)
在PyMC2中创建模型的方法可能太多了。你使用的那个,传递了一个pymc.Node
实例的迭代,不会记录名称,所以模型没有M.a
,即使M.nodes
包含一个随机名为&a
#39;一个'
如果您希望以这种方式创建模型,可以直接从a.summary()
获取摘要,
a:
Mean SD MC Error 95% HPD interval
------------------------------------------------------------------
[[-0.016]] [[ 0.992]] [[ 0.031]] [-1.986 1.939]
Posterior quantiles:
2.5 25 50 75 97.5
|---------------|===============|===============|---------------|
[[-2.047]] [[-0.665]] [[-0.058]] [[ 0.672]] [[ 1.937]]
对我来说,打印
M.a
我发现有时候可以使用属性M2 = pymc.MCMC({'a':a, 'b':b})
M2.sample(1000)
M2.a.summary()
很方便,你可以在构建模型时使用字典而不是列表来获取它:
{{1}}