首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用arviz从数组中总结单个参数的后验

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

Stack Overflow用户
提问于 2021-05-28 14:11:17
回答 1查看 148关注 0票数 1

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

代码语言:javascript
复制
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()参数就能做到这一点,但是在搜索了几个例子之后,比如有plot_posterior()而不是summary()这里,我无法找到一些有用的东西。特别是,我尝试了以下操作,希望它能够返回b[0]b[1]的摘要。

代码语言:javascript
复制
with model: 
    smry = az.summary(samp, var_names = ["b"], coords={"b_dim_0": range(1)})

或者返回b[0]的摘要

代码语言:javascript
复制
with model: 
    smry = az.summary(samp, var_names = ["b"], coords={"b_dim_0": [0]})

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

(顺便说一下,我使用的是Python3.8.0,pyMC3 3.9.3,arviz0.10.0)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-28 15:34:53

要使用coords,您需要更新到开发 (它仍将显示0.11.2,但有来自github或任何>0.11.2发行版的代码)的ArviZ版本。直到0.11.2,coords参数在summary中才被用于子集数据(就像在所有绘图函数中那样),而是只在输入尚未被InferenceData时才被考虑,在这种情况下,它被传递给转换器。

对于旧版本,在将数据传递给summary之前,需要使用xarray对数据进行子集。因此,您需要预先显式地将跟踪转换为推断数据。在上面的示例中,如下所示:

代码语言:javascript
复制
with model:
    ...
    samp = fit.sample(1500) 
    idata = az.from_pymc3(samp)

az.summary(idata.posterior[["b"]].sel({"b_dim_0": [0]}))

此外,您还可能希望指示摘要,以便只计算stats/诊断的子集,如docstring示例所示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67740474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档