Я пытаюсь запустить базовую 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