2017-04-21 92 views
0

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

我该如何避免下溢,我的钳工在所有尝试中都失败了。我采取的第一步是将数组除以数组中的最大值。 我最大限度地采样两个概率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))]) 

这里有一个示例,其中我改变了两个参数ab,这个数组的大小为n,每个p< 1

回答

0

你有没有考虑过对数似然函数?

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

然后你就可以直接在你的-2.0 * ln(L) + 5n_theta(nz)

+0

你好使用ln(L),我意识到我是多么不好解释了我的问题,我已经基本上编辑它。 – Canuck

+0

我尝试了类似的东西,但我相信我可能已经实现它不正确,感谢您的帮助,我会审查 – Canuck