У меня есть бета-распределение, параметризованное alpha = 40 , beta = 100 . У меня есть собранные данные, и я хочу обновить предыдущие с этими данными.
Заранее извиняюсь, я думаю, что у меня сегодня замораживание мозга!
Я думаю, что ответом будет использование MCMC, но я не совсем уверен. Я чувствую, что система проста, мы знаем, что апостериор пропорционален вероятности, умноженной на предыдущую.
Используя что-то вроде:
rh_real_dt = np.abs(np.random.randn(20))
with pm.Model() as model:
alpha = pm.Normal('alpha',mu = 40, sigma =1 )
beta = pm.Normal('beta',mu = 100,sigma =1)
RH_real = pm.Beta('RH_real',alpha = alpha,beta = beta,observed = rh_real_dt)
#step =pm.NUTS() #sets type of model
#start= pm.find_MAP()
# draw 5000 posterior samples
trace = pm.sample(5000, init='advi+adapt_diag_grad')
Но, учитывая данные, как это приводит к вероятности?
Я использовал нормальные распределения для описания априорных, бета-параметров для бета-распределения. Это то, как я должен думать об этом?
Во-вторых, использованный выше подход дает мне ошибку «плохой энергии». Когда я использую model.check_test_point()
, я получаю ответ:
alpha -0.92
beta -0.92
RH_real -inf
Любые мысли, если:
- Я использую правильный метод, чтобы получитьответ
- Почему я получаю сообщение об ошибке и как я могу ее исправить?