0

私のモデルは次のエラーで失敗しました:

Compiling rjags model...
Error: The following error occured when compiling and adapting the model using rjags:
 Error in rjags::jags.model(model, data = dataenv, inits = inits, n.chains = length(runjags.object$end.state),  :
  Error in node Y[34,10]
Observed node inconsistent with unobserved parents at initialization.
Try setting appropriate initial values.

いくつかの診断を行ったところ、チェーン 3 の初期値に問題があることがわかりました。ただし、これは時々発生する可能性があります。run.jagsこのような場合、モデルを再試行して再実行するよう JAGS 自体に指示する方法はありますか? たとえば、モデルを適切に初期化するために、別の N 回の試行を行うように彼に指示します。それはただ失敗するのではなく、非常に論理的なことです。それとも、何らかの方法で手動で行う必要がありtryCatchますか?

run.jagsPS: 現在、R から JAGS を実行するために使用していることに注意してください。

4

2 に答える 2

2

runjags にはそのための機能はありませんが、次のように書くのはかなり簡単です。

success <- FALSE
while(!success){
    s <- try(results <- run.jags(...))
    success <- class(s)!='try-error'
}
results

[このモデルが機能しない場合、ループは停止しないことに注意してください!]

(可能であれば) 動作することが保証されている初期値を提供する初期値関数/リストを指定することをお勧めします。

runjags バージョン 2 では、いくつかのシミュレーションがクラッシュしたときに成功したシミュレーションを回復することが可能になるため、(たとえば) 5 つのチェーンを並行して実行した場合、1 つまたは 2 つのクラッシュが発生した場合でも、3 つまたは 4 つのチェーンが残っていることになります。今後数週間で、他の多くの改善が含まれています。

于 2015-02-26T10:48:25.003 に答える