В настоящее время я пытаюсь выполнить проверку модели с помощью PyMC, где моя модель - модель Бернулли, и у меня есть бета-версия. Я хочу сделать и (i) график gof, а также (ii) рассчитать заднее предсказательное значение p.Проверка модели PyMC Bernoulli
У меня есть мой код, работающий с моделью Binomial, но я изо всех сил стараюсь найти правильный способ создания модели Bernoulli. К сожалению, нет ни одного примера, где бы я ни работал. Мой код выглядит следующим образом:
import pymc as mc
import numpy as np
alpha = 2
beta = 2
n = 13
yes = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,0,0])
p = mc.Beta('p',alpha,beta)
surv = mc.Bernoulli('surv',p=p,observed=True,value=yes)
surv_sim = mc.Bernoulli('surv_sim',p=p)
mc_est = mc.MCMC({'p':p,'surv':surv,'surv_sim':surv_sim})
mc_est.sample(10000,5000,2)
import matplotlib.pylab as plt
plt.hist(mc_est.surv_sim.trace(),bins=range(0,3),normed=True)
plt.figure()
plt.hist(mc_est.p.trace(),bins=100,normed=True)
mc.Matplot.gof_plot(mc_est.surv_sim.trace(), 10/13., name='surv')
#here I have issues
D = mc.discrepancy(yes, surv_sim, p.trace())
mc.Matplot.discrepancy_plot(D)
Основная проблема, которую я имею в определении ожидаемых значений функции discrepancy
. Просто использование p.trace()
здесь не работает, так как это вероятности. Так или иначе, мне нужно включить размер выборки здесь, но я изо всех сил стараюсь сделать это так же, как и для модели Binomial. Я также не совсем уверен, если я правильно делаю gof_plot
.
Надеюсь, кто-то может помочь мне здесь! Благодаря!
Большое спасибо за ваш ответ. Подсказка с параметром '' 'size''' великолепна! Что касается ожидаемого значения, я не использовал функцию '' 'expval''', поскольку, как вы уже упоминали, она только отплевывает' '' p'''. Таким образом, я снова не уверен, что с этим решением несоответствие делает то, что он должен делать. Теперь он делает то, что сравнивает бинарные результаты данных и моделирования с параметрами вероятности. – fsociety
Другая мысль: если я распространю эту модель на категориальную модель, я еще более уверен, как ее обрабатывать. – fsociety
Я не очень хорошо знаком с функцией 'discrepancy'. В [этой теме] (http://stackoverflow.com/questions/30731681/goodness-of-fit-in-pymc-and-plotting-discrepancies) один из авторов 'pymc' советует использовать' gof_plot 'для создания задних предсказательных графиков. Я не понимаю, почему. – inversion