JAGS/BUGS 中的 If-else 条件

If-else condition in JAGS/BUGS

我有一个很大的参数矩阵。

关键是在许多参数中,一些具有任意索引的参数会导致值错误,我想修复它们。

玩具示例如下:

foo[3, 2] <- mu[3, 2]    # mu is some (4,4) matrix from data input

for (r in 1:4) {
  for (c in 1:4) {
    foo[r, c] ~ dnorm( mu[r, c], .01 )
  }
}

我看到了一些像 15414303 and 这样的例子,但我无法解决如何在我的案例中应用这些技巧(或类似技巧)的问题。

有没有一种简单的方法可以在 JAGS/BUGS 中实现这样的逻辑?

最简单的方法是在 foo[3,2] 旁边的所有条目都缺失且 foo[3,2]mu[3,2] 的数据中提供 foo。然后,您上面的代码应该可以正常工作(如果您在代码中删除了 foo[3,2] 的定义)。另一种方法是定义固定单元格周围的循环。例如:

for(r in c(1,2,4)){
  for(c in 1:4){
    foo[r, c]  ~ dnorm( mu[r, c], .01 )
  }
}
for(c in c(1,3,4)){
  foo[3, c] ~ dnorm( mu[r, c], .01 )
}