我在Stan中进行多元回归。

我想要回归器/设计矩阵的beta矢量参数的迹线图。

当我执行以下操作时:

fit = model.sampling(data=data, iter=2000, chains=4)
fig = fit.plot('beta')


我得到一个非常恐怖的形象:

python - stan向量参数的一个不错的pystan轨迹图-LMLPHP

我在追求一些用户友好的东西。我设法破解了以下内容,使其更接近我的追求。

python - stan向量参数的一个不错的pystan轨迹图-LMLPHP

我的hack如下插入pystan的背面。

r = fit.extract() # r for results
from pystan.external.pymc import plots
param = 'beta'
beta = r[param]
name = df.columns.values.tolist()
(rows, cols) = beta.shape
assert(len(df.columns) == cols)
values = {param+'['+str(k+1)+'] '+name[k]:
    beta[:,k] for k in range(cols)}
fig = plots.traceplot(values, values.keys())
for a in fig.axes:
    # shorten the y-labels
    l = a.get_ylabel()
    if l == 'frequency':
        a.set_ylabel('freq')
    if l=='sample value':
        a.set_ylabel('val')
fig.set_size_inches(8, 12)
fig.tight_layout(pad=1)
fig.savefig(g_dir+param+'-trace.png', dpi=125)
plt.close()


我的问题-当然我错过了一些事情-但是有没有更简单的方法可以从pystan获得我想要的矢量参数输出呢?

最佳答案

发现ArviZ模块可以很好地完成此任务。

可以在这里找到ArviZ:https://arviz-devs.github.io/arviz/

08-24 19:57