私の質問は数学とCSの両方の問題に対応していますが、パフォーマンスの高い実装が必要なので、ここに投稿します。
問題:
Python行列として定義された推定正規二変量分布がありますが、Javaで同じ計算を転置する必要があります。(ここにダミーの値)
mean = numpy.matrix([[0],[0]])
cov = numpy.matrix([[1,0],[0,1]])
inuptで整数値(x、y)の列ベクトルを受け取ったとき、その指定されたタプルの確率を計算したいと思います。
value = numpy.matrix([[4],[3]])
probability_of_value_given_the_distribution = ???
さて、材料の観点から、これは私の法線の確率密度関数の積分に3.5 < x < 4.5
なります。2.5 < y < 3.5
私が知りたいこと:
これの効果的な実装を回避する方法はありますか?それは、行列上で定義された式と二重積分を処理することを意味しますか?それに加えて、自分で実装しなければならない場合は時間がかかりますが、これは計算コストが高くなります。おおよその解決策は私にとっては完全にうまくいくでしょう。
私の推論:
単変量正規分布では、累積分布関数を使用するだけで済みます(または、標準分布関数の値を保存してから正規化することもできます)が、残念ながら、多変量の閉じた累積分布関数形式はないようです。
単変量の別のアプローチは、二変量近似の逆関数を使用することです(つまり、正規分布を二項式として近似します)が、これを多変量に拡張すると、共分散をカウントし続ける方法がわかりません。
誰かがすでにこれを実装していることを本当に望んでいます。すぐに必要になり(私の論文を完成させます)、何も見つかりませんでした。