如何在使用对数似然时评估对都市 - 黑客建议价值的接受度?

时间:2015-03-11 16:33:35

标签: r mcmc

我目前正在R中编写MCMC程序以估计Rasch模型参数。为此,我在Gibbs采样器中使用了metropolis-hastings算法。

在下面的代码中,给出了项目参数的提议函数的一部分。

y <- rnorm(1,delta[i],sd) #proposal value
# delta[i] is the current delta value from which new proposal is simulated

# calculate log-probability for each person with proposal value
for(p in 1:length(theta)){
  z[i] = log(exp(x[p,i]*(theta[p]-y))/(1 + (exp(x[p,i]*(theta[p]-y)))))
}

# sum log-prob values and add log of f(y)
d.l.p[i] <- sum(z)+log(dnorm(y,0,1)) # d.l.p = delta likelihood proposal

## Is this correct?
if(runif(1)<= exp(d.l.p[i]-d.l.c[i])){ # d.l.c = delta likelihood current value

  delta[i] <- y
  d.l.c[i] <- d.l.p[i]

}

我的问题是,使用if(runif(1)<= exp(d.l.p[i]-d.l.c[i]))来确定是否应接受提案值是否正确?我知道在非对数似然的情况下,您可以使用if(runif(1)<= d.l.p[i]/d.l.c[i])来确定新值的接受。

由于这是一个概念问题而不是编码问题,我遗漏了其余的代码。但是,如果需要所有代码,我很乐意提供。

提前Tnx! Joost的

1 个答案:

答案 0 :(得分:0)

我一直在记录随机制服,如下所示:     如果((lpnew-lpold)GT;日志(runif(1)))