2012-09-29 48 views
2

我試圖將一個ANOVA模型放入rjags中。該模型是這樣的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中實現這些約束?

回答

3

你有兩個選擇:

  1. 零和變量(不重新定義舊的),並監視他們,而不是。

  2. 重新參數化模型以使用拐角約束而不是求和到零。

1是更好的選擇,因爲新變量可能會收斂得更快。見Ntzoufras' book, (ch.5),秒。 5.4.2討論以及相關的錯誤代碼。這應該也工作的麻煩,雖然我沒有檢查。