List of usage examples for org.apache.commons.math3.random EmpiricalDistribution EmpiricalDistribution
@Deprecated
public EmpiricalDistribution(RandomDataImpl randomData)
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); }