2015-03-06 3 views
4

Я пытаюсь получить процентиль определенного числа в пределах распределения с использованием библиотеки Apache Commons Math3, а класс Percentile:Apache Commons Math3 процентиль Номер

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, т. Е. Процентиль заданного числа, а не номер в данном процентиле.

Ни один из методов этого класса не подходит или не дает результат, который я хочу. Я злоупотребляю классом? Есть ли другой класс, который я должен использовать?

+0

См функции, если у вас есть ПРОЦЕНТРАНГ()! – EvenPrime

ответ

3

Вы можете использовать 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); 
} 
Смежные вопросы