POISSON 函数中有一个定义:
#NUM!
错误 – 如果满足以下任一条件,则发生:
- 给定的 x 值小于零;
- 给定的平均值为 小于零。
但我尝试在 Excel 2013 中执行此操作。它给了我不同的值(value)。这是我的例子:
=POISSON(0,-0.5,FALSE)
结果是:1.648721271
而不是 #NUM!
有什么想法吗?
最佳答案
据推测,该错误可能是作为优化而出现的。 Poisson(x,m,TRUE)
定义为 e^(-m)*(m^x)/x!
。当 m
为浮点时计算 m^x
的一种方法是 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)
在应该失败的时候失败了,在喂食时给出
。我的猜测是,Excel 程序员最初使用了一个在应该失败时失败的公式,让被调用的函数在适当的时候引发错误。然后有人想到了一个好主意,当 #NUM!
>0,-0.5x = 0
时只返回 EXP(-mean)
(因为在这种情况下,表达式的其余部分是 1 完全定义)。毕竟——当你知道某个东西是 1 时,为什么还要费心去计算它呢?
令我惊讶的是,POISSON.DIST
中的错误仍然存在。Excel 曾(现在仍然如此,尽管程度较轻)因其统计函数和测试的准确性而受到严厉批评。以至于“ friend 不让 friend 用Excel统计”是统计学家中比较知名的一句话。请参阅this进行讨论。诸如POISSON.DIST
之类的点状统计函数是为了解决堆积起来的许多投诉而明确设计的。 POISSON
本身只是为了向后兼容而保留。奇怪的是,这个错误是如何从本应从头开始彻底重写这些函数的过程中溜走的。
关于excel - 为什么 POISSON 函数在 Microsoft Excel 中不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55448482/