Momentan mache ich Modellierung und Parameterschätzung mit Stan, aber da das Trae-Diagramm zerquetscht und schwer zu sehen ist, gab es eine Möglichkeit, es ein wenig einfacher zu sehen, also werde ich es teilen. (Vielleicht ist es natürlich für diejenigen, die wissen ...) Bitte lassen Sie mich auch wissen, ob es einen besseren Weg gibt.
OS | Windows10 |
Python | 3.7.4 |
PyStan | 2.19.1 |
stan_model_ver1.py
import arviz
import pandas as pd
data = pd.read_csv("~~.csv")
dat = {"Im Wörterbuch definiert"}
model = StanModel(file="~~.stan")
fit = model.sampling(data=dat, n_jobs=-1, seed=999, iter=1000,chains=1)
arviz.plot_trace(fit)
So etwas wird mit gezeichnet.
Es ist jedoch schwer zu erkennen, ob es viele Parameter gibt ...
Deshalb,
stan_model_ver2.py
import arviz
import pandas as pd
data = pd.read_csv("~~.csv")
dat = {"Im Wörterbuch definiert"}
model = StanModel(file="~~.stan")
fit = model.sampling(data=dat, n_jobs=-1, seed=999, iter=1000,chains=1)
'''====Änderung unten ==='''
fit_df = fit.to_dataframe()
index = fit_df["draw"]
lenght = len(fit_df.keys())-7
for i in range(lenght):
ob = fit_df[fit_df.keys()[i+3]]
plt.subplots(figsize=(15, 7))
plt.title(f"{fit_df.keys()[i+3]}")
plt.subplot(1, 2, 1)
sns.distplot(ob)
plt.subplot(1, 2, 2)
plt.plot(index, ob)
plt.savefig(f"figure/stan_figure/{fit_df.keys()[i+3]}.png ")
plt.show()
Wird besorgt.
Es dauert ein wenig, einen Datenrahmen zu erstellen und jeden Parameter einzeln zu visualisieren.
Auf diese Weise wird es einfacher, jede Stufe zu sehen.
Wenn es viele Parameter gibt, wird dieser möglicherweise nicht angezeigt, selbst wenn Sie versuchen, den Konvergenzstatus jedes Parameters mit "print (fit.stansummary ())" zu überprüfen. (Besonders unter Berücksichtigung des Zeitreihenmodells) In einem solchen Fall
omake.py
summary_df = fit.stansummary()
file = open('summary_stan.txt', 'w')
string = summary_df
file.write(string)
Wenn Sie es als solche Textdatei speichern, können Sie den Status der Parameter überprüfen, die Sie anzeigen möchten.
Recommended Posts