rjags を使用して 7 つの JAGS モデルをループで実行しようとしていますが、ループを実行するのに問題があります。
最初に 7 つのモデルを作成します (モデルの txt ファイルは既に作成されています)。JAGS コードは問題ないようで、問題は R ベクトルの経験不足だと思います。
model1 <- NULL
model2 <- NULL
model3 <- NULL
model4 <- NULL
model5 <- NULL
model6 <- NULL
model7 <- NULL
for (i in 1:totaltime) { #where totaltime is length=7
assign(paste("model",i,sep=""), jags.model(paste("model",i,".txt",sep=""), data=DataList , #inits=initsList ,
n.chains=nChains , n.adapt=adaptSteps ))
}
この部分は正常に実行され、7 つのモデルが作成され、次にバーンイン手順が行われます。
for (i in 1:totaltime) {
update(paste("model",i,sep=""), n.iter=burnInSteps)
}
この部分でエラーが発生します: オブジェクトのエラー[[名前、正確な = TRUE]] : 添字が範囲外です。ただし、次のように入力すると:
update(model1, n.iter=burnInSteps)
それはうまくいきます。更新機能がループの貼り付けを認識しないのはなぜですか? また、次の行は次のように述べています。
for (i in 1:totaltime) {
paste("codaSamples",i,sep="")=coda.samples(paste("model",i,sep=""), variable.names=parameters,n.iter=nPerChain,thin=thinSteps)
}
次のエラー メッセージが表示されます: Model$iter のエラー: $ 演算子はアトミック ベクトルでは無効です
ただし、ベクトルを次のように実行すると:
codaSamples1=coda.samples(model1, variable.names=parameters,n.iter=nPerChain,thin=thinSteps)
それはうまく機能します、とてもイライラします!