したがって、次のコードは OpenBUGS で機能すると思っていましたが、代わりに「ノード Z の複数の定義」エラーが表示されます。
model
{
Z <- round(X)
X ~ dnorm(0,1)T(-2,2)
}
list(Z=0)
に置き換えZ <- round(X)
ても、Z <- X
引き続き同じエラーが発生します。この事実から、エラーは監視可能な変数の論理割り当ての使用に起因するものであり、特にエラーはround()
操作によるものではないと推測できます。
バグがこれを許可しないのはなぜですか? また、この場合の良い回避策は何ですか? これは、私が実装したいより一般的なバージョンです。これは本質的に、壁 (切り捨て) を持つ離散ガウスをモデル化しています。
model
{
for(i in 1:N){
Z[i] <- round(X[i])
X[i] ~ dnorm(mu,1)T(-2,2)
}
mu ~ dunif(-2,2)
}
基本的に、Z
「壁」(切り捨て) を持つ離散ガウス分布のようなもので分散したいと考えており、mu
上のデータから推定したいと考えていZ
ます。Z
カテゴリ変数にしてパラメーターを推定しようとすると思いますが、これは理論的には苦痛のようです。意図したモデルを取得するために使用できるバグのトリックはありますか?