6

私はStanで重回帰を行っています。

リグレッサー/計画行列のベータ ベクトル パラメーターのトレース プロットが必要です。

私が次のことをするとき:

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

私はかなり恐ろしいイメージを得る:

ベクトル パラメーターの恐ろしいトレース プロット

私はもう少しユーザーフレンドリーなものを求めていました。私は、私が求めているものに近い以下をハックすることに成功しました。

ベクトル パラメーターのトレーサ プロットの改善

私のハックは、次のように 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から私が求めている種類の出力を得る簡単な方法はありますか?

4

2 に答える 2