Nobs[i] ~ dbin(p[i], N.size) logit(p[i]) <- a + xN[i] Mobs[i] ~ dpois(q[i], N.size) log(q[i]) <- b0 + b1 * xN[i] + xM[i]といった BUGS コードで,
i
: 場所
Nobs[i], Mobs[i]
: 観測値
xN[i], xM[i]
: 潜在変数 (状態変数)
log(q[i]) <- b0 + b1 * xN[i] + xM[i]といったかんじで, 「状態変数
xN[i]
をそのまま
状態変数 xM[i]
の説明変数に使う」
というのはマズい場合があるかもしれない.
xN[i]
が xM[i]
のあてはめに
「ふりまわされる」
ような状況になることがある.
Nobs[i] ~ dbin(p[i], N.size) n.simulated[i] ~ dbin(p[i], N.size) logit(p[i]) <- a + xN[i] Mobs[i] ~ dpois(q[i], N.size) log(q[i]) <- b0 + b1 * n.simulated[i] + xM[i]このように
n.simulated[i]
なる補助的な状態変数
(N
なる量を ``simulate'' した量)
を説明変数にすると,
xN[i]
が xM[i]
にあまり影響されなくなる.
影響されないほうが良い場合には,
このように定式化したほうがよい.
(そして n.simulated[i]
も「それっぽい」値を引いて「なんちゃって中央化」
をすると収束が改善される).
(x_left + x_right) * 0.5
で評価すると収束がむちゃくちゃに遅くなる
(もしくは永久に収束しない?)
(x_left + x_right) * 0.45
といったナゾのやり口だと問題なく収束しているように見える