2017-03-24 4 views
0

私はJAGSを初めて使い、R2jagsパッケージ経由でRでモデルを実行しています。 は、モデルコードがKéry&シャウブ2012(WinBUGSを用い 'ベイジアン人口分析」)から取られたコードに基づいて、PG 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とは異なる構文で使用されていますか?このコードは、本の例のように3つではなく2つの次元がある点を除いて、本で使用されているものと同じです。

答えて

0

あなたの質問の最後の部分に答えるために、JAGSの構文が違うのでエラーは発生しません(ただし、エラーメッセージはバグで異なって見えるかもしれません)。

は、実際には私はあなたが投稿したコードスニペットに何かを見ることができないし、次の再現性の例では、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も、あなたが示していないものですか、あるいは次元数の異なるモデルのどこかにfitまたはEのいずれかを指定していますか?

これが当てはまらない場合でもエラーが発生した場合は、質問に問題を示す最小限の再現可能な例を追加してください(既に書いたものの下の--- EDIT ---の下にあることが好ましい)私たちはそれを手助けしようとすることができます。

マット

+0

ライン140は、 '<フィットされ、あなたのマットをありがとう - 合計(Eを[、])'のコードに示す、私はそれは申し訳ありません指定されていませんでした!私は最小再現可能な例を試してみましょう – Quechua

関連する問題