List of usage examples for org.apache.commons.math3.stat.descriptive.rank Percentile setData
@Override public void setData(final double[] values)
From source file:org.jpmml.evaluator.DoubleVector.java
public double percentile(int percentile) { if (this.values == null) { throw new IllegalStateException(); }/* w w w . ja va2 s . c o m*/ double[] data = new double[this.size]; System.arraycopy(this.values, 0, data, 0, data.length); Arrays.sort(data); Percentile statistic = new Percentile(); statistic.setData(data); return statistic.evaluate(percentile); }
From source file:org.jpmml.evaluator.functions.PercentileFunction.java
static private Double evaluate(Collection<?> values, int quantile) { List<Double> doubleValues = Lists.newArrayList(); for (Object value : values) { Double doubleValue = (Double) TypeUtil.parseOrCast(DataType.DOUBLE, value); doubleValues.add(doubleValue);/* w ww. ja v a2 s .c om*/ } double[] data = Doubles.toArray(doubleValues); // The data must be (at least partially) ordered Arrays.sort(data); Percentile percentile = new Percentile(); percentile.setData(data); return percentile.evaluate(quantile); }
From source file:org.jpmml.evaluator.RegressionAggregator.java
static double median(List<Double> values) { double[] data = Doubles.toArray(values); // The data must be ordered Arrays.sort(data);/*w w w . j ava 2 s. c om*/ Percentile percentile = new Percentile(); percentile.setData(data); return percentile.evaluate(50); }
From source file:org.orbisgis.sos.LeqStats.java
/** * Compute Leq stats using specified range.double[][] classRanges = ; * @param laOccurrencesRanges Min-Max range ex: new double[][]{{Double.MIN_VALUE, 45}, {45, 55}, {55, 65}, {65, 75},{75, Double.MAX_VALUE}} * @return LeqOccurrences instance/*from ww w. ja v a2 s.c o m*/ */ public LeqOccurrences computeLeqOccurrences(double[][] laOccurrencesRanges) { // Compute invert sum of class occurrences List<Double> classList = new ArrayList<>(leqClass.size()); List<Integer> classValue = new ArrayList<>(leqClass.size()); long sum = 0; double[] values = new double[rmsSumCount]; int valCounter = 0; for (Map.Entry<Integer, AtomicInteger> entry : leqClass.entrySet()) { double leq = entry.getKey() * classStep; classList.add(leq); classValue.add(0, entry.getValue().get()); sum += entry.getValue().get(); for (int classValCount = 0; classValCount < entry.getValue().get(); classValCount++) { values[valCounter++] = leq; } } List<Double> sumClassValuePerc = new ArrayList<>(classValue.size()); double invSum = 0.; for (int classVal : classValue) { invSum += classVal / (double) sum; sumClassValuePerc.add(0, invSum); } Percentile percentile = new Percentile(); percentile.setData(values); // Fetch level at each lae double la10 = percentile.evaluate(100 - 10); double la50 = percentile.evaluate(50); double la90 = percentile.evaluate(100 - 90); // Sum percentage between provided laOccurrancesRanges List<Double> laOccurrencesRangesValue = new ArrayList<>(); if (laOccurrencesRanges != null) { for (double[] range : laOccurrencesRanges) { double min = range[0]; double max = range[1]; double sumClass = 0; for (int idClass = 0; idClass < sumClassValuePerc.size(); idClass++) { if (classList.get(idClass) >= min) { if (classList.get(idClass) < max) { sumClass += classValue.get(sumClassValuePerc.size() - 1 - idClass) / (double) sum; } else { break; } } } laOccurrencesRangesValue.add(sumClass); } } return new LeqOccurrences(la10, la50, la90, laOccurrencesRangesValue); }