excel - 为什么 POISSON 函数在 Microsoft Excel 中不一致?

标签 excel vba excel-formula excel-2013

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) 在应该失败的时候失败了,在喂食时给出#NUM! >0,-0.5。我的猜测是,Excel 程序员最初使用了一个在应该失败时失败的公式,让被调用的函数在适当的时候引发错误。然后有人想到了一个好主意,当 x = 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/

相关文章:

ms-access - 循环遍历名称类似于示例的查询

mysql - 打开从 VBA Excel 2007 到 MySQL 的连接

Excel求解器密码: what is it and where can it be acquired/bought?

excel - 聚合函数(小)返回零而不是最小值

c# - 如何在 C# 中读取 .xls 和 .xlsx 以及 .xlsm 文件

excel - 在 VBA 中格式化文本框中的 MM/DD/YYYY 日期

vba - 使用多个条件计算不同的值

Excel - 读取一个单元格中的值并将其替换为另一个单元格中的字符串

vba - 将表格粘贴到打开的 Word 文档中的书签处

excel - 从 Excel 函数 NETWORKDAYS 获取 "start_date"