rjags中的模型总和为零的约束

时间:2012-09-29 22:57:18

标签: r winbugs

我正在尝试将ANOVA模型纳入rjags。模型就像这样

for (r in 1:nE){
  for ( j in 1:nP){
    for ( i in 1:nA){
      logit(p[i,j,r]) <- mu[r] + theta[i,r] + varphi[j,r] + psi[(nA-i)+j,r]
    }
  }
}

我需要适应

的约束
for (r in 1:nE){
  theta[nA,r] <- 0 - sum(theta[1:(nA-1), r])
  varphi[nP,r] <- 0 - sum(varphi[1:(nP-1), r])
  psi[nK,r] <- 0 - sum(psi[1:(nK-1), r])
}

这是该模型的零约束的总和。但是,rjags给了我消息

"Compilation error on line 14. Attempt to redefine node varphi[16,1]"

如果删除约束部分,模型编译得很好但不会收敛。在BUGS中,模型被接受。

如何在rjags中实现这些约束?

1 个答案:

答案 0 :(得分:3)

您有两种选择:

  1. 制作零和变量(不要重新定义旧变量)并监控它们。

  2. 重新参数化模型以使用角点约束而不是求和为零。

  3. 1是更好的选择,因为新变量可能会更快收敛。见Ntzoufras' book, (ch.5),秒。 5.4.2讨论以及相关的错误代码。 也适用于jags,虽然我没有检查过。