Укажите функцию 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] 
}
Другие вопросы по тегам