Example usage for org.apache.commons.math3.random EmpiricalDistribution EmpiricalDistribution

List of usage examples for org.apache.commons.math3.random EmpiricalDistribution EmpiricalDistribution

Introduction

In this page you can find the example usage for org.apache.commons.math3.random EmpiricalDistribution EmpiricalDistribution.

Prototype

@Deprecated
public EmpiricalDistribution(RandomDataImpl randomData) 

Source Link

Document

Creates a new EmpiricalDistribution with default bin count using the provided RandomDataImpl as the source of random data.

Usage

From source file:ijfx.ui.utils.ChartUpdater.java

public void updateChart() {

    final double min; // minimum value
    final double max; // maximum value
    double range; // max - min
    final double binSize;
    // int maximumBinNumber = 30;
    int finalBinNumber;

    int differentValuesCount = possibleValues.stream().filter(n -> Double.isFinite(n.doubleValue()))
            .collect(Collectors.toSet()).size();
    if (differentValuesCount < maximumBinNumber) {
        finalBinNumber = differentValuesCount;
    } else {//w w w  . j a va 2  s  . co m
        finalBinNumber = maximumBinNumber;
    }

    EmpiricalDistribution distribution = new EmpiricalDistribution(finalBinNumber);

    Double[] values = possibleValues.parallelStream().filter(n -> Double.isFinite(n.doubleValue()))
            .map(v -> v.doubleValue()).sorted()
            //.toArray();
            .toArray(size -> new Double[size]);
    distribution.load(ArrayUtils.toPrimitive(values));

    min = values[0];
    max = values[values.length - 1];
    range = max - min;
    binSize = range / (finalBinNumber - 1);

    //System.out.println(String.format("min = %.0f, max = %.0f, range = %.0f, bin size = %.0f, bin number = %d", min, max, range, binSize, finalBinNumber));

    XYChart.Series<Double, Double> serie = new XYChart.Series<>();
    ArrayList<XYChart.Data<Double, Double>> data = new ArrayList<>();
    double k = min;
    for (SummaryStatistics st : distribution.getBinStats()) {
        data.add(new XYChart.Data<>(k, new Double(st.getN())));
        k += binSize;
    }

    Platform.runLater(() -> {
        serie.getData().addAll(data);
        areaChart.getData().clear();
        areaChart.getData().add(serie);
    });

}

From source file:adams.data.distribution.Empirical.java

/**
 * Returns the configured distribution./*from   w  w  w.j  av  a 2 s.c o  m*/
 *
 * @return      the distribution
 */
@Override
public RealDistribution getRealDistribution() {
    return new EmpiricalDistribution(m_BinCount);
}

From source file:ijfx.ui.filter.DefaultNumberFilter.java

public void updateChart() {

    final double min; // minimum value
    final double max; // maximum value
    double range; // max - min
    final double binSize;
    int maximumBinNumber = 30;
    int finalBinNumber;

    int differentValuesCount = possibleValues.stream().filter(n -> Double.isFinite(n.doubleValue()))
            .collect(Collectors.toSet()).size();
    if (differentValuesCount < maximumBinNumber) {
        finalBinNumber = differentValuesCount;
    } else {/*from   w w w  . j a va 2s. co m*/
        finalBinNumber = maximumBinNumber;
    }

    EmpiricalDistribution distribution = new EmpiricalDistribution(finalBinNumber);

    double[] values = possibleValues.parallelStream().filter(n -> Double.isFinite(n.doubleValue()))
            .mapToDouble(v -> v.doubleValue()).sorted().toArray();
    distribution.load(values);

    min = values[0];
    max = values[values.length - 1];
    range = max - min;
    binSize = range / (finalBinNumber - 1);

    XYChart.Series<Double, Double> serie = new XYChart.Series<>();
    ArrayList<Data<Double, Double>> data = new ArrayList<>();
    double k = min;
    for (SummaryStatistics st : distribution.getBinStats()) {
        data.add(new Data<>(k, new Double(st.getN())));
        k += binSize;
    }

    Platform.runLater(() -> {

        serie.getData().addAll(data);
        areaChart.getData().clear();

        areaChart.getData().add(serie);

        updateSlider(min, max, finalBinNumber);
    });
}

From source file:ijfx.ui.plugin.panel.OverlayPanel.java

