2017-03-24 57 views
0

我是JAGS的新手,我通過R2jags包在R中運行模型。 模型代碼是基於從柯瑞& Schaub的2012('貝葉斯人口分析使用WinBUGS軟件「)取的代碼,第399JAGS - 將功能應用到所有參數節點

卡方度量差異計算

model { 
.... 
for(g in 1:G) { 
    for (t in 1:T) { 
    ... 
    E[g,t] <- pow((y[g,t] - eval[g,t]),2)/eval[g,t] 
    ... 
    }#t 
}#g 

fit <- sum(E[,]) 

}#model 

其中gt是網站和時間指數和GT然後網站的數量和年數

我得到一個錯誤,雖然

Error in jags.model(model.file, data = data, inits = init.values, n.chains = n.chains, : 
RUNTIME ERROR: 
Compilation error on line 140. 
Cannot evaluate subset expression for fit 

它是由JAGS相對於WinBUGS使用的不同語法引起的嗎?代碼與本書中使用的代碼相同,除了本書中的示例中,我有2個維度而不是3個維度。

回答

0

要回答問題的最後一部分,不要錯誤不是由JAGS中的不同語法引起的(儘管錯誤消息在BUGS中可能看起來不同)。

其實我看不出什麼毛病的代碼片段,您已經發布,下面重複的例子表明,它的作品至少在y和EVAL數據給出:

m <- 'model { 
for(g in 1:G) { 
    for (t in 1:T) { 
    E[g,t] <- pow((y[g,t] - eval[g,t]),2)/eval[g,t] 
    }#t 
}#g 

fit <- sum(E[,]) 

#data# G, T, y, eval 
#monitor# fit 

}#model 
' 

library('runjags') 

G=T <- 10 
y <- matrix(rnorm(100), nrow=G, ncol=T) 
eval <- matrix(rnorm(100), nrow=G, ncol=T) 

results <- run.jags(m) 

有無你驗證了140行是指什麼?第140行是你沒有顯示的東西,或者你可能已經在模型中的其他地方指定了不同的維數?

如果情況並非如此,並且您仍然遇到錯誤,請爲您的問題添加一個最小可重現的示例,以顯示問題(最好在您已經寫下的--- EDIT ---行下方)我們可以嘗試提供幫助。

馬特

+0

謝謝馬特,線路140是'適合< - 和(E [,])'代碼所示,我並沒有指定對不起!我會嘗試一個最小可重現的例子 – Quechua

相關問題