在WinBUGS / OpenBUGS

时间:2016-09-06 15:17:13

标签: bayesian winbugs r2winbugs openbugs

我是OpenBUGS的新手,我在使用logit()函数拟合模型时遇到了一些问题。

阅读我发现一个可能的解决方案是显式指定logit函数而不使用WinBUGS自己的logit函数:

  

在更复杂的模型中,我们经常遇到问题   使用WinBUGS自己的logit函数,例如实现   收敛(实际上,即使相当简单也可能出现问题   楷模。)。因此,通常最好指定转换   通过logit.p [i]< -log(p [i] /(1-p [i]))显式,p [i]< -   exp(logit.p [i])/(1 + exp(logit.p [i]))或p [i]< - 1 /(1 + exp( -   logit.p [I]))。

(更多信息请点http://www.mbr-pwrc.usgs.gov/software/kerybook/AppendixA_list_of_WinBUGS_tricks.pdf点14)。

问题是我不明白该怎么做,让我们假设使用WinBUGS集成logit函数的原始似然函数是:

for (i in 1:n){
    y[i] ~ dbern(p[i])
    logit(p[i]) <- beta[1] + beta[2]*x1[i] + beta[3]*x2[i] + beta[4]*x3[i] 
    }

我是如何明确地写出来的?

非常感谢你。

蒙特拉

1 个答案:

答案 0 :(得分:2)

感谢同事,我找到了在OpenBUGS中明确指定logit函数的方法,工作代码如下:

for (i in 1:n){
y[i] ~ dbern(logit.p[i])
logit.p[i] <- 1 / (1 + exp(-p[i]))
p[i] <-  beta[1] + beta[2]*x1[i] + beta[3]*x2[i] + beta[4]*x3[i] 
}