protected XYChart.Series<Double, Double> getOverlayHistogram(Overlay overlay) {

    Timer timer = timerService.getTimer(this.getClass());
    timer.start();/*from   w  w  w.  ja  v  a2  s. com*/
    Double[] valueList = statsService.getValueList(currentDisplay(), overlay);
    timer.elapsed("Getting the stats");
    SummaryStatistics sumup = new SummaryStatistics();
    for (Double v : valueList) {
        sumup.addValue(v);
    }
    timer.elapsed("Building the sumup");

    double min = sumup.getMin();
    double max = sumup.getMax();
    double range = max - min;
    int bins = 100;//new Double(max - min).intValue();

    EmpiricalDistribution distribution = new EmpiricalDistribution(bins);

    double[] values = ArrayUtils.toPrimitive(valueList);
    Arrays.parallelSort(values);
    distribution.load(values);

    timer.elapsed("Sort and distrubution repartition up");

    XYChart.Series<Double, Double> serie = new XYChart.Series<>();
    ArrayList<Data<Double, Double>> data = new ArrayList<>(bins);
    double k = min;
    for (SummaryStatistics st : distribution.getBinStats()) {
        data.add(new Data<Double, Double>(k, new Double(st.getN())));
        k += range / bins;
    }

    serie.getData().clear();
    serie.getData().addAll(data);
    timer.elapsed("Creating charts");
    return serie;
}

From source file:edu.wisc.ssec.mcidasv.data.hydra.Statistics.java

public static Long[] histogram(FlatField field, int bins) throws VisADException {
    Long[] histogram = new Long[bins];
    EmpiricalDistribution distribution = new EmpiricalDistribution(bins);
    distribution.load(field.getValues(false)[0]);
    int k = 0;/*  w w w.java 2 s .co m*/
    for (SummaryStatistics stats : distribution.getBinStats()) {
        histogram[k++] = stats.getN();
    }
    return histogram;
}

From source file:ijfx.ui.plugin.overlay.OverlayPanel.java

protected XYChart.Series<Double, Double> getOverlayHistogram(Overlay overlay) {

    Timer timer = timerService.getTimer(this.getClass());
    timer.start();//w w w .ja  v a 2s . c o  m
    Double[] valueList = statsService.getValueListFromImageDisplay(currentDisplay(), overlay);
    timer.elapsed("Getting the stats");
    SummaryStatistics sumup = new SummaryStatistics();
    for (Double v : valueList) {
        sumup.addValue(v);
    }
    timer.elapsed("Building the sumup");

    double min = sumup.getMin();
    double max = sumup.getMax();
    double range = max - min;
    int bins = 100;//new Double(max - min).intValue();

    EmpiricalDistribution distribution = new EmpiricalDistribution(bins);

    double[] values = ArrayUtils.toPrimitive(valueList);
    Arrays.parallelSort(values);
    distribution.load(values);

    timer.elapsed("Sort and distrubution repartition up");

    XYChart.Series<Double, Double> serie = new XYChart.Series<>();
    ArrayList<Data<Double, Double>> data = new ArrayList<>(bins);
    double k = min;
    for (SummaryStatistics st : distribution.getBinStats()) {
        data.add(new Data<Double, Double>(k, new Double(st.getN())));
        k += range / bins;
    }

    serie.getData().clear();
    serie.getData().addAll(data);
    timer.elapsed("Creating charts");
    return serie;
}

From source file:org.apache.solr.client.solrj.io.eval.HistogramEvaluator.java

