如何找到后验分布的支持来应用Metropolis-Hastings MCMC算法?

M Silva 11/01/2013. 1 answers, 596 views
bayesian mcmc inference

我试图使用Metropolis-Hastings采样器使用MCMC算法从后验分布中进行采样。

我应该如何处理我被困在后验区域的概率为零的情况?

存在这些区域是因为后验分布被截断,并且由于计算机上的数值限制,如果距离平均值很远,则可能性变为零。 也就是说,可能性是正常分配的; 如果距离平均值100个标准偏差,则计算机出现零概率。

我想知道的是如何选择链的初始值,以确保它包含在后部的支持中。

1 Answers


Teco 11/26/2013.

这是一个实现问题,因为从理论上讲,MCMC对截断分布没有问题。

让$ D $成为你后路的支持。 只需将你的log-posterior定义为$ - \ infty $ if $ $ theta \ not \ in D $并选择一个合适的值作为初始点$ D $。

例如,假设$ x_1,\ dots,x_n \ stackrel {ind。} {\ sim} \ exp(\ lambda)$和$ \ lambda \ sim Unif(0,10)$。 以下代码显示了如何使用包'mcmc'为此模型实现Metropolis-Hastings。

library(mcmc)

set.seed(123)
x = rexp(100,1)  # The theoretical value of lambda is 1

# logposterior    
logpost = function(lambda){
if(lambda>0 & lambda <10) return(sum(dexp(x,lambda,log=T)))
else return(-Inf)
}

# Metropolis-Hastings

NS = 55000

out <- metrop(logpost, scale = .5, initial = 1, nbatch = NS)

out$accept

lambdap =   out$batch[ , 1][seq(5000,NS,25)] # posterior simulations after burning and thinning

hist(lambdap) 

Related questions

Hot questions

Language

Popular Tags