Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.2
-
None
-
None
-
None
Description
example call:
StatUtils.percentile(new double[]
{0d, 1d}, 25) returns 0.0
The API says that there is a position being computed: p*(n+1)/100 -> we have p=25 and n=2
I would expect position 0.75 as result. Next step according to the API is: interpolation between both values at floor(0.25) and at ceil(0.25). Those values are 0d and 1d ... so lower + d * (upper - lower) should give 0d + 0.25*(1d - 0d) = 0.25
But the above call returns 0 as result. This does not make sense to me.
another example where I think the result is not correct:
StatUtils.percentile(new double[]
{0d, 1d, 1d, 1d}, 25) returns 0.25
we have pos = 25*5/100 = 1.25 ... so d = 0.25
values at position floor(1.25) and ceil(1.25) are 1d and 1d. How comes that the result is not between 1d?