Example usage for org.apache.commons.math3.stat.descriptive.rank Percentile setData

List of usage examples for org.apache.commons.math3.stat.descriptive.rank Percentile setData

Introduction

In this page you can find the example usage for org.apache.commons.math3.stat.descriptive.rank Percentile setData.

Prototype

@Override
public void setData(final double[] values) 

Source Link

Usage

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);
}