【发布时间】:2011-08-22 07:59:12
【问题描述】:
我有一个算法,可以计算percentile(85) 和Apache Commons 的一系列值(12 个值),以便稍后使用阈值进行评估以做出决定。结果类似于 Excel 给出的结果,但不相等,有时这对我的应用程序至关重要,因为使用 excel 的结果没有通过阈值,而使用 Java 中的 Apache Commons Math 可以,所以我得到了不同输出。
这是一个示例:每 2 小时的互联网流量 (Mbps)
32,7076813360000000 41,2580429776000000 45,4453940200000000 48,8044409456000000 46,7462847936000000 49,8028100056000000 54,3719451144000000 41,9708134600000000 29,4371963240000000 22,4667255616000000 20,0388452248000000 28,7807757104000000 P>
除以 1000 Mb(电缆的容量)后,我计算职业的 percentil(85):
Excel:0,049153870117
Apache Commons 数学:0.05003126676104001
我发现可以使用setPercentileImpl() 更改百分位数的实现(不存在官方百分位数),但我找不到任何如何执行此操作的示例或 Excel 算法(这是我被告知要实现的目标)。
欢迎任何关于此的帮助。
谢谢。
【问题讨论】:
-
你能举例说明你看到的差异吗?有了数据我们可以自己试试?
-
当然,我会用数据编辑我的问题。
-
请注意,结果不同的原因是值集是 12。对于较大的值,两种算法都会给出相似的结果。我的问题是如何在Java中实现excel的方法。
-
好问题,当我使用线性插值时,我得到
0.049004(当我将你的数字除以 1e19 时)我不知道 0.05000 怎么可能是一个答案,因为它超过了第 11 大并且它应该更少恕我直言。 -
如果我使用简化的三阶多项式插值,我得到 0.491584
标签: java excel statistics apache-commons percentile