2

我正在尝试将 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 中实现这些约束?

4

1 回答 1

3

你有两个选择:

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

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

1 是更好的选择,因为新变量可能会收敛得更快。见Ntzoufras 的书,(第 5 章),秒。5.4.2 用于讨论以及相关的错误代码。这也应该适用于锯齿,虽然我没有检查过。

于 2012-09-30T14:40:58.610 回答