使用 PYMC3 的跟踪图跟踪各个维度?

Trace individual dimensions using PYMC3's traceplot?

我使用 PYMC3 对贝叶斯逻辑回归模型进行了推理。我想在给定高斯先验 $\mathcal{N} \sim (0,I)$ 的情况下找到权重 $\beta \in \mathbb{R}^K$ 的后验。

这是使用由设计矩阵 $X \in \mathbb{R}^{N \times K}$ 和二进制结果向量 $y\in \mathbb{R} 表示的真实而非模拟数据^N$.

我的Python代码如下:

with pm.Model() as logistic_model:
    # 14 dimensional Gaussian prior
    beta = pm.Normal('beta', mu = 0, sd = 10, shape = X.shape[1])

    # Expected value of outcome with sigmoid link
    logit_p = t.dot(X, beta)
    pm.Bernoulli('likelihood', logit_p=logit_p, observed=y)

    with logistic_model:
    # Inference
    trace = pm.sample(2000)

然后我继续使用

pm.traceplot(trace) 

获得后验的可视化。这将输出以下内容:

我很好奇;我将如何在单独的子图上绘制后验的每个维度?把它们放在一起看起来很乱!

对美元符号表示歉意 - 我是新手,不确定如何正确显示数学。

谢谢

可以使用arviz,可以用

安装
pip install arviz

然后你可以使用

import arviz as az

az.traceplot(trace)

正如您所描述的那样工作。

注意 arviz 仍然有些不稳定,但应该会在接下来的几个月内取代 pymc3 的绘图功能。