使用 arviz 总结数组中单个参数的后验

问题描述

我正在使用 python 中的 pyMC3 库估算模型。在我的“真实”模型中,有四个参数数组,其中两个包含超过 170,000 个参数。总结这组参数在我的计算机上计算量太大。我一直在试图弄清楚 arviz 中的汇总函数是否允许我只汇总数组中的一个(或少量)参数。下面是一个存在相同问题的 reprex,尽管模型要简单得多。在下面的线性回归模型中,参数数组b中包含三个参数b[0]b[1]b[2]。我想知道如何仅获取 b[0]b[1] 的摘要,或者仅获取单个参数的摘要,例如 b[0]

import pandas as pd
import pymc3 as pm
import arviz as az

d = pd.read_csv("https://quantoid.net/files/mtcars.csv")

mpg = d['mpg'].values
hp = d['hp'].values
weight = d['wt'].values

with pm.Model() as model: 
    b = pm.Normal("b",mu=0,sigma=10,shape=3)
    sig = pm.HalfCauchy("sig",beta=2)
    mu = pm.Deterministic('mu',b[0] + b[1]*hp + b[2]*weight)
    like = pm.Normal('like',mu=mu,sigma=sig,observed=mpg)
    fit = pm.fit(10000,method='advi')
    samp = fit.sample(1500)    

with model: 
    smry = az.summary(samp,var_names = ["b"])

看起来 coords 函数的 summary() 参数可以做到这一点,但是在谷歌搜索并找到一些示例之后,例如 hereplot_posterior() 代替的 summary(),我无法得到一些工作。特别是,我尝试了以下操作,希望它能返回 b[0]b[1] 的摘要。

with model: 
    smry = az.summary(samp,var_names = ["b"],coords={"b_dim_0": range(1)})

或返回b[0]的摘要:

with model: 
    smry = az.summary(samp,coords={"b_dim_0": [0]})

我怀疑我遗漏了一些简单的东西(我是一个 R 用户,偶尔会涉足 Python)。非常感谢任何帮助。

(顺便说一句,我使用的是 Python 3.8.0、pyMC3 3.9.3、arviz 0.10.0)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)