0

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)

それはうまく機能します、とてもイライラします!

4

0 に答える 0