問題タブ [runjags]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - runjags プロットのオプションの設定
パッケージを使用してJAGSを実行し、runjags
カスタマイズされたプロットを作成しようとしています-チェーンの色を変更します(完全なモデルコードは質問にあります https://stats.stackexchange.com/q/62006/5509):
しかし、プロット パラメーターを変更することは不可能のようです。?runjagsclass では、 次のように記述します。
plot メソッドは、トレースと密度のプロットを作成します (これらは事前にプロットされて runjags オブジェクト内に保存されるため、ラティスまたはプロット関数の通常のオプションは使用できないことに注意してください)。
これは、プロットがrun.jags
呼び出しで既に作成されているようです! しかし、それではプロットオプションも変更できないようです。
質問:
チェーンの色など、プロット パラメータを変更するにはどうすればよいですか?
なぜ彼らは
run.jags
すでにプロットを作成するのですか? 通常、適切に設計されたアプリケーションは、ロジック (モデル計算) と出力を分離します。それには特別な理由がありますか?
r - runjags オブジェクトが大きすぎます
R2jags にはバグがあるため、新しいパッケージrunjagsを使用して JAGS を実行しようとしています(完全なモデル コードは質問https://stats.stackexchange.com/q/62006/5509にあります)。
それは魅力として機能しますが、このパッケージの欠点はrunjags
、関数によって返されるオブジェクトがrun.jags
、準備されたチャートと出力に既にバンドルされており、大きすぎることです。比較のために、対応する .Rdata ファイルのサイズ (2 つのチェーン、それぞれ 500 回の保存された反復、合計 1000 回の反復):
runjags
オブジェクト - 1.2 MBR2jags
オブジェクト - 212 kBmcmc.list
オブジェクト - 33 kB
オブジェクトは巨大ですが、後でモデルのインターフェイスrunjags
を使用できるように保存する必要があります。runjags
この問題の回避策はありますか?
r - Runjags - JAGS に適応フェーズを決定させる方法は?
Runjagsパッケージrun.jags
の機能を使用しています。問題は、それを必要としないモデルに対しても適応フェーズを強制することです。JAGS 自体に、適応フェーズの必要性とデフォルトの長さを決定させたいと考えています (適応フェーズが必要なモデルもあれば、そうでないモデルもあります)。ただし、ラッパーは、明らかにそれを必要としないモデルに対しても、適応フェーズのデフォルトの 1000 回の反復を強制します。run.jags
run.jags
この問題を説明する再現可能な例:
ここで、出力 R2jags::jags を見ると、このモデルは実際には適応を必要とadapt
せず、 への呼び出しは何もしません。おそらく JAGS に決定させるためです (詳細はこちら)。一方run.jags
、このモデルの (不必要な) 適応を強制するため、実行に時間がかかります。適応のために 1000 回、次にバーンインのために 1000 回、サンプルのために 1000 回の反復を行います。
JAGS を介して実行するときに、適応フェーズについて JAGS に決定させるにはどうすればよいrun.jags
ですか?
余談ですが、適応段階とバーンイン段階を混同しないでください。JAGS では別の段階です。適応フェーズは実際には MCMC のようには機能せず、一部のモデルでは必要ありません (これが、このバグが時々しか発生しない理由です)。
r - 要約/プロットの追加/削除には、runjags オブジェクトの再コンパイルが必要です
すべてのプロットを含む runjags オブジェクトが大きすぎるため、 を使用して、結果のオブジェクトをファイルに保存し、新しい R セッションで (as として) 復元してから、プロットを生成しようとしrun.jags
ましたplot=FALSE
runjags
out
(このトリックについては、こちらのディスカッションを参照してください: https://stackoverflow.com/a/21859618/684229 )
ただし、理由は不明ですが、これはモデルを再コンパイルして再度適応させます! を設定してもsample = 0, adapt = 0
!
グラフをプロットするだけでもかなり時間がかかり、かなり面倒です。プロットを使用して runjags オブジェクトを計算し、それらを削除して runjags オブジェクトを小さく保存しようとすると、同じことが起こります。
この問題を修正する方法に関するヒントはありますか (独自のプロット関数を作成することは別として)?
警告:extend.jags
同じ runjags オブジェクトで関数を2 回実行すると、すでに高速です。しかし、runjags オブジェクトを保存して新しいセッションで再度ロードすると、再びextend.jags
遅くなります。または JAGS が何かをキャッシュしているようrunjags
です (ただし、元の runjags オブジェクト内ではありません)。
r - runjags サマリーの psrf 値が低すぎませんか?
Runjags はpsrf = 1.0047
、明らかに収束の問題があるチェーンに対して非常に低いと報告しています。
using codaを計算しようとすると、psrf
より合理的に見える結果が得られます。
psrf
では、runjags による報告がこれほど低いのはなぜでしょうか。それはrunjagsの問題ですか、それとも何か間違っていますか?
R 3.1.0 で現在のバージョンの runjags (1.2.1-0) を使用しています。
編集:要約の作成中に警告が表示されました-前に言及しなかったことをお詫びします:
r - デバッグ目的で JAGS ノード値をダンプする方法はありますか?
JAGS から次のエラーが発生しました。
この単なる情報から、そこで何が起こっているかを知ることは非常に困難です。コードの次の部分が原因です。
Y[107]
ノードの親の値、つまりノードを出力すると非常に便利でしたpi[107,]
。これにより、エラーを探す場所が非常に明確なフィードバックが得られます。JAGSにそのような方法はありますか?
JAGS マニュアルの第 3.2 章で、JAGS はいくつかの有用なjags.dumpN.R
ファイルを残すことについて話しています。
モデルが正しくコンパイルおよび初期化されても、更新中にエラーが発生した場合、モデルの現在の状態が jags.dumpN.R という名前のファイルにダンプされます。ここで、N はチェーン番号です。次に、ダンプされたデータを R にロードして、エラーが発生したときの各チェーンの状態を調べる必要があります。
ただし、これが私のケースに当てはまるかどうかはわかりません。そこで、ダンプファイルを取得しようとしました。私はrunjags::run.jags()
JAGSを実行するために使用しているので、デバッグモードで実行しようとしました:
runjagsfiles_3
残念ながら、ディレクトリには有用な情報を含むダンプやファイルはありません 。
これらの「無効な親の値」をJAGSから取得する方法はありますか?
JAGS 3.4.0 を使用しています。
PS: 意図的に完全なモデル コードをここに提出しません。私の質問は JAGS に関する一般的なものであり、私のモデルが機能しない理由ではありません。
r - R で Coda オブジェクトを保存する方法
R で coda (mcmc.list) オブジェクトを保存する方法がわかりません。他の人から同様の質問がありましたが、回答が特に明確ではないことがわかりました。理想的には、coda オブジェクトを R.data ファイルまたはテキスト ファイル (csv など) として保存し、モデルを再実行することなく再インポートして JAGS チェーンを分析できるようにしたいと考えています (これには約 30 分かかります)。私のコンピューター)。現在、私の coda オブジェクト "coda.samples" は次のようになっています。
ご覧のとおり、これは 1094 個のパラメーターの 3334 個の推定値を含む 3 つのマトリックスのリストです (つまり、長さ 3334 の 3 つのチェーン)。この coda オブジェクトを保存して、毎回モデルを再実行することなく R にコールバックできるようにしたいと考えています。また、独自のチェーンが 3 つあるという事実も維持したいと考えています。
r - 初期値で失敗した後に自動的に再起動するようJAGSに指示できますか?
私のモデルは次のエラーで失敗しました:
いくつかの診断を行ったところ、チェーン 3 の初期値に問題があることがわかりました。ただし、これは時々発生する可能性があります。run.jags
このような場合、モデルを再試行して再実行するよう JAGS 自体に指示する方法はありますか? たとえば、モデルを適切に初期化するために、別の N 回の試行を行うように彼に指示します。それはただ失敗するのではなく、非常に論理的なことです。それとも、何らかの方法で手動で行う必要がありtryCatch
ますか?
run.jags
PS: 現在、R から JAGS を実行するために使用していることに注意してください。