首页 > 解决方案 > JAGS/BUGS 中的 if-else 条件

问题描述

我有很大的参数矩阵。

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

玩具示例如下:

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 )
  }
}

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

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

标签: if-statementjagswinbugs

解决方案


最简单的方法是foo在数据中提供旁边的所有条目foo[3,2]都丢失并且foo[3,2]is mu[3,2]。然后,您上面的代码应该可以正常工作(如果您删除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 )
}

推荐阅读