Я тоже боролся с этим и только что нашел способ извлечь параметры для трассировки (бета-версии, которые я уже знал).
Когда вы все подгоните, вы можете сохранить его в фрейме данных:
fit_df = fit.to_dataframe()
Теперь у вас есть новая переменная, ваш фрейм данных.Да, мне потребовалось некоторое время, чтобы обнаружить, что у pystan есть простой способ сохранить подгонку к информационному фрейму.
С этим под рукой вы можете проверить свой информационный фрейм.Вы можете увидеть его заголовок, напечатав ключи:
fit_df.keys()
вывод выглядит примерно так:
Index([u'chain', u'chain_idx', u'warmup', u'accept_stat__', u'energy__',
u'n_leapfrog__', u'stepsize__', u'treedepth__', u'divergent__',
u'beta[1,1]', ...
u'eta05[892]', u'eta05[893]', u'eta05[894]', u'eta05[895]',
u'eta05[896]', u'eta05[897]', u'eta05[898]', u'eta05[899]',
u'eta05[900]', u'lp__'],
dtype='object', length=9037)
Теперь у вас есть все, что вам нужно!Бета-версии представлены в столбцах, а также в идентификаторах цепочек.Это все, что вам нужно для построения бета-версий и трассировки.Поэтому вы можете манипулировать им любым способом и настраивать свои фигуры по своему усмотрению.Я покажу вам пример того, как я это сделал:
chain_idx = fit_df['chain_idx']
beta11 = fit_df['beta[1,1]']
beta12 = fit_df['beta[1,2]']
plt.subplots(figsize=(15,3))
plt.subplot(1,4,1)
sns.kdeplot(beta11)
plt.subplot(1,4,2)
plt.plot(chain_idx, beta11)
plt.subplot(1,4,3)
sns.kdeplot(beta12)
plt.subplot(1,4,4)
plt.plot(chain_idx, beta12)
plt.tight_layout()
plt.show()
Изображение с рисунка выше!
Надеюсь, это поможет (если вам все еще нужноэто);)