2

私は OpenBUGS を初めて使用し、logit() 関数を使用してモデルを適合させる際に問題が発生しました。

周りを読んで、これに対する1つの可能な解決策は、WinBUGS独自のロジット関数を使用せずにロジット関数を明示的に指定することであることがわかりました:

より複雑なモデルでは、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 統合ロジット関数を使用した元の尤度関数が次のとおりだったとします。

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] 
    }

どのように私はそれを明示的に書きますか?

どうもありがとうございました。

ヴィンチェンツォ

4

1 に答える 1

2

同僚のおかげで、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] 
}
于 2016-09-06T19:02:14.583 に答える