首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点winbugs的多个定义

节点winbugs的多个定义
EN

Stack Overflow用户
提问于 2014-05-26 18:45:41
回答 1查看 1.7K关注 0票数 4

在winbug中,这段代码有一些问题。模型是正确的,数据是加载的,但当我编译时,软件输出是“节点Z的多个定义”。我不知道如何解决这个问题。

这就是模式:

代码语言:javascript
复制
#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

感谢所有愿意回答的人。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-28 09:03:22

您的问题在于在BUGS循环中多次定义一些节点。例如,B是在第一个ij循环中定义的np时间。臭虫不允许这样做。不能覆盖节点值。你需要

1)向BZdelta[k]beta[j]添加一些索引,使BUGS能够在循环期间在节点元素中存储模拟值。将B替换为B[i,j]Z替换为Z[i,j,k]

2)将BZdelta[k]beta[j]移动到只覆盖它们已经拥有的索引的循环。也就是说,BZ不存在于循环中,因为它们没有索引,delta[k]只在for(k in 1:...)循环中。

这个决定取决于您对模型的想法以及您想要存储的参数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23876062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档