Условие if-else в 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 и 46730232, но я не могу обдумать проблема, как применить эти трюки (или подобные) в моем случае.

Есть ли простой способ реализовать такую ​​логику в JAGS/BUGS?


person garej    schedule 02.11.2020    source источник


Ответы (1)


Простейшим способом было бы указать foo в данных, где все записи, кроме foo[3,2], отсутствуют, а foo[3,2] - это 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 )
}
person DaveArmstrong    schedule 23.12.2020