問題タブ [mcmc]

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.

0 投票する
2 に答える
1381 参照

mcmc - PyMC を使用した 3 つの法線のフィッティング: 単純なデータでの不適切な収束

(この質問のものと同様) を使用して、3 つの法線をデータに適合させるための PyMC モデルを作成しました。

データをサンプリングした分布は明らかに重複していますが、3 つの明確なピークがあります (下の画像を参照)。この種のデータに 3 つの法線を当てはめるのは簡単で、MCMC 実行の 99% で (-10, 0, 10) からサンプリングした平均値が得られると期待しています。 3 つの正規分布からのデータ 私が期待する結果の例。これは 10 件中 2 件で発生しました。 ぴったりフィットする MCMC トレース 10 件中 6 件で発生した予期しない結果の例。これは奇妙です。なぜなら、-5 ではデータにピークがないため、サンプリングが行き詰まる可能性のある深刻な極小値 ((-5,-5) から (-6,-4) への移行) を実際に求めることができないからです。フィット感を改善する必要があります)。 不適切な適合を生成する MCMC トレース

ほとんどの場合、(アダプティブ メトロポリス) MCMC サンプリングが停止する理由は何ですか? サンプリング手順を改善するために可能な方法は何ですか?

したがって、実行は収束しますが、実際には適切な範囲を探索しません。


更新: 異なる事前確率を使用して、5/10 で正しい収束 (約 1 番目の画像) を取得し、他の 5/10 で間違った収束 (約 2 番目の画像) を取得します。基本的に、変更された行は以下の行で、AdaptiveMetropolis ステップ メソッドが削除されています。

0 投票する
2 に答える
401 参照

python - pymc 以外のサンプルでの pymc 診断と事後要約の使用

pymc を使用せずに生成したサンプルに対して、pymc の診断機能と要約機能を使用したいと考えています。一例として、pymc の mc_error ルーチンを自分のサンプル セットで使用したいと考えています。

一部の pymc 診断関数はサンプルの np.array を取得できますが、正しく理解できれば、トレース オブジェクトが必要な関数もあるようです。独自のサンプル セットを pymc が処理できるトレース オブジェクトに変換するにはどうすればよいですか? ポインタをいただければ幸いです。

私のサンプルは現在、各キーがサンプリングしている変数の名前であり、サンプルの np.array を指す辞書として保存されています。

ありがとう!

0 投票する
1 に答える
433 参照

r - Rmpi 送受信がぶら下がっていますか?

母集団 MCMC のコードを書いています。参考になればと思いますので、少しでもお役に立てればと思いますので、よろしくお願いいたします。

私は緩和されたディストリビューションを使用しており、交換の移動、つまり 2 つのチェーンの値を交換することを提案する移動を実行したいと考えています。

私がやったこと(マスターで起こっている交換)

私は最初にこれを書いた

  • 指定された反復回数 n の間、各チェーンを変化させます。

  • n回目の反復ごとに、スレーブの結果をマスターに送信し、チェーン間でパラメーターの交換を試みます。

  • 次に、更新された値をスレーブに送り返し、プロセスを繰り返します。

私が達成したいこと(スレーブ間の直接交換)

これは正常に動作していますが、コードをクリーンアップして master と slave の間の不要な通信を削除したかったのです。つまり、スレーブがそれらの間で直接通信できるようにします。

10個のスレーブをスポーンすると仮定すると、

  • 反復 n で、slave1-slave2、slave3-slave4、....、slave9-slave10 がそれらの間で通信できるようにしたい
  • 反復 2*n で、slave2-slave3、slave4-slave5、...slave8-slave9 がそれらの間で通信できるようにしたい

など、サンプルが温度ラダーを通過できるようにします。

問題

そして、これは私が問題に直面しているところです。
あるスレーブから別のスレーブに値を送信することに成功していると思います (送信しているスレーブのログ ファイルに印刷ステートメント「正常に送信されました」が出力されます) が、これは受信されていないようです (私の「正常に受信されました」ステートメントはパートナー スレーブのログに出力されません)。

そして、プログラムはただハングします。デッドロックを引き起こしたのではないかと思いますが、何が間違っているのかわかりませんか?

アドバイスいただけますか?この Parallel Tempering R コードをガイドとして使用しました http://www.lindonslog.com/mathematics/parallel-tempering-r-rmpi/

