ベイジアン分析に最適なソフトウェアパッケージ


14

ベイジアン推論を実行するために、どのソフトウェア統計パッケージをお勧めしますか?

たとえば、openBUGSまたはwinBUGSをスタンドアロンとして実行したり、Rから呼び出すこともできます。しかし、Rにはベイジアン分析を実行できる独自のパッケージ(MCMCPack、BACCO)がいくつかあります。

Rのどのベイジアン統計パッケージが最適であるか、または他の選択肢(MatlabまたはMathematica?)についての提案はありますか?

比較したい主な機能は、パフォーマンス、使いやすさ、安定性、柔軟性です


1
(1)最適と見なされるパッケージがあるとは思わない。(2)ベイジアン分析にはサンプリングだけが含まれません。(3)これらのRパッケージは、サンプリングに役立ちます:Rtwalkmcmc。それらは対数事後のプログラミングのみを必要としますが、パッケージは絶対確実ではありません。(4)適切なプログラミングの下で​​:R<(Matlab,Python)<C効率の観点から(リンクを参照)などがよく知られています。

2
re:4とはいえ、公平な点-開発時間を含める場合、これは必ずしも当てはまりません。また、Rベースのソリューション(RとのインターフェイスまたはRパッケージとして実行)は、通常、サンプリングコードにC / C ++を使用しています。
user4733

@ user4733、C ++ベースのソリューションはBUGSバリアントより5〜10倍高速で、Rソリューションよりもはるかに高速です。私の答えをご覧ください。
好奇心が

回答:


11

外部バグバリアントが標準です。R内で作業するのは便利かもしれませんが、それらのパッケージが成熟していて同様に機能するのであれば驚かされます。Rと外部プログラムを橋渡しするライブラリを使用することが、通常最も一般的な妥協策です。

私は、jags / rjagsコンボを使用します(ジャグは、おおよそバグの方言と見なされる場合があります)。他のバグバリアントを試したことはありませんが、耳にした報告によると、ジャグのパフォーマンスと数値の問題に対処する能力は、他のバグバリアントよりも少し優れているということです。ジャグは使いやすいと思いますが、もちろん、その使用方法を知るには、ベイジアンデータ分析の知識が必要です。


うーん、アドバイスありがとうございます!バグバリアントは、ベイジアン分析を行う最も速い方法だと思いますか?
-BYS2

4
はい、しかし最初に本を読んでください。ゲルマンのベイジアンデータ分析は標準的な分析ですが、Kruschkeのベイジアンデータ分析では、侵入に対する障壁が低くなります(ただし、カバーの子犬が示すほど低くはありません)。
user4733

7

3つのBUGSバリアント(openBUGS / winBUGS、jags)の中で、jagsは将来の機能開発に関して最も有望であると思われ、openBUGS / winBUGSは死んだプロジェクトのようです。ただし、ジャグにはまだopenBUGS / winBUGSにあるいくつかの機能が欠けています(こちらも参照してください)。一方、ジャグは、WinBUGSに存在するいくつかの制限を削除しました。たとえば:

x ~ dnorm(0, tau) 
tau ~ dgamma(1.0E-3, 1.0E-3) # in WinBUGS, you cannot do this, 1.0E-3 is too small 
                             # for dgamma (use e.g. dgamma(0.01, 0.01))

幸いなことに、ほとんどのモデルでは、最小限の変更で3つのツールすべてで実行できるため、後で別のツールに問題なく切り替えることができます(それが私です)。

ただし、いくつかの理由(並列処理やインタープリターの性質の欠如など)により、これらのBUGSバリアントがベイジアン分析を行う最速の方法であるというのは事実ではありません!実際、まったく逆です。BUGSプロジェクトは、小さなデータセットで複雑なモデルをテストおよび開発するのに適しています。モデルを開発し、大規模なデータセットで繰り返し実行する必要がある場合、さまざまなツールを使用する方が効率的です。

たとえば、CppBugs / rcppコンボは、バグバリアントより5〜10倍高速であると言われています。原則は、基本的にモデルをC ++プログラムにコンパイルすることです。C++プログラムははるかに高速に実行されます。また、Rcppテストに関するDirk Eddelbuettelのブログもご覧ください。並列処理を試すこともできます。

また、使用してWinBUGSで並列計算を行うことができますbugsparallelを


ああすごい、すべてのアドバイスをありがとう、それは非常に有用でした:)
BYS2

どういたしまして。あなたの研究分野は何ですか?生態学なら、人口生態学のWinBUGSを使用したベイジアン分析に関する本をお勧めします。
好奇心が

興味深いことに、cppbugsがジャグと比較する方法についての参照はありますか?ジャグはC ++で記述されているため、解釈レイヤーがどの程度のオーバーヘッドを伴うかはすぐにはわかりません。
user4733

2
Andrew gelmanには、Stan(mc-stan.org)と呼ばれる有望なプロジェクトがあります。これは基本的に、c ++にコンパイルされるバグの方言であり、バグと比較して本当に速いようです。
ラスマスバース

2
@RasmusBååth独自の答えを作成する必要があります。 ベイジアンモデルのソフトウェア一部Stanになる可能性があります。
アリB.フリードマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.