4

winbugs でこのコードに問題があります。モデルはシンタティックに正しく、データが読み込まれますが、コンパイルすると、ソフトウェアの出力は「ノード Z の複数の定義」です。問題を解決する方法がわかりません。

これはモデルです:

#BUGS Model
model {
for (i in 1:n){
  for (j in 1:p){
    Y[i , j] ~ dcat ( prob [i , j , 1: M[j]])
    B <- sum(alpha[j])  
  } 
  theta [i] ~ dnorm (0.0 , 1.0)
}
for (i in 1:n){
  for (j in 1:p){
    for (k in 1:M[j]){
      Z <- sum(delta [k ])
      eta [i , j , k] <- 1.7* alpha [j] * (B * (theta [i] - beta [j] ) + Z)
      exp.eta[i , j , k] <- exp( eta[i , j , k])
      psum[ i , j , k] <- sum(eta[i , j , 1:k])
      prob[i , j , k] <- exp.eta[i , j , k] / psum[i , j , 1:M[j]]
    }
  }
}
for (j in 1:p){
  alpha [j] ~ dnorm (0 , pr.alpha) I(0 , )
  for (k in 2:M[j]){
    delta [k] ~ dnorm (0.0 , 1.0)
  }
  for (k in 1:M[j]){
    beta [j] ~ dnorm (0 , pr.beta )
  }
}
delta [1] <- 0.0
pr.alpha <- pow(1 , -2)
pr.beta <- pow(1, -2)
}

#data
list(n=10, p=8)

M[] M[] M[] M[] M[] M[] M[] M[]
2 2 4 2 2 3 4 2 
2 1 1 2 1 2 2 3
1 2 1 3 1 1 4 4
2 1 1 2 1 1 2 4 
3 4 4 3 3 3 1 1 
4 3 4 4 4 4 4 4 
1 1 2 2 1 2 4 4 
2 1 1 3 1 4 2 4 
3 4 1 1 1 2 2 2 
2 2 2 1 4 4 4 4 
END

答えてくれるすべての人に感謝します。

4

1 に答える 1

3

問題は、いくつかのノードを BUGS ループで複数回定義することにあります。たとえば、最初のループBで np 回定義されています。バグはこれを許可しません。ノード値を上書きすることはできません。どちらかにする必要がありますij

B1) 、Zdelta[k]およびにいくつかのインデックスを追加してbeta[j]、バグがループ中にノードの要素内にシミュレートされた値を格納できるようにします。B例:とB[i,j]で置き換えZますZ[i,j,k]

また

2) BZdelta[k]およびbeta[j]を、それらが既に持っているインデックスのみをカバーするループに移動します。つまりBZインデックスがないためループ内ではなくdelta[k]、ループ内のみfor(k in 1:...)です。

決定は、モデルに対して何を念頭に置いているか、および保存したいパラメーターに依存します。

于 2014-05-28T09:03:22.377 に答える