私は、正規分布からの小さなサンプルを持つ多数の個人を含む単純な階層モデルを持っています。これらの分布の平均も正規分布に従います。
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))
PyMC3 を使用して、サンプルからモデル パラメーターを計算したいと考えています。
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()
の事後model_means
分布が、元の平均分布のようになることを期待していました。しかし、それ30
は手段の平均に収束するようです。pymc3 モデルから平均の元の標準偏差 (私の例では 12) を回復するにはどうすればよいですか?