Я рассчитываю 95-й процентиль следующего списка чисел:
66,337.8,989.7,1134.6,1118.7,1097.9,1122.1,1121.3,1106.7,871,325.2,285.1,264.1,295.8,342.4
Библиотеки Apache используют стандарты NIST для расчета процентиля, который является тем же методом, который используется в Excel. Согласно Excel 95-й процентиль в приведенном выше списке должен быть 1125,85.
Однако, используя следующий код, я получаю другой результат:
DescriptiveStatistics shortList = new DescriptiveStatistics();
@BeforeTest
@Parameters("shortStatsList")
private void buildShortStatisticsList(String list) {
StringTokenizer tokens = new StringTokenizer(list, ",");
while (tokens.hasMoreTokens()) {
shortList.addValue(Double.parseDouble(tokens.nextToken()));
}
}
@Test
@Parameters("95thPercentileShortList")
public void percentileShortListTest(String percentile) {
Assert.assertEquals(Double.toString(shortList.getPercentile(95)), percentile);
}
Это не удается со следующим сообщением:
java.lang.AssertionError: expected:<1125.85> but was:<1134.6>
at org.testng.Assert.fail(Assert.java:89)
at org.testng.Assert.failNotEquals(Assert.java:489)
1134,6 — это максимальное значение в списке, а не 95-й процентиль, поэтому я не знаю, откуда берется это значение.