Как рассчитать предельную вероятность в Python с PyMC 2.3.7? - PullRequest
0 голосов
/ 03 июня 2019

Я хотел бы рассчитать предельную вероятность модели с данным набором данных, чтобы сравнить ее с другой, благодаря байесовскому коэффициенту.

Я использовал PyMC 2, чтобы получить почтовые распределения каждого параметра для каждой модели.

Вот принцип (я использовал MCMC):

## PRIOR
myPar  = pymc.Normal( name='Parameter',  mu=0.3,    tau=1/0.2**2,     value=0.3)

## LOG LIKELIHOOD
@pymc.stochastic(observed=True)
def mesLL(myPar = myPar, value = Obs):
    loglike = 0.0
    for i in range(len(value)):
        myMean = model(myPar)
        myStd2 = sigMes**2
        loglike += pymc.normal_like(value[i], mu = myMean, tau = 1./myStd2)
    return loglike

## SAMPLER
np.random.seed(123456)
pymc.numpy.random.seed(123456)
#
ModBayes = pymc.Model([myPar,mesLL])
sampler  = pymc.MCMC(ModBayes)
sampler.use_step_method(pymc.AdaptiveMetropolis, [myPar])
sampler.sample(iter = 10000, burn = 4000, thin = 3)

Теперь я надеваюНе знаю, как реализовать предельную вероятность.

Заранее спасибо.

1 Ответ

0 голосов
/ 05 июня 2019

Примерное предельное распределение каждого из выбранных параметров представляет собой частотный график выборочных значений параметров.В PyMC2 отсутствуют более полные инструменты построения графиков PyMC3 (а теперь и ArviZ), но вы можете просто использовать matplotlib (аналогично тому, что сделано в в примере в документации ).В этом случае это будет что-то вроде

from matplotlib.pyplot import hist

hist(ModBayes.trace('myPar')[:], density=True)
hist(ModBayes.trace('mesLL')[:], density=True)
...