首页 > 解决方案 > 尝试在 JAGS 中重新定义节点编译错误

问题描述

我正在尝试从 R 运行以下 JAGS 代码。我只是显示发生错误的代码的一部分。

for(mmm in 1 : p){ 
                 for(jj in 1 : K){
                  vv[jj] ~ dbeta(1,1);
                 }
        pp[1] <- vv[1];
                 for (jjj in 2 : K){
                          pp[jjj] <- vv[jjj] * (1 - vv[jjj-1]) * pp[jjj-1]/vv[jjj-1];
                 }
    }

错误Attempt to redefine node vv[1]在第 3 行。我不确定为什么会发生错误。任何帮助,将不胜感激。

标签: rjagsrjags

解决方案


你有这个1:K循环嵌套在你的1:p循环中。因此,当mmm12您将覆盖vv. 在不了解该模型的更多信息的情况下,有两种可能的解决方案。

  1. 从嵌套的 for 循环中删除这些。
  2. 用 索引1:p循环内的值mmm

假设第二个答案是您需要的,它看起来像这样:

for(mmm in 1 : p){ 
  for(jj in 1 : K){
    vv[mmm, jj] ~ dbeta(1,1);
  }
  pp[mmm,1] <- vv[mmm,1];
  for (jjj in 2 : K){
    pp[mmm,jjj] <- vv[mmm,jjj] * 
    (1 - vv[mmm,jjj-1]) * pp[mmm,jjj-1]/vv[mmm,jjj-1];
  }
}

推荐阅读