6

Javaで多変量正規(MVN)CDFを計算するための信頼できる正確なライブラリを知っている人はいますか?MATLABのmvncdf関数のようなものを探しています。10以上の寸法でそれができる必要があります。ほとんどの統計/数学ライブラリにはこの機能がありません。対数確率を計算できることはプラスです。

この投稿から、他のいくつかの言語で言及されている無料の実装はないようです。ストレートJavaの実装はうまくいきますが、ライセンスを必要とせず(MATLABやIMSLなどではない)他の言語の実装を受け入れ、最小限のオーバーヘッドでJavaから簡単に呼び出すことができます。

(この質問は、正規確率変数の順序付けの確率を計算しようとしているStackExchange数学の投稿の派生物です...他の数学的方法を使用して問題を直接解決しようとすることに興味がある場合は、チェックしてくださいそれを出します。)

4

2 に答える 2

5

いくつかの追加の調査を行った後、次のことが最も合理的な方法のようです。

多変量正規CDFは、計算するのが簡単ではなく(特に大きな次元の場合)、この主題について書かれたいくつかの学術論文があります。Alan Genz教授は、さまざまな多変量密度とCDFを計算するFortran-77サブルーチンを多数持っており、次のページで入手できます。http: //www.math.wsu.edu/faculty/genz/software/software.html

そのコードのいくつかからわかるように、別の言語で再実装するのは正確には簡単なことではありません。そのため、誰かがお金を払わない限り、それが行われなかったのかもしれません。多くの数学的/数値的プログラミングは研究レベルでFortranで行われているので、そこに最高のコードのほとんどがあります。

そのため、最適な結果を得るには、JNIまたはJNAを使用して(ネイティブコンパイルされた)Fortranサブルーチンを直接呼び出すのがおそらく最善でしょう。JNAは、次のような手順に従って実装するのが最も簡単なようです:http ://www.javaforge.com/wiki/66061 。それと他のいくつかの参照を使用して、MVNEXP(期待値)およびMVNDST(cdf)サブルーチンを呼び出すことができるようにJava-JNA-Fortranリンクを実装しました。ここでコードをチェックできます:

また、指摘する必要があります。いくつかの二変量分布や、CommonsMathにはないその他のもののためのネイティブJavaコードが存在します。上記のソースから採用されています:http ://www.iro.umontreal.ca/~simardr/ssj/indexe.html 。これは私が今まで見つけたことがなかった非常に良い数学ライブラリです。

于 2013-01-06T22:23:01.227 に答える