java - Apache Commons Math3 数字百分位数

标签 java apache-commons

我正在尝试使用 Apache Commons Math3 库和 Percentile 类获取分布中特定数字的百分位数:

https://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/stat/descriptive/rank/Percentile.html

(我在 Scala 中使用它)

如果我这样做:

new Percentile().evaluate(Array(1,2,3,4,5), 80)

然后我得到4。但是,我想换个方向,将 4 作为输入,返回 80 作为结果,即给定数字的百分位数,而不是给定百分位的数字。

此类中的所有方法似乎都不适合或无法提供我想要的结果。我在滥用类(class)吗?我应该使用其他类(class)吗?

最佳答案

您可以使用加载了基线值的 EmpiricalDistribution:

@Test
public void testCalculatePercentile() {
    //given
    double[] values = new double[]{1,2,3,4,5};

    EmpiricalDistribution distribution = new EmpiricalDistribution(values.length);
    distribution.load(values);

    //when
    double percentile = distribution.cumulativeProbability(4);

    //then
    assertThat(percentile).isEqualTo(0.8);
}

关于java - Apache Commons Math3 数字百分位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28905568/

相关文章:

java - 从 InputStream 或 Byte 数组构造 DataSource

Java BeanUtils 带下划线 (_) 的未知属性

java - MongoDB 中的精确匹配文档

java - 如何检查给定的字符串转换为long是否是EpochMills?

java - 如何在 MongoDB 中加密字段

java - 为什么cql查询时间很长

java - IFFT Matlab 对称与 Java 数学公共(public)资源

validation - 最好的 Java 电子邮件地址验证方法是什么?

java - 不在 onCreate 方法中添加 SQLite 条目

java - 在 java 命令行应用程序中创建连接池