@Override
public Object doWork(Object... values) throws IOException {
    if (Arrays.stream(values).anyMatch(item -> null == item)) {
        return null;
    }//from  w w w.  j  av  a  2  s .c  o  m

    List<?> sourceValues;
    Integer bins = 10;

    if (values.length >= 1) {
        sourceValues = values[0] instanceof List<?> ? (List<?>) values[0] : Arrays.asList(values[0]);

        if (values.length >= 2) {
            if (values[1] instanceof Number) {
                bins = ((Number) values[1]).intValue();
            } else {
                throw new IOException(String.format(Locale.ROOT,
                        "Invalid expression %s - if second parameter is provided then it must be a valid number but found %s instead",
                        toExpression(constructingFactory), values[1].getClass().getSimpleName()));
            }
        }
    } else {
        throw new IOException(
                String.format(Locale.ROOT, "Invalid expression %s - expecting at least one value but found %d",
                        toExpression(constructingFactory), containedEvaluators.size()));
    }

    EmpiricalDistribution distribution = new EmpiricalDistribution(bins);
    distribution.load(
            ((List<?>) sourceValues).stream().mapToDouble(value -> ((Number) value).doubleValue()).toArray());
    ;

    List<Tuple> histogramBins = new ArrayList<>();
    for (SummaryStatistics binSummary : distribution.getBinStats()) {
        Map<String, Number> map = new HashMap<>();
        map.put("max", binSummary.getMax());
        map.put("mean", binSummary.getMean());
        map.put("min", binSummary.getMin());
        map.put("stdev", binSummary.getStandardDeviation());
        map.put("sum", binSummary.getSum());
        map.put("N", binSummary.getN());
        map.put("var", binSummary.getVariance());
        map.put("cumProb", distribution.cumulativeProbability(binSummary.getMean()));
        map.put("prob", distribution.probability(binSummary.getMin(), binSummary.getMax()));
        histogramBins.add(new Tuple(map));
    }

    return histogramBins;
}

From source file:org.wso2.carbon.ml.core.impl.SummaryStatsGenerator.java

/**
 * Calculate the frequencies of each interval of a column.
 *
 * @param column Column of which the frequencies are to be calculated.
 * @param intervals Number of intervals to be split.
 *//*from  w  ww . j  a v  a2 s.  c  o m*/
protected List<SortedMap<?, Integer>> calculateIntervalFreqs(int column, int intervals) {
    SortedMap<Integer, Integer> frequencies = new TreeMap<Integer, Integer>();
    double[] data = new double[this.columnData.get(column).size()];
    // Create an array from the column data.
    for (int row = 0; row < columnData.get(column).size(); row++) {
        if (this.columnData.get(column).get(row) != null
                && !MLConstants.MISSING_VALUES.contains(this.columnData.get(column).get(row))) {
            data[row] = Double.parseDouble(this.columnData.get(column).get(row));
        }
    }
    // Create equal partitions.
    this.histogram[column] = new EmpiricalDistribution(intervals);
    this.histogram[column].load(data);

    // Get the frequency of each partition.
    int bin = 0;
    for (SummaryStatistics stats : this.histogram[column].getBinStats()) {
        frequencies.put(bin++, (int) stats.getN());
    }
    this.graphFrequencies.set(column, frequencies);

    return graphFrequencies;
}

From source file:org.wso2.carbon.ml.dataset.internal.DatasetSummary.java

/**
 * Calculate the frequencies of each interval of a column.
 *
 * @param column        Column of which the frequencies are to be calculated.
 * @param intervals     Number of intervals to be split.
 *///from   w  w w  .  j  a  v  a2s  . co  m
private void claculateIntervalFreqs(int column, int intervals) {
    SortedMap<Integer, Integer> frequencies = new TreeMap<Integer, Integer>();
    double[] data = new double[this.columnData.get(column).size()];
    // Create an array from the column data.
    for (int row = 0; row < columnData.get(column).size(); row++) {
        if (!this.columnData.get(column).get(row).isEmpty()) {
            data[row] = Double.parseDouble(this.columnData.get(column).get(row));
        }
    }
    // Create equal partitions.
    this.histogram[column] = new EmpiricalDistribution(intervals);
    this.histogram[column].load(data);

    // Get the frequency of each partition.
    int bin = 0;
    for (SummaryStatistics stats : this.histogram[column].getBinStats()) {
        frequencies.put(bin++, (int) stats.getN());
    }
    this.graphFrequencies.set(column, frequencies);
}

From source file:tech.tablesaw.columns.numbers.NumberMapFunctions.java

default DoubleColumn bin(int binCount) {
    double[] histogram = new double[binCount];
    EmpiricalDistribution distribution = new EmpiricalDistribution(binCount);
    distribution.load(asDoubleArray());//  w ww . j  a va 2 s.c  o  m
    int k = 0;
    for (SummaryStatistics stats : distribution.getBinStats()) {
        histogram[k++] = stats.getN();
    }
    return DoubleColumn.create(name() + "[binned]", histogram);
}