我正在计算二项式概率质量函数的值,发现当将极端参数传递给 pmf 时,它们的总和超过 1。
参见示例:
from scipy.stats import binom
n = 1541096362225563.0
p = 1.0477878413173978e-18
vals = [binom.pmf(n=n, p=p, k=i) for i in range(3)]
print(vals) # -> [0.9983865609638467, 1.0, 0.060730098812886574]
Run Code Online (Sandbox Code Playgroud)
我可以看到如何将 1.0 作为错误过滤掉,但即使其余值的总和也超过 1。就我的目的而言,我不介意 之类的数值不精确性np.finfo(np.float16).eps,但该示例显然更加极端。有没有好的办法来处理这个问题呢?