Скажем, у нас есть следующее утверждение:
for (i in 1:N) {
pi[i,1] <- ....
pi[i,2] <- ....
pi[i,3] <- ....
...
pi[i,100] <- ...
Y[i] ~ dcat(p[i,])
}
Допустим, что Y[1] = 5
. Будут ли jags оценивать все узлы pi[1,1:100]
или только один необходимый, то есть pi[1,5]
?
Из моего опыта кажется, что JAGS неэффективно оценивает все родительские узлы, потому что моя модель была ускорена в 3 раза после того, как я избавился от dcat. Мне пришлось использовать несколько циклов for для разных результатов Y[i]
.
Теперь я понял, что dcat
в JAGS на самом деле не требует этого sum(pi[]) = 1
, и что dcat
нормализует pi[]
так, чтобы его сумма равнялась 1. Это означает, что он должен оценивать все узлы.
Это очень печально. Есть ли интеллектуальный эквивалент dcat
, который будет оценивать только один необходимый родительский узел? А как насчет WinBUGS и Stan?