PyMC:变量子集的汇总统计

PyMC: summary statistics for a subset of variables

我正在使用 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() 给出了所有变量的汇总统计数据。

在 PyMC2 中创建模型的方法可能太多了。您使用的那个传递了一个 pymc.Node 实例的可迭代对象,不记录名称,因此该模型没有 M.a,即使 M.nodes 包含一个名为 [=26] 的随机变量=].

如果您更喜欢以这种方式创建模型,您可以直接从 a 获取摘要,使用

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()