涉及非常小的数字的可能性

时间:2017-04-21 00:21:44

标签: python numpy data-fitting underflow

我有一个大的可能性向量都在范围内(0到1)但所有数字都小于1.我需要计算这些向量乘积的最大似然。

我怎样才能避免下沉,我的钳工在所有尝试中都失败了。我采取的第一步是将我的数组除以数组中的最大值。 我正在最大化两次采样的两个概率之和的乘积,最终我需要根据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))])

以下是一个示例,其中包含两个参数ab,我变化了,数组的大小为n,每个p< 1

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用对数似然?

L = (p1 * p2 * p3) ** N变为ln(L) = N * (ln(p1) + ln(p2) + ln(p3)) 这对数值精度问题更具抵抗力。

然后您可以在ln(L)

中直接使用-2.0 * ln(L) + 5n_theta(nz)