p(x|a)*p(a)
ベイズ アプローチのように、明確なパラメータ を条件とする明確に定義された確率分布があるとします。
を見つけるためにx
、 のすべての値を積分したいと思うかもしれませんa
。Javaを使用して、このような数学的問題に対する一般的なアプローチはありますか?
p(x|a)*p(a)
ベイズ アプローチのように、明確なパラメータ を条件とする明確に定義された確率分布があるとします。
を見つけるためにx
、 のすべての値を積分したいと思うかもしれませんa
。Javaを使用して、このような数学的問題に対する一般的なアプローチはありますか?
はい、FORTRAN、C、Perlなどに存在するのと同じアプローチ:数学のコーディング。
控えめに言って、Javaは数値を扱う人々にとって典型的な言語の選択ではなく、その聴衆に対応するように書かれていなかったので、本質的な言語のサポートもライブラリのサポートも素晴らしいものではありません。私の推奨事項:問題に対して明示的に言語を選択してください-たとえば、R、Octave、Matlab、Mathematica、Maple-またはより多くの組み込み+継続的なコミュニティサポートがある言語-たとえば、C / C ++、FORTRAN、Perl。
そうは言っても、Javaで数値を実行することに専念している場合は、いくつかのライブラリがあります。NISTは私が見つけた最高の集まりですが、そのサイトは維持管理が不十分であるように思われるので、それは出発点にすぎません。
そこには多くの数値積分スキームがあります。「Java 数値積分」または「Java 求積」の Google。
実装の選択肢の 1 つはJSciです。
Forman Acton の「Numerical Methods That Work」の第 4 章「Quadrature」を読むと、被積分関数によっては簡単な問題ではないことがわかります。
ベイジアン分析をしていますか?モンテカルロ・マルコフ連鎖アプローチの方が良いかもしれません。WinBUGSを見て、John Krushke の優れた本を読んでください。
更新:被積分関数が分析関数の場合、シンボリック積分器を使用して x の関数を計算する必要があります。そうでない場合、できる最善の方法は WinBUGS です。モンテカルロ シミュレーションを実行して、多くの試行の後、ディストリビューションがどのように見えるかを構築します。
簡単な問題ではないため、質問に対する簡単な答えが見つかりません。