2017-04-21 7 views
0

私は、範囲(0〜1)のすべての尤度の大きなベクトルを持っていますが、すべての数値は1よりもかなり小さいです。これらのベクトルの積の最大尤度を計算する必要があります。非常に小さい数を含む尤度

アンダーフローを回避するにはどうしたらよいですか?私が取った最初のステップは、私の配列を私の配列の最大値で除算することでした。私は2つのサンプリング確率をn回の和の積を最大化しています は、最終的に私はBICごとに最小化する必要があります。

BIC = -2. * ln(L) + 5n_theta(nz) 

とにかくLは、フォームの本当に小さな数字の配列です

L = product of ([(p(z1|a) + p(z1|b)), (p(z2|a) + p(z2|b)), ...., (p(zn|a) + p(zn|b))]) 

ここでは、2つのパラメータabがあり、その配列はサイズがnであり、それぞれp< 1である例です。

答えて

0

対数尤度での作業は考えましたか?

L = (p1 * p2 * p3) ** Nln(L) = N * (ln(p1) + ln(p2) + ln(p3)) になります。数値精度の問題にはるかに耐性があります。

そしてあなたが直接あなたの-2.0 * ln(L) + 5n_theta(nz)

+0

こんにちはでln(L)を使用することができ、私は私の質問を説明していたし、私は主にそれを編集したか悪い実現しました。 – Canuck

+0

似たようなことを試しましたが、間違って実装している可能性があります。ご協力いただきありがとうございます。 – Canuck

関連する問題