使用PYMC3的跟踪图跟踪单个尺寸?

时间:2018-08-28 20:53:49

标签: python logistic-regression bayesian pymc3 mcmc

我已经使用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) 

以获得后代的可视化。输出以下内容:

Click for image

我很好奇;我将如何在单独的子图中绘制后验的每个尺寸?将它们全部融合在一起看起来很混乱!

对美元符号表示歉意-我对此并不陌生,不确定如何正确显示数学。

谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用arviz,它可以与

一起安装
pip install arviz

然后您可以使用

import arviz as az

az.traceplot(trace)

您所描述的工作方式。

traceplot from arviz

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