模块“pymc3”没有属性“traceplot”错误

0 pymc3 arviz

我正在尝试生成模型的跟踪图,但它显示module 'pymc3' has no attribute 'traceplot'错误。我的代码是:

with pm.Model() as our_first_model:
    # a priori
    theta = pm.Beta('theta', alpha=1, beta=1)
    # likelihood
    y = pm.Bernoulli('y', p=theta, observed=data)
    #y = pm.Binomial('theta',n=n_experimentos, p=theta, observed=sum(datos))
    start = pm.find_MAP()
    step = pm.Metropolis()
    trace = pm.sample(1000, step=step, start=start)
    burnin = 0  # no burnin
    chain = trace[burnin:]
    pm.traceplot(chain, lines={'theta':theta_real});
Run Code Online (Sandbox Code Playgroud)

然后给出以下错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-8-40f97a342e0f> in <module>
      1 burnin = 0  # no burnin
      2 chain = trace[burnin:]
----> 3 pm.traceplot(chain, lines={'theta':theta_real});
AttributeError: module 'pymc3' has no attribute 'traceplot'
Run Code Online (Sandbox Code Playgroud)

我在 windows10 上,我用 pip 下载了 pymc3,因为它没有包含在我下载的 anaconda 中。

Ori*_*ril 5

几个版本之前开始,PyMC3 将绘图和统计委托给 ArviZ,并且原始绘图命令保留为 ArviZ 方法的别名,以方便和轻松过渡。

最新的 PyMC3 版本 (3.11.0) 是第一个不包含别名的版本,例如pm.traceplot. 您必须使用arviz.plot_trace适用于 PyMC3 对象的方法。


与问题本身无关的额外注释:

  • 您正在使用pm.find_MAP初始化链,并且手动将采样器设置为,pm.Metropolis而不是允许pm.sample选择其自己的默认值。这样做是有原因的,本质上并没有错,但不鼓励这样做,请参阅PyMC3 常见问题解答
  • PyMC3 正在过渡到使用InferenceData作为pm.sample. 我建议出于以下原因进行设置return_inferencedata=Truepm.sample1) ArviZ 函数在后台转换为这种格式,您将避免这种小开销,2) InferenceData 比 MultiTrace 具有更多功能,3) PyMC3 正在转换为 InferenceData 作为默认输出pm.sample那么为什么不开始呢?
  • 然而,您有一个# no burn-in评论,返回的跟踪pm.sample已经执行了传递tune给它的参数长度的预烧。的默认值为tune1000。要实际获取所有样本并查看 MCMC 如何慢慢收敛到典型集,您需要使用discard_tuned_samples=False

一些 InferenceData 资源: