使用 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
的绘图功能。
我使用 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
的绘图功能。