我是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]
}
我是如何明确地写出来的?
非常感谢你。
蒙特拉
答案 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]
}