泊松分布实现中的溢出错误
Overflow error in poisson distribution implementation
我正在尝试在我的代码中将泊松分布实现为 lambda 函数:
likelihood = lambda lamb: lamb**S / math.factorial(S) * numpy.exp(-lamb)
S 的值为 124。现在编译器 returns 在我定义函数的行中出现以下错误:
OverflowError: (34, 'Numer ical result out of range')
我在实现那个 lambda 函数时做错了什么?
您可能希望在对数尺度上工作;即对数似然。这在统计数据中很常见,因为可能性通常很小,而且浮点数只能低至 ~1e-300。
我认为这个函数看起来像:
import numpy as np
from scipy.special import loggamma
def log_likelihood(lamb, S):
return np.log(lamb) * S - loggamma(S + 1) - lamb
我正在尝试在我的代码中将泊松分布实现为 lambda 函数:
likelihood = lambda lamb: lamb**S / math.factorial(S) * numpy.exp(-lamb)
S 的值为 124。现在编译器 returns 在我定义函数的行中出现以下错误:
OverflowError: (34, 'Numer ical result out of range')
我在实现那个 lambda 函数时做错了什么?
您可能希望在对数尺度上工作;即对数似然。这在统计数据中很常见,因为可能性通常很小,而且浮点数只能低至 ~1e-300。
我认为这个函数看起来像:
import numpy as np
from scipy.special import loggamma
def log_likelihood(lamb, S):
return np.log(lamb) * S - loggamma(S + 1) - lamb