Ich habe ein einfaches hierarchisches Modell mit vielen Individuen, für die ich kleine Stichproben aus einer Normalverteilung habe. Die Mittel dieser Verteilungen folgen ebenfalls einer Normalverteilung.pymc3: hierarchisches Modell mit mehreren Variablen
import numpy as np
n_individuals = 200
points_per_individual = 10
means = np.random.normal(30, 12, n_individuals)
y = np.random.normal(means, 1, (points_per_individual, n_individuals))
Ich möchte PyMC3 verwenden, um die Modellparameter aus der Probe zu berechnen.
import pymc3 as pm
import matplotlib.pyplot as plt
model = pm.Model()
with model:
model_means = pm.Normal('model_means', mu=35, sd=15)
y_obs = pm.Normal('y_obs', mu=model_means, sd=1, shape=n_individuals, observed=y)
trace = pm.sample(1000)
pm.traceplot(trace[100:], vars=['model_means'])
plt.show()
Ich erwarte die hintere von model_means
wie meine ursprünglichen Verteilung der Mittel zu suchen. Aber es scheint zu konvergieren 30
das Mittel der Mittel. Wie stelle ich die ursprüngliche Standardabweichung der Mittel (12 in meinem Beispiel) vom pymc3 Modell wieder her?