Обновление Prior с данными в python - Бета и нормальное распределение - PullRequest
1 голос
/ 01 ноября 2019

У меня есть бета-распределение, параметризованное 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

Любые мысли, если:

  1. Я использую правильный метод, чтобы получитьответ
  2. Почему я получаю сообщение об ошибке и как я могу ее исправить?
...