“WinBUGS中节点mu [1,2]的多个定义”错误

时间:2016-11-11 10:35:36

标签: bayesian poisson winbugs winbugs14

我试图用Winbugs上的多个因变量来解决多元回归。但是我在编辑期间遇到错误。我试图解决相同问题的解决方案,但没有成功。任何帮助将受到高度赞赏。

model {
for(i in 1:n) 
{ for(k in 1:J)
 {                  y[i,k]~ dpois(mu[i,])
                    log(mu[i,1]) <- beta1[1]*x1[i] + beta2[1]*x2[i] + b[,1]
                    log(mu[i,2]) <- beta1[2]*x1[i] + beta2[2]*x2[i] + b[,2]
       }}    

#  PRIORS
     for (i in 1:n) { 
      for(k in 1:J)  {
      b[i,k] <- 1
              }} 
# Scale Matrix
     for(i in 1:J)
     {
     for (j in 1:J) 
      {  
       R[i,j] <- equals(i,j)
      }}
    for (j in 1:J) {beta1[j]~ dmnorm(zero[], B[,])
       beta2[j]~ dmnorm(zero[], B[,]) }
    for(i in 1:J)
     { 
         for (j in 1:J) 
       {  B[i,j] <- 0.01*equals(i,j)
      }}
    for (i in 1:J) { zero[i] <- 0}
    }


#DATA 
list(n=3, J=2)


#DATA
y[ ,1]  x1[]    x2[]    y[,2]   
   0       9.91     8.34     1               
  3    10.48    10.14    79          
 0     10.31    9.42     40

1 个答案:

答案 0 :(得分:0)

错误是因为您mu嵌套在两个for循环中。因此,您要填写行i J次,这是不可能的。你拥有的是:

for(i in 1:n){
for(k in 1:J){
             y[i,k]~ dpois(mu[i,])
                log(mu[i,1]) <- beta1[1]*x1[i] + beta2[1]*x2[i] + b[,1]
                log(mu[i,2]) <- beta1[2]*x1[i] + beta2[2]*x2[i] + b[,2]
   }}

它看起来应该是:

for(i in 1:n){
                log(mu[i,1]) <- beta1[1]*x1[i] + beta2[1]*x2[i] + b[,1]
                log(mu[i,2]) <- beta1[2]*x1[i] + beta2[2]*x2[i] + b[,2]
for(k in 1:J){
             y[i,k]~ dpois(mu[i,])

   }}

这样您就不会在mu

中为每个单元格提供多个定义