List of usage examples for org.apache.commons.math3.stat Frequency getPct
public double getPct(char v)
From source file:com.sop4j.SimpleStatistics.java
public static void main(String[] args) { final MersenneTwister rng = new MersenneTwister(); // used for RNG... READ THE DOCS!!! final int[] values = new int[NUM_VALUES]; final DescriptiveStatistics descriptiveStats = new DescriptiveStatistics(); // stores values final SummaryStatistics summaryStats = new SummaryStatistics(); // doesn't store values final Frequency frequency = new Frequency(); // add numbers into our stats for (int i = 0; i < NUM_VALUES; ++i) { values[i] = rng.nextInt(MAX_VALUE); descriptiveStats.addValue(values[i]); summaryStats.addValue(values[i]); frequency.addValue(values[i]);/*w ww . j ava2s . c o m*/ } // print out some standard stats System.out.println("MIN: " + summaryStats.getMin()); System.out.println("AVG: " + String.format("%.3f", summaryStats.getMean())); System.out.println("MAX: " + summaryStats.getMax()); // get some more complex stats only offered by DescriptiveStatistics System.out.println("90%: " + descriptiveStats.getPercentile(90)); System.out.println("MEDIAN: " + descriptiveStats.getPercentile(50)); System.out.println("SKEWNESS: " + String.format("%.4f", descriptiveStats.getSkewness())); System.out.println("KURTOSIS: " + String.format("%.4f", descriptiveStats.getKurtosis())); // quick and dirty stats (need a little help from Guava to convert from int[] to double[]) System.out.println("MIN: " + StatUtils.min(Doubles.toArray(Ints.asList(values)))); System.out.println("AVG: " + String.format("%.4f", StatUtils.mean(Doubles.toArray(Ints.asList(values))))); System.out.println("MAX: " + StatUtils.max(Doubles.toArray(Ints.asList(values)))); // some stats based upon frequencies System.out.println("NUM OF 7s: " + frequency.getCount(7)); System.out.println("CUMULATIVE FREQUENCY OF 7: " + frequency.getCumFreq(7)); System.out.println("PERCENTAGE OF 7s: " + frequency.getPct(7)); }
From source file:de.upb.wdqa.wdvd.processors.statistics.FrequencyUtils.java
public static String formatFrequency(Frequency frequency, int maxCount) { List<Map.Entry<Comparable<?>, Long>> list = sortByFrequency(frequency); String result = ""; for (int i = 0; i < maxCount && i < list.size(); i++) { String percent = String.format(Locale.US, "%.0f", frequency.getPct(list.get(i).getKey()) * 100) + "%"; result += list.get(i).getKey() + "," + list.get(i).getValue() + "," + percent + "\n"; }/*from w w w. java2s.c o m*/ return result; }
From source file:net.sourceforge.jabm.test.util.DiscreteProbabilityDistributionTest.java
public void compareDistributions(DiscreteProbabilityDistribution subject, double[] probs) { System.out.println("Testing with subject: " + subject); Frequency frequency = new Frequency(); SummaryStats eventData = new SummaryStats("Event_Data"); for (int trial = 0; trial < NUM_TRIALS; trial++) { int event = subject.generateRandomEvent(); eventData.newData(event);//from w w w.ja v a 2 s . c o m frequency.addValue(event); } System.out.println(frequency); System.out.println(eventData); double mean = subject.computeMean(); System.out.println("target mean = " + mean); for (int j = 0; j < probs.length; j++) { assertTrue(approxEqual(probs[j], frequency.getPct(j))); } assertTrue(approxEqual(eventData.getMean(), mean)); }
From source file:com.itemanalysis.jmetrik.stats.frequency.FrequencyAnalysis.java
public void publishTable(VariableAttributes v) { TextTableColumnFormat[] cformats = new TextTableColumnFormat[6]; cformats[0] = new TextTableColumnFormat(); cformats[0].setStringFormat(11, TextTableColumnFormat.OutputAlignment.LEFT); cformats[1] = new TextTableColumnFormat(); cformats[1].setIntFormat(10, TextTableColumnFormat.OutputAlignment.RIGHT); cformats[2] = new TextTableColumnFormat(); cformats[2].setDoubleFormat(10, 4, TextTableColumnFormat.OutputAlignment.RIGHT); cformats[3] = new TextTableColumnFormat(); cformats[3].setDoubleFormat(10, 4, TextTableColumnFormat.OutputAlignment.RIGHT); cformats[4] = new TextTableColumnFormat(); cformats[4].setIntFormat(10, TextTableColumnFormat.OutputAlignment.RIGHT); cformats[5] = new TextTableColumnFormat(); cformats[5].setDoubleFormat(10, 4, TextTableColumnFormat.OutputAlignment.RIGHT); Frequency temp = frequencyTables.get(v); TextTable table = new TextTable(); table.addAllColumnFormats(cformats, 4); table.getRowAt(0).addHeader(0, 6, v.getName().toString(), TextTablePosition.CENTER); table.getRowAt(1).addHorizontalRule(0, 6, "="); table.getRowAt(2).addHeader(0, 1, "Value", TextTablePosition.CENTER); table.getRowAt(2).addHeader(1, 1, "Frequency", TextTablePosition.CENTER); table.getRowAt(2).addHeader(2, 1, "Percent", TextTablePosition.CENTER); table.getRowAt(2).addHeader(3, 1, "Valid Pct.", TextTablePosition.CENTER); table.getRowAt(2).addHeader(4, 1, "Cum. Freq.", TextTablePosition.CENTER); table.getRowAt(2).addHeader(5, 1, "Cum. Pct.", TextTablePosition.CENTER); table.getRowAt(3).addHorizontalRule(0, 6, "-"); Iterator<Comparable<?>> iter = temp.valuesIterator(); int index = 4; double pctSum = 0.0; long validSum = temp.getSumFreq(); long miss = (long) (maxProgress - validSum); while (iter.hasNext()) { table.addRow(new TextTableRow(cformats.length), cformats); Comparable<?> value = iter.next(); table.addStringAt(index, 0, value.toString()); table.addLongAt(index, 1, temp.getCount(value)); table.addDoubleAt(index, 2, ((double) temp.getCount(value) / maxProgress) * 100); table.addDoubleAt(index, 3, temp.getPct(value) * 100); table.addLongAt(index, 4, temp.getCumFreq(value)); table.addDoubleAt(index, 5, temp.getCumPct(value) * 100); index++;/*from w ww. ja v a 2 s . c o m*/ pctSum += (double) temp.getCount(value) / (double) maxProgress; } table.addRow(new TextTableRow(cformats.length), cformats); table.addStringAt(index, 0, "Valid Total"); table.addLongAt(index, 1, validSum); table.addDoubleAt(index, 2, pctSum * 100); table.addDoubleAt(index, 3, (double) validSum / (double) (maxProgress - miss) * 100); index++; table.addRow(new TextTableRow(cformats.length), cformats); table.addStringAt(index, 0, "Missing"); table.addLongAt(index, 1, miss); table.addDoubleAt(index, 2, ((double) miss / maxProgress) * 100); index++; table.addRow(new TextTableRow(cformats.length), cformats); table.addStringAt(index, 0, "Grand Total"); table.addLongAt(index, 1, (long) maxProgress); table.addDoubleAt(index, 2, ((double) (miss + temp.getSumFreq()) / maxProgress) * 100); index++; table.addRow(new TextTableRow(cformats.length), cformats); table.getRowAt(index).addHorizontalRule(0, 6, "="); publish(table.toString() + "\n"); }
From source file:org.apache.solr.client.solrj.io.eval.FrequencyTableEvaluator.java
@Override public Object doWork(Object... values) throws IOException { if (Arrays.stream(values).anyMatch(item -> null == item)) { return null; }/* w w w . j a v a2 s . co m*/ List<?> sourceValues; if (values.length == 1) { sourceValues = values[0] instanceof List<?> ? (List<?>) values[0] : Arrays.asList(values[0]); } else { throw new IOException( String.format(Locale.ROOT, "Invalid expression %s - expecting at least one value but found %d", toExpression(constructingFactory), containedEvaluators.size())); } Frequency frequency = new Frequency(); for (Object o : sourceValues) { Number number = (Number) o; frequency.addValue(number.longValue()); } List<Tuple> histogramBins = new ArrayList<>(); Iterator iterator = frequency.valuesIterator(); while (iterator.hasNext()) { Long value = (Long) iterator.next(); Map<String, Number> map = new HashMap<>(); map.put("value", value.longValue()); map.put("count", frequency.getCount(value)); map.put("cumFreq", frequency.getCumFreq(value)); map.put("cumPct", frequency.getCumPct(value)); map.put("pct", frequency.getPct(value)); histogramBins.add(new Tuple(map)); } return histogramBins; }
From source file:org.hoidla.window.WindowUtils.java
/** * calculates entropy/* w ww .j a v a2 s . c o m*/ * @param data * @return */ public static double getEntropy(int[] data) { double entropy = 0; int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; //freq distribution Frequency freq = new Frequency(); for (int item : data) { freq.addValue(item); if (item < min) { min = item; } if (item > max) { max = item; } } //calculate entropy for (int v = min; v <= max; ++v) { double pr = freq.getPct(v); if (pr > 0) { entropy += -pr * Math.log(pr); } } return entropy; }