【问题标题】:ArviZ plot_trace does not properly plot multidimensional variablesArviZ plot_trace 无法正确绘制多维变量
【发布时间】:2020-07-08 06:08:21
【问题描述】:

我正在尝试使用 PyMC3 运行基本测试模型,但我发现 ArviZ plot_trace 函数无法正确显示我的跟踪。

代码

from scipy import stats
import arviz as az
import numpy as np
import matplotlib.pyplot as plt
import pymc3 as pm
import seaborn as sns
import pandas as pd
from theano import shared
from sklearn import preprocessing

if __name__ == "__main__":
    with basic_model:

        # Priors for unknown model parameters
        alpha = pm.Normal('alpha', mu=0, sigma=10)
        beta = pm.Normal('beta', mu=0, sigma=10, shape=2)
        sigma = pm.HalfNormal('sigma', sigma=1)

        # Expected value of outcome
        mu = alpha + beta[0]*X1 + beta[1]*X2

        # Likelihood (sampling distribution) of observations
        Y_obs = pm.Normal('Y_obs', mu=mu, sigma=sigma, observed=Y)

        # draw 500 posterior samples
        trace = pm.sample(5000)

    az.plot_trace(trace, compact = False)

beta 参数是多维的,同时具有beta[0]beta[1],但ArviZ 跟踪仅显示beta[0]

轨迹图

如果我以az.plot_trace(trace, compact = True) 运行跟踪图,那么我确实看到beta 的两个维度正确重叠。我只在尝试使用 compact = False 在单独的轴上绘制维度时才观察到这个问题。


版本

  • ArviZ:0.6.1
  • Numpy:1.18.1
  • SciPy:1.4.1
  • xarray: 0.15.0
  • Matplotlib:3.1.3

【问题讨论】:

  • 您使用的是哪个 ArviZ 版本?
  • ArviZ:0.6.1,Numpy:1.18.1,SciPy:1.4.1,xarray:0.15.0,Matplotlib:3.1.3

标签: python pymc3 arviz


【解决方案1】:

您似乎遇到了this bug。我建议将 ArviZ 更新到其最新版本(撰写本文时为 0.7.0),其中已经包含针对此特定错误的修复。

如果您有某种版本限制,那么disabling numba 应该可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-05
    • 2012-10-05
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多