POISSON
函数中有一个定义:
#NUM!
错误 - 如果出现以下情况,则会发生:
但我尝试在Excel 2013中执行此操作。它给了我不同的价值。这是我的例子:
=POISSON(0,-0.5,FALSE)
结果是:1.648721271
而不是#NUM!
有什么想法吗?
推测性地,这个bug可能是一个优化。 Poisson(x,m,TRUE)
被定义为e^(-m)*(m^x)/x!
。当m^x
是浮点时计算m
的一种方法是e^(x*Ln(m))
。在电子表格中,您可以观察到这一点
=POISSON(A1,A2,TRUE) - EXP(-A2)*EXP(A1*LN(A2))/FACT(A1)
每当A1,A2
在正确的域中时,总是评估为0(并且如果计算使用不同的方法,则可能不是例如0.0000000001)。此外,当EXP(-A2)*EXP(A1*LN(A2))/FACT(A1)
失败时失败,在喂食#NUM!
时给予0, -0.5
。我的推测是,Excel程序员最初使用的公式在失败时失败,让被调用的函数在适当的时候引发错误。然后有人有一个明智的想法,即在EXP(-mean)
时返回x = 0
(因为在这种情况下,当它被定义时,表达式的其余部分为1)。毕竟 - 当你知道它是1时,为什么还要费心去计算?
令我惊讶的是,这个bug仍然存在于POISSON.DIST
Excel已经(并且仍然是,虽然在较小程度上)严重批评其统计功能和测试的准确性。因此,“朋友们不要让朋友使用Excel进行统计”这一点在统计学家中是一个比较着名的说法。请参阅this进行讨论。像POISSON.DIST
这样的虚线统计函数被明确地设计用于解决许多抱怨的问题。 POISSON
本身就是为了向后兼容而保持不变。奇怪的是,这个错误是如何彻底改写从头开始彻底重写这些功能的。