POISSON函数中有一个定义:

#NUM!错误–发生以下情况之一:


x的给定值小于零;
给定的均值是
小于零。


但是我尝试在Excel 2013中执行此操作。它给了我不同的价值。这是我的示例:

=POISSON(0,-0.5,FALSE)


结果是:1.648721271
代替#NUM!

有什么想法吗?

最佳答案

从推测上讲,该错误可能是作为优化而产生的。 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时,为什么还要费心计算呢?

我感到惊讶的是,POISSON.DIST Excel仍然存在该错误(尽管程度较小,但仍然受到批评),因为其统计功能和测试的准确性。如此之多以至于“朋友不让朋友使用Excel进行统计”在统计学家中是一个相对著名的说法。有关讨论,请参见this。诸如POISSON.DIST之类的虚线统计函数是专门为解决堆积如山的许多投诉而设计的。 POISSON本身只是为了向后兼容而保留。奇怪的是,这个错误是如何从头开始彻底重写这些功能的。

08-05 14:53