私のコードの下を見てください

どうもありがとう!

ソフィア

0 投票する
1 に答える
339 参照

modeling - PyMC: 独立分布からの 2 つの値の合計

私は、pymc を使用して観測から潜在変数を学習しようとしています。簡略化されたバージョンは次のとおりです。

$\lambda_0、\lambda_1$、

これらのパラメーターをそれぞれ使用する 2 つのディストリビューション $X_0、X_1$ があります。

$X_0 \sim Expon(\lambda_0)$, $X_1 \sim Expon(\lambda_1)$.

$X_i$ に関する観測はありません。代わりに、これらの変数の線形結合が観測されています: $x_0^{(0)} + x_1^{(1)} + x_1^{(1)} = 6$, $x_0^{(1)} = 2$ .

私の最初のアプローチは次のようなものでしたが、機能しているとは思いません:

このおもちゃの例を教えてください。

0 投票する
0 に答える
836 参照

bayesian - ベイジアンランキングでrjagsモデルのトレーニングを高速化するには?

全て、

rjagsを使用してベイジアンモデリングを行っています。ただし、観測数が1000を超える場合。グラフサイズが大きすぎます。

より具体的には、ベイジアンのランキング問題をやっています。伝統的に、1 つの観測は 1 つの X[i, 1:N]-Y[i] ペアを意味します。ここで、X[i, 1:N] は、i 番目のアイテムが N サイズの予測子ベクトルによって表されることを意味し、Y[i ] は応答です。目的は、予測値の点ごとの誤差 (最小二乗誤差など) を最小化することです。

ランク付けの問題は異なります。順序を重視するため、Y[i] と Y[j] の間の順序を表すためにペアワイズ 1-0 インジケーターを使用します。たとえば、Y[i]>Y[j] の場合、I(i 、j)=1; それ以外の場合は、I(i,j)=0 です。この 1-0 インジケーターを観測値として扱います。したがって、K 個の項目 Y[1:K] があると仮定すると、指標の数は 0.5*K*(K-1) になります。したがって、K が 500 から 5000 に増加すると、観測数は非常に多くなり、つまり 500^2 から 5000^2 になります。rjags モデルのガーフ サイズも大きく、たとえばグラフ サイズ > 500,000 です。そして、対数事後分布は非常に小さくなります。

そして、トレーニングを完了するには長い時間がかかります。消費時間は40時間以上だと思います。私がさらに実験を行うことは現実的ではありません。したがって、rjags を高速化する考えはありますか。RStan は Rjags よりも速いと聞きました。似たような経験をした人はいますか?


0 投票する
1 に答える
1136 参照

hidden-markov-models - PyMC: 状態空間モデルをどのように記述できますか?

以前は C を使用して MCMC をコーディングしていましたが、PyMC を試してみたいと思います。

X_n が基礎となる状態であり、そのダイナミクスがマルコフ連鎖に従い、Y_n が観測されたデータであるとします。特に、

Y_n は、平均が X_n に依存するポアソン分布と、未知の多次元パラメーター シータ X_n | X_{n-1} はシータに応じて分布します

PyMC を使用してこのモデルをどのように記述すればよいですか?

別の質問: X_n ではなく、theta の共役事前確率を見つけることができます。共役事前確率を使用して更新される事後と、MCMC を使用して更新される事後を指定することは可能ですか?

0 投票する
1 に答える
6187 参照

r - MICE での「次数 % の先行マイナーは正定値ではありません」エラー

miceかなり大きなデータ セット (30 個のカテゴリ予測変数と予測変数、
n = 1000) を使用して R で実行すると、次のエラーが発生します。

のエラーchol.default(fit.sum$cov.unscaled): 次数 17 の先行マイナーが正定値ではありません

polyreg代入法として、ほとんどの変数に (多項回帰)を使用します。このエラーが発生する理由がわからないため、それを再現するコードをこれ以上投稿することはできません。

MICE で線形回帰を使用している場合、ここで同様の問題が発生する投稿を見つけました。この投稿は、Cross Validated で回答を受け取りませんでした。

この投稿で示されているように、Gibbs サンプリングで必要になるいくつかの手順にも関連している可能性があります。MCMCOPは、MICEが使用する手順に関連する、を使用した自己プログラム関数でこのエラーを説明しました。

私は主要な未成年者が何であるかを知りません。