由于贝叶斯因子,我想计算给定数据集的模型的边际可能性,以便将其与另一个进行比较。
我使用 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)
现在我不知道如何实现边际可能性。
先感谢您。