public boolean isOutlier(List<RawItem> rawItems, String value) { DescriptiveStatistics descriptiveStatistics = new DescriptiveStatistics(); double dValue = Double.parseDouble(value); for (RawItem rawItem : rawItems) { double d = Double.parseDouble(rawItem.getValue()); descriptiveStatistics.addValue(d); } double Q1 = descriptiveStatistics.getPercentile(25); double Q3 = descriptiveStatistics.getPercentile(75); double IQR = Q3 - Q1; double highRange = Q3 + 3 * IQR; double lowRange = Q1 - 3 * IQR; if (dValue > highRange || dValue < lowRange) { return true; } return true; }
References
https://www.shmoop.com/basic-statistics-probability/box-whisker-plots.html
http://www.baeldung.com/apache-commons-math
https://stackoverflow.com/questions/22888902/get-median-from-number-series-using-apache-commons-math