Example usage for org.apache.commons.math3.stat Frequency getPct

List of usage examples for org.apache.commons.math3.stat Frequency getPct

Introduction

In this page you can find the example usage for org.apache.commons.math3.stat Frequency getPct.

Prototype

public double getPct(char v) 

Source Link

Document

Returns the percentage of values that are equal to v (as a proportion between 0 and 1).

Usage

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