最近我遇到了org.apache.commons.math3.stat
lib的DescriptiveStatistics::getPercentile
方法使用不同的方法来计算给定数字集的百分位数而不是常规方法的事实。这个答案解释了差异。 here
所以看起来这不是一个错误,而是他们故意做出的一些决定。使用一些不同的方法在不使用标准方法的情况下计算apache.commons的lib中的百分位数的原因是什么?
或者这种方法背后是否存在任何假设(如假设数据集会很大)或某些实际问题(如性能超过准确性)?
有人可以解释这个算法决策背后的原因。
答案 0 :(得分:0)
正如您在引用问题的答案中所看到的,百分位数计算有不同的定义。
Percentile
类允许您根据需要选择定义(下面的示例将选择Excel使用的定义)(或使用专门的构造函数):
new Percentile(quantile).withEstimationType(EstimationType.R_7);
对于DescriptiveStatistics
,您可以设置您喜欢/需要的Percentile实现:
DescriptiveStatistics stats = new DescriptiveStatistics();
stats.setPercentileImpl(percentile);