pymc3: иерархическая модель с несколькими наблюдаемыми переменными

У меня есть простая иерархическая модель с большим количеством людей, для которых у меня есть небольшие выборки из нормального распределения. Средства этих распределений также следуют нормальному распределению.

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 среднее из средств. Как восстановить исходное стандартное отклонение средних (в моем примере 12) из ​​модели pymc3?

Ответы на вопрос(1)

Ваш ответ на вопрос