1

したがって、次のコードは 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カテゴリ変数にしてパラメーターを推定しようとすると思いますが、これは理論的には苦痛のようです。意図したモデルを取得するために使用できるバグのトリックはありますか?

4

1 に答える 1

1

WinBUGS と OpenBUGS では、観測されたデータを観測されていない変数の決定論的な関数にすることはできません。あなたが提案するように、 dcat() を使用して、確率を正規分布で表すことができます。

JAGS に切り替えることを好むかもしれませんが、これには、この状況だけを処理するディストリビューション dround() があります。この場合、n = 0 の場合、n 桁に丸められたデータです。このフォーラムへの投稿は、この場合の現在の安定版リリースにバグがあることを示唆しており、開発バージョンをダウンロードする必要があるかもしれません.

于 2013-08-12T10:37:08.687 に答える