我已经使用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)
以获得后代的可视化。输出以下内容:
我很好奇;我将如何在单独的子图中绘制后验的每个尺寸?将它们全部融合在一起看起来很混乱!
对美元符号表示歉意-我对此并不陌生,不确定如何正确显示数学。
谢谢
答案 0 :(得分:2)
您可以使用arviz,它可以与
一起安装pip install arviz
然后您可以使用
import arviz as az
az.traceplot(trace)
您所描述的工作方式。
注意arviz
仍然有些不稳定,但是应该在接下来的几个月内替换pymc3
的绘图功能。