我正在尝试将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中实现这些约束?
答案 0 :(得分:3)
您有两种选择:
制作新零和变量(不要重新定义旧变量)并监控它们。
重新参数化模型以使用角点约束而不是求和为零。
1是更好的选择,因为新变量可能会更快收敛。见Ntzoufras' book, (ch.5),秒。 5.4.2讨论以及相关的错误代码。 也适用于jags,虽然我没有检查过。