次の数値リストの 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 パーセンタイルではないため、この値がどこから来ているのかわかりません。