涉及非常小数字的可能性
Likelihood involving very small numbers
我有一个很大的似然向量,它们都在(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))])
这是一个示例,其中有两个参数 a
和 b
,我改变了数组的大小 n
,每个 p
是 < 1
。
您是否考虑过使用对数似然法?
L = (p1 * p2 * p3) ** N
变为 ln(L) = N * (ln(p1) + ln(p2) + ln(p3))
这将更能抵抗数值精度问题。
然后你可以直接在-2.0 * ln(L) + 5n_theta(nz)
中使用ln(L)
我有一个很大的似然向量,它们都在(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))])
这是一个示例,其中有两个参数 a
和 b
,我改变了数组的大小 n
,每个 p
是 < 1
。
您是否考虑过使用对数似然法?
L = (p1 * p2 * p3) ** N
变为 ln(L) = N * (ln(p1) + ln(p2) + ln(p3))
这将更能抵抗数值精度问题。
然后你可以直接在-2.0 * ln(L) + 5n_theta(nz)
ln(L)