首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ArviZ的`from_pymc3`获取了`AttributeError`

从ArviZ的`from_pymc3`获取了`AttributeError`
EN

Stack Overflow用户
提问于 2021-08-11 01:56:46
回答 1查看 117关注 0票数 1

我正在通过Bayesian Analysis with Python这本书学习贝叶斯推理。但是,在使用plot_ppc时,我得到了AttributeError和警告

/usr/local/Caskroom/miniconda/base/envs/kaggle/lib/python3.9/site-packages/pymc3/sampling.py:1689: UserWarning: samples参数小于nchains乘以ndraws,一些绘制和/或链可能不会在返回的后验预测样本warnings.warn(

该模型是

代码语言:javascript
复制
shift = pd.read_csv('../data/chemical_shifts.csv')

with pm.Model() as model_g:
    μ = pm.Uniform('μ', lower=40, upper=70)
    σ = pm.HalfNormal('σ', sd=10)
    y = pm.Normal('y', mu=μ, sd=σ, observed=shift)
    trace_g = pm.sample(1000, return_inferencedata=True)

如果我使用以下代码

代码语言:javascript
复制
with model_g:
    y_pred_g = pm.sample_posterior_predictive(trace_g, 100, random_seed=123)
    data_ppc = az.from_pymc3(trace_g.posterior, posterior_predictive=y_pred_g) # 'Dataset' object has no attribute 'report'

我得到'Dataset‘对象没有属性'report’。

如果我使用以下代码

代码语言:javascript
复制
with model_g:
    y_pred_g = pm.sample_posterior_predictive(trace_g, 100, random_seed=123)
    data_ppc = az.from_pymc3(trace_g, posterior_predictive=y_pred_g) # AttributeError: 'InferenceData' object has no attribute 'report'

我得到了报告:'InferenceData‘对象没有’AttributeError‘属性。

ArviZ版本: 0.11.2 PyMC3版本: 3.11.2 Aesara/Theano版本: 1.1.2 Python版本: 3.9.6操作系统: MacOS Big Sur您是如何安装PyMC3: conda的

EN

Stack Overflow用户

发布于 2021-08-11 04:27:07

您正在将return_inferancedata=True传递给pm.sample(),根据PyMC3 documentation,它将返回InferenceData对象而不是MultiTrace对象。

代码语言:javascript
复制
return_inferencedatabool, default=False

    Whether to return the trace as an arviz.InferenceData (True) object or a MultiTrace (False) Defaults to False, but we’ll switch to True in an upcoming release.

然而,from_pymc3函数是expects a MultiTrace object

好消息是from_pymc3将返回一个InferenceData对象,因此您可以通过以下两种方法之一来解决此问题:

  1. 最简单的解决方案是简单地删除from_pymc3调用,因为它会返回InferenceData,由于return_inferencedata=True.
  2. Set return_inferencedata=False (您也可以删除该参数,但是文档中声明将来它将默认为True,因此为了证明将来最好将其显式设置为False)。这将返回一个可以传递给from_pymc3.

MultiTrace

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

https://stackoverflow.com/questions/68735173

复制
相关文章

相似问题

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