Укажите функцию logit явно в WinBUGS/OpenBUGS
Я новичок в OpenBUGS, и у меня возникла проблема с подгонкой модели с помощью функции logit().
Читая вокруг, я обнаружил, что одним из возможных решений этого было бы явное указание функции logit без использования собственной функции logit WinBUGS:
В более сложных моделях мы довольно часто сталкивались с проблемами при использовании собственной функции логита WinBUGS, например, с достижением конвергенции (на самом деле, проблемы могут возникать даже с довольно простыми моделями.). Поэтому часто лучше явно указать это преобразование с помощью 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).
Проблема в том, что я не понимаю, как это сделать, давайте предположим, что моя первоначальная функция правдоподобия, использующая интегрированную функцию logB WinBUGS, была:
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 ответ
Благодаря коллеге я нашел способ явно указать функцию logit в OpenBUGS, рабочий код следующий:
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]
}