ArviZ plot_trace неправильно отображает многомерные переменные - PullRequest
1 голос
/ 31 марта 2020

Я пытаюсь запустить базовую c тестовую модель с использованием 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

1 Ответ

1 голос
/ 15 апреля 2020

Похоже, вы столкнулись с этой ошибкой . Рекомендуется обновить ArviZ до последней версии (0.7.0 на момент написания), которая уже содержит исправление для этой конкретной ошибки.

Если у вас было какое-то ограничение версии, то отключение numba должно решить проблему.

...