問題タブ [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 に答える
1129 参照

c++ - テンプレート化されたバートンとナックマンのトリックの問題

動的ディスパッチを回避するために、BartonandNackmanトリックを使用してクラスを実装しようとしています。(私はパフォーマンスが重要なMCMCコードを書いています。)私はC ++の専門家ではありませんが、基本的なトリックは他の場所で機能しています。ただし、2番目の派生クラスをテンプレート化する必要がある場合があります。これは問題を引き起こすようです。私のコードの概要は次のとおりです。

問題はtemplate<class DerivedParameterType>次のとおりです<GibbsStep>(バートンとナックマンのトリックから)。g ++ v 4.01(OSX)を使用すると、次のエラーが発生します。

ドロップして、たとえば、にtemplate<class DerivedParameterType>置き換えると、すべてが正常にコンパイルされます。DerivedParameterTypedouble

何か案は?

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

r - MCMCログの混乱

誰か説明してくれませんか

常に 0 の MCMC 受け入れ率になりますか? どんな説明でも大歓迎です!

0 投票する
3 に答える
1006 参照

linux - JAGSでカスタムディストリビューションを定義するにはどうすればよいですか?

いくつかのMCMC分布をシミュレートするためにJAGSを使用しています。かなりの数のディストリビューションがサポートされているようです。しかし、私はJAGSで擁護されていない特定のディストリビューションからサンプリングしたいと思います。誰かが私たち自身のカスタムディストリビューションを書く方法を知っていますか?

ありがとう!

0 投票する
8 に答える
12452 参照

c - Matlab(vs. C / FORTRAN)は、21世紀のプロの数学研究者にとって立派な言語ですか?

私はmatlabの熱心なユーザーです。これは主に、これが私が最初に学んだことであり、切り替えるのに十分な大きな違いがある問題に遭遇していないためです。私は数値最適化/線形代数から来ました。そこでは、数百万の自由度で最適化と固有値の計算を実行しました。最近、私はランダム性の領域に入りました。そこでは、私はもともと私が変えざるを得ないという印象を受けていました。しかし、コードを最適化し、乱数ジェネレーターへのシードを注意深く初期化した後、私はほぼ同時に同時代の人たちと同じモンテカルロタスクを実行することができます。私の理解では、基本レベルの「if」ステートメントなどは、matlabでは大幅に遅くなります。ただし、ベクトル化できる各ループ内に重要な計算がある場合、I ' m確信していないCの方が良いでしょう。そして、とにかく、私の上限は他のどの専門家よりも劣っていないという意味で、matlabはうまく機能しているようです(そして多くの場合、それ以上のようです)。ささいなおもちゃの言語としてずっと前にmatlabを書き留めてきた、ここのプロCの人々からたくさんの反応を得るだろうと私は感じています。私はプロの研究者であり、MATLABは最高レベルの計算集約型の数理計画法で競争力があると主張しています。私が間違っている ?C / FORTRANなどの低水準言語への変更を検討する必要がありますか?なぜまたはなぜそうではないのですか?私のような人はいますか?どうもありがとう!乾杯 ささいなおもちゃの言語としてずっと前にmatlabを書き留めてきた、ここのプロCの人々からたくさんの反応を得るだろうと私は感じています。私はプロの研究者であり、MATLABは最高レベルの計算集約型の数理計画法で競争力があると主張しています。私が間違っている ?C / FORTRANなどの低水準言語への変更を検討する必要がありますか?なぜまたはなぜそうではないのですか?私のような人はいますか?どうもありがとう!乾杯 ささいなおもちゃの言語としてずっと前にmatlabを書き留めてきた、ここのプロCの人々からたくさんの反応を得るだろうと私は感じています。私はプロの研究者であり、MATLABは最高レベルの計算集約型の数理計画法で競争力があると主張しています。私が間違っている ?C / FORTRANなどの低水準言語への変更を検討する必要がありますか?なぜまたはなぜそうではないのですか?私のような人はいますか?どうもありがとう!乾杯

0 投票する
3 に答える
464 参照

openmp - OpenMPの「for」ループ効率を注文

本質的にシーケンシャルである単一のMCMCチェーンを並列化しようとしているため、実行される反復の順序を維持する必要があります。この目的のために、私はOpenMPを介して「orderedfor」ループを使用することを考えていました。OpenMPでの順序付きforループの実行が実際にどのように機能するのか知りたいのですが、コードの並列化に関して実際にスピードアップを提供しますか?

ありがとう!

0 投票する
6 に答える
2112 参照

c - Metropolis-Hastings アルゴリズムを使用して、C または C++ コードを R コードに組み込み、MCMC プログラムを高速化する方法

Metropolis-Hastings アルゴリズムを使用して、C または C++ コードを R コードに組み込み、MCMC プログラムを高速化する方法についてアドバイスを求めています。私は MCMC アプローチを使用して、さまざまな共変量が与えられた場合に、個人が第三者 (裁判官) によって社会的地位階層の特定のランクに割り当てられる可能性をモデル化しています。各個人の社会的地位の評価に基づいて、個人のグループ (4 つの村にまたがる約 80 人) をランク付けします。したがって、各裁判官に対して、階層内の各個人の位置の判断に対応するランクのベクトルがあります。

これをモデル化するために、ランクを割り当てるとき、裁判官は個人の効用の潜在的な尺度uの相対値に基づいて決定を下していると仮定します。これを考えると、特定の裁判官によって生成されたランクのベクトルrは、ランク付けされた個人の有用性を表す観測されていないベクトルuの関数であると仮定できます。ここで、 uの値がk 番目に高い個人は、 k番目のランクが割り当てられます。関心のある共変量を使用してuを多変量正規分布変数としてモデル化し、モデルによって生成されたuの分布を考慮して、観測された順位の尤度を決定します。

最大で 5 つの共変量の効果を推定することに加えて、審査員と項目の間の分散を表すハイパーパラメーターも推定します。したがって、チェーンの反復ごとに、多変量正規密度を約 8 ~ 10 倍推定します。その結果、5000 回の反復には最大 14 時間かかる場合があります。明らかに、5000 回以上実行する必要があるため、プロセスを劇的に高速化する手段が必要です。これを踏まえて、私の質問は次のとおりです。

(i) C または C++ でチェーンのすべてではないにしても、一部を実行することで最高の速度向上が得られると仮定するのは正しいですか?

(ii) 質問 1 の答えが「はい」の場合、どうすればよいでしょうか? たとえば、すべての R 関数を保持したまま、単純に C または C++ でループを実行する方法はありますか?つまり、C から R 関数を呼び出してからループを実行できますか?

(iii) 私が本当に知りたいのは、C または C++ コードを自分のプログラムに組み込むための最善の方法だと思います。

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

python - PyMC を使用して二重統合を実行する

MCMC メソッドを使用して二重積分を実行する必要があります。私はすでに正しい結果でrombergdoublequadの統合を使用してそれを行っています。結果を比較するには、MCMC 統合も使用する必要があります。PyMCを理解するのは難しいと思いました。

概要は次のとおりです。いくつかの時系列データがあり、どの分布がそれに適合するかを調べる必要があります。二重積分を含む何をすべきかを教えてくれる一連の方程式があります。

いくつかのガイダンスを期待しています。

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

performance - シンプルなCommonLispギブスサンプラープログラムの最適化

演習として、 Darren Wilkinsonによるブログ投稿Gibbssamplerのサンプルプログラムをさまざまな言語で書き直しました(再検討) 。

コードは以下のとおりです。このコードは、SBCL 1.0.56を使用して、私の(5歳の)マシンで約53秒で実行され、buildappを使用してコアイメージを作成し、

これが投稿の他の言語のタイミングの計算方法だったので、私はそれに匹敵する何かをするだろうと思いました。投稿のCコードは約25秒で実行されます。可能であれば、Lispコードを高速化してみたいと思います。

次に、 asgibbsを呼び出しsh gibbs.shて実行可能ファイルをビルドしましたgibbs.sh

SBCL 1.0.56でコンパイルすると、6つのコンパイラノートが表示されます。これは以下で再現されます。それらについてどうしたらよいかわかりませんが、ヒントをいただければ幸いです。

更新1:Rainer Joswigの回答は、SQRTの議論が否定的である可能性があることを指摘しました。これは、私が見たあいまいなコンパイラノートのソースでした。

コンパイラは、引数の値が正であるかどうかがわからないため、結果が複素数になる可能性があると不満を漏らしていました。この例では、値xはガンマ分布からのサンプル変量であるため、常に0より大きくなります。SBCLユーザーメーリングリストのStephanによって有益に指摘されました(スレッド「Optimizing a simple Common Lisp」の2番目のメッセージを参照してください)。ギブスサンプラープログラム」、これは次のようにxがゼロより大きいかゼロであると宣言することで解決できることを示しています。

FLOATタイプ間隔指定子に関する関連ドキュメントについては、CommonLispHyperspecを参照してください 。

これはコードを少しスピードアップするようです。現在は確実に52秒未満ですが、それでもそれほど大きなメリットはありません。これはまたについてのメモを残します

なんらかの理由で修正できない場合は、その理由を教えてください。また、メモの意味の説明は、関係なく興味深いでしょう。具体的には、pointerここでその言葉はどういう意味ですか?これは、C関数が呼び出されているという事実に関連していますか?また、コスト13はあまり役に立たないようです。何が測定されていますか?

また、Rainerは、実行時間を短縮する可能性のあるconsingを削減できる可能性があることを示唆しました。コンシングリダクションが可能か、それともランタイムを短縮できるかはわかりませんが、意見やアプローチに興味があります。全体として、この機能のパフォーマンスを改善するためにできることはあまりないようです。多分それは小さすぎて単純です。

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

python - 事後分布MCMCのフィッシャー情報

私が使用している方法では、事後分布のフィッシャー情報を計算する必要があります(すべてのハイパーパラメーターに関して)。現在私が持っているのは、事後分布からのモンテカルロサンプルです。これらを使用して、それぞれ2次および1次導関数のサンプル平均と共分散で近似できると思いますが、より効率的な方法を探しています。

ただし、使用することが提案されましたがoptim(..., Hessian=TRUE)、最適化ルーチンがどのように役立つかわかりません。

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

r - R コード mcmcplots 関数

mcmcplot()R関数が呼び出されたときにブラウザを開かないようにする方法はありますか? クラスターで R コードを実行する必要がありmcmcplot()、ブラウザーを開こうとすると吐き出します。

出力をファイルにダンプできますか?