PyMC:变量子集的汇总统计信息

时间:2015-06-18 06:25:27

标签: pymc

我正在使用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()提供了所有变量的摘要统计信息。

1 个答案:

答案 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}}