Example usage for org.apache.commons.math3.stat.descriptive SummaryStatistics getStandardDeviation

List of usage examples for org.apache.commons.math3.stat.descriptive SummaryStatistics getStandardDeviation

Introduction

In this page you can find the example usage for org.apache.commons.math3.stat.descriptive SummaryStatistics getStandardDeviation.

Prototype

public double getStandardDeviation() 

Source Link

Document

Returns the standard deviation of the values that have been added.

Usage

From source file:net.adamjak.thomas.graph.application.gui.ResultsWidnow.java

private JTable createJtResults() {
    if (this.results.containsKey("resultsData")) {
        GraphTestResult[][] results = (GraphTestResult[][]) this.results.get("resultsData");

        String[] columnNames = { "Graph ID", "Avarage time", "Standard deviation", "Minimum", "Maximum" };
        Object[][] data = new Object[results[0].length][5];

        for (int graph = 0; graph < results[0].length; graph++) {
            SummaryStatistics summaryStatistics = new SummaryStatistics();

            for (int run = 0; run < results.length; run++) {
                summaryStatistics.addValue((double) results[run][graph].getValue("timeInSeconds"));
            }//w  w w .  j  av a2  s.c  om

            data[graph][0] = graph;
            data[graph][1] = summaryStatistics.getMean();
            data[graph][2] = summaryStatistics.getStandardDeviation();
            data[graph][3] = summaryStatistics.getMin();
            data[graph][4] = summaryStatistics.getMax();
        }

        return new JTable(data, columnNames);
    } else {
        String[] columnNames = { "Description", "Result" };
        Object[][] data = new Object[this.results.keySet().size()][2];

        int i = 0;
        for (String key : this.results.keySet()) {
            data[i][0] = key;
            data[i][1] = this.results.get(key);
            i++;
        }

        return new JTable(data, columnNames);
    }
}

From source file:net.lizalab.util.RdRandRandomTest.java

/**
 * Tests RdRandRandom by verifying the average of the distribution of digits 0-9
 * over 100 million values. Also runs the test for Random and SecureRandom for
 * reference./*from  w  ww .  jav  a 2  s  .c  o m*/
 * Based on Mean Test outlined in <i>Beautiful Testing</i> published by O'Reilly.
 * @throws GeneralSecurityException 
 * @throws SeedException 
 */
@Test
public final void testRdRandRandomMean() throws GeneralSecurityException, SeedException {
    final String methodName = "testRdRandRandom : ";

    SummaryStatistics stats = new SummaryStatistics();
    // Initialize the array
    ndigits = new int[10];
    for (int i = 0; i < 10; i++) {
        ndigits[i] = 0;
        stats.addValue(i);
    }

    // Calculate the confidence intervals to assert.
    mean = stats.getMean();
    stdDev = stats.getStandardDeviation();
    var = stats.getVariance();
    LOGGER.info("{} Normal mean: {}", methodName, mean);
    LOGGER.info("{} Normal std: {}", methodName, stdDev);
    LOGGER.info("{} Normal var: {}", methodName, var);
    // 99.7% CI is within 3 std.
    double expectedDev3SD = 3 * stdDev / Math.sqrt(values);
    smLowerRng3SD = mean - expectedDev3SD;
    smUpperRng3SD = mean + expectedDev3SD;
    // 95% CI is within 2 std.
    double expectedDev2SD = 2 * stdDev / Math.sqrt(values);
    smLowerRng2SD = mean - expectedDev2SD;
    smUpperRng2SD = mean + expectedDev2SD;
    LOGGER.info("{} Generating {} values.", methodName, values);
    LOGGER.info("{} Sample mean expected in range {} - {} 99.7% of the times.", methodName, smLowerRng3SD,
            smUpperRng3SD);
    LOGGER.info("{} Sample mean expected in range {} - {} 95% of the times.", methodName, smLowerRng2SD,
            smUpperRng2SD);

    LOGGER.info("{} Running for Random..", methodName);
    Random random = new Random();
    meanTest(random, false);

    LOGGER.info("{} Running for RdRand..", methodName);
    random = new RdRandRandom();
    meanTest(random, true);

    LOGGER.info("{} Running for SecureRandom..", methodName);
    random = new SecureRandom();
    meanTest(random, false);

    LOGGER.info("{} Running Uncommons Maths AESCounterRNG using RdRandSeedGenerator..", methodName);
    random = new AESCounterRNG(new RdRandSeedGenerator());
    meanTest(random, false);
}

From source file:model.scenario.OneLinkSupplyChainResult.java

public static OneLinkSupplyChainResult beefMonopolistFixedProductionsOneRun(long seed,
        float divideMonopolistGainsByThis, int monopolistSpeed, final boolean foodLearned,
        File csvFileToWrite) {//from  w w  w .ja  va 2 s  . c o  m
    final MacroII macroII = new MacroII(seed);
    final OneLinkSupplyChainScenarioCheatingBuyPriceAndForcedMonopolist scenario1 = new OneLinkSupplyChainScenarioCheatingBuyPriceAndForcedMonopolist(
            macroII, OneLinkSupplyChainScenario.INPUT_GOOD) {
        @Override
        public void buildFoodPurchasesPredictor(PurchasesDepartment department) {
            if (foodLearned)
                department.setPredictor(new FixedIncreasePurchasesPredictor(0));

        }

        @Override
        protected SalesDepartment createSalesDepartment(Firm firm, Market goodmarket) {
            SalesDepartment department = super.createSalesDepartment(firm, goodmarket); //To change body of overridden methods use File | Settings | File Templates.
            if (foodLearned && goodmarket.getGoodType().equals(OneLinkSupplyChainScenario.OUTPUT_GOOD))
                department.setPredictorStrategy(new FixedDecreaseSalesPredictor(0));
            return department;
        }

        @Override
        protected HumanResources createPlant(Blueprint blueprint, Firm firm, Market laborMarket) {
            HumanResources hr = super.createPlant(blueprint, firm, laborMarket); //To change body of overridden methods use File | Settings | File Templates.
            if (foodLearned && !blueprint.getOutputs().containsKey(OneLinkSupplyChainScenario.INPUT_GOOD))
                hr.setPredictor(new FixedIncreasePurchasesPredictor(0));
            return hr;
        }

    };
    scenario1.setControlType(MarginalMaximizer.class);
    scenario1.setSalesDepartmentType(SalesDepartmentOneAtATime.class);
    //use standard PID parameters
    scenario1.setDivideProportionalGainByThis(divideMonopolistGainsByThis);
    scenario1.setDivideIntegrativeGainByThis(divideMonopolistGainsByThis);
    //100 days delay
    scenario1.setBeefPricingSpeed(monopolistSpeed);
    //no need for filter with the cheating price
    scenario1.setBeefPriceFilterer(null);
    scenario1.setBeefTargetInventory(100);
    scenario1.setFoodTargetInventory(100);
    //add csv writer if needed
    if (csvFileToWrite != null)
        DailyStatCollector.addDailyStatCollectorToModel(csvFileToWrite, macroII);

    macroII.setScenario(scenario1);
    macroII.start();

    SummaryStatistics averageFoodPrice = new SummaryStatistics();
    SummaryStatistics averageBeefPrice = new SummaryStatistics();
    SummaryStatistics averageBeefTraded = new SummaryStatistics();
    while (macroII.schedule.getTime() < 15000) {
        macroII.schedule.step(macroII);

        if (macroII.schedule.getTime() >= 14500) {
            averageFoodPrice.addValue(macroII.getMarket(OneLinkSupplyChainScenario.OUTPUT_GOOD)
                    .getLatestObservation(MarketDataType.AVERAGE_CLOSING_PRICE));
            averageBeefPrice.addValue(macroII.getMarket(OneLinkSupplyChainScenario.INPUT_GOOD)
                    .getLatestObservation(MarketDataType.AVERAGE_CLOSING_PRICE));
            averageBeefTraded
                    .addValue(macroII.getMarket(OneLinkSupplyChainScenario.INPUT_GOOD).getYesterdayVolume());

        }
    }

    macroII.finish();

    System.out.println("done with price: " + averageBeefPrice.getMean() + ", and standard deviation : "
            + averageBeefPrice.getStandardDeviation());
    System.out.println("seed: " + macroII.seed());
    System.out.println();
    //the beef price is in the ballpark

    return new OneLinkSupplyChainResult(averageBeefPrice.getMean(), averageFoodPrice.getMean(),
            averageBeefTraded.getMean(), macroII);
}

From source file:gov.llnl.lc.infiniband.opensm.plugin.data.RT_NodeBalance.java

private boolean getPortsExceedingSubscription(BinList<RT_Port> caBins, SummaryStatistics stats) {
    // create the normal boundaries, anything outside of these are considered "out of balance"
    double stdDev = stats.getStandardDeviation() > RT_Balance.DEVIATION_LIMIT ? stats.getStandardDeviation()
            : RT_Balance.DEVIATION_LIMIT;
    double maxPaths = stats.getMean() + stdDev;
    double minPaths = stats.getMean() - stdDev;

    int k = 0;//from w  ww  . ja va 2s. co m
    for (ArrayList<RT_Port> caList : caBins) {
        if (caList != null) {
            double nPaths = Double.parseDouble((caBins.getKey(k)).trim());
            if (nPaths > maxPaths) {
                // add all of these port numbers to the OverSubscribed list
                for (RT_Port p : caList)
                    OverSubscribedPorts.add(p.getPortNumber());
            } else if (nPaths < minPaths) {
                // add all of these port numbers to the UnderSubscribed list
                for (RT_Port p : caList)
                    UnderSubscribedPorts.add(p.getPortNumber());
            }
        }
        k++;
    }
    return true;
}

From source file:io.galeb.router.tests.hostselectors.AbstractHashHostSelectorTest.java

void doRandomTest(double errorPercentMax, double limitOfNotHitsPercent, int numPopulation) {
    final HttpServerExchange exchange = new HttpServerExchange(null);
    final Host[] newHosts = numPopulation < hosts.length ? Arrays.copyOf(hosts, numPopulation) : hosts;
    final Map<Integer, String> remains = IntStream.rangeClosed(0, newHosts.length - 1).boxed()
            .collect(Collectors.toMap(x -> x, x -> ""));

    for (int retry = 1; retry <= NUM_RETRIES; retry++) {
        final SummaryStatistics statisticsOfResults = new SummaryStatistics();

        final Map<Integer, Integer> mapOfResults = new HashMap<>();
        new Random().ints(numPopulation).map(Math::abs).forEach(x -> {
            changeExchange(exchange, x);
            int result = getResult(exchange, newHosts);
            Integer lastCount = mapOfResults.get(result);
            remains.remove(result);/*  w  w  w  .  j a v  a2s.com*/
            mapOfResults.put(result, lastCount != null ? ++lastCount : 0);
        });
        mapOfResults.entrySet().stream().mapToDouble(Map.Entry::getValue)
                .forEach(statisticsOfResults::addValue);
        double errorPercent = (statisticsOfResults.getStandardDeviation() / numPopulation) * 100;
        assertThat(errorPercent, lessThan(errorPercentMax));
    }
    final List<Integer> listOfNotHit = remains.entrySet().stream().map(Map.Entry::getKey).collect(toList());
    assertThat(listOfNotHit.size(), lessThanOrEqualTo((int) (newHosts.length * (limitOfNotHitsPercent / 100))));
}

From source file:com.milaboratory.core.alignment.KMapper.java

@Override
public String toString() {
    SummaryStatistics ss = getRecordSizeSummaryStatistics();
    return "K=" + kValue + "; Avr=" + ss.getMean() + "; SD=" + ss.getStandardDeviation();
}

From source file:eu.crydee.alignment.aligner.ae.MetricsSummaryAE.java

@Override
public void collectionProcessComplete() throws AnalysisEngineProcessException {
    try {/*from w w w . j a va 2 s  .c om*/
        String template = IOUtils.toString(getClass()
                .getResourceAsStream("/eu/crydee/alignment/aligner/ae/" + "metrics-summarizer-template.html"));
        String titledTemplate = template.replace("@@TITLE@@",
                "Metrics summarizer" + LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME));
        StringBuilder sb = new StringBuilder();
        sb.append("<table class=\"table table-striped ").append("table-condensed\">\n")
                .append("            <thead>\n").append("                <tr>\n")
                .append("                    <th>City\\Metric</th>\n");
        for (String key : keys) {
            sb.append("                    <th>").append(methodsMetadata.get(key).getRight()).append("</th>\n");
        }
        sb.append("                <tr>\n").append("            </thead>\n").append("            <tbody>\n");
        for (String ele : results.rowKeySet()) {
            sb.append("                <tr>\n").append("                    <td>").append(ele)
                    .append("</td>\n");
            Map<String, Samples> metricResults = results.row(ele);
            for (String key : keys) {
                Samples samples = metricResults.get(key);
                SummaryStatistics ss = new SummaryStatistics();
                samples.samples.forEach(d -> ss.addValue(d));
                double mean = ss.getMean();
                boolean significant = TestUtils.tTest(samples.mu,
                        ArrayUtils.toPrimitive(samples.samples.toArray(new Double[0])), 0.05),
                        above = samples.mu > mean;
                String summary = String.format("%.3f", samples.mu) + " <small class=\"text-muted\">"
                        + String.format("%.3f", ss.getMean()) + ""
                        + String.format("%.3f", ss.getStandardDeviation()) + "</small>";
                logger.info(ele + "\t" + key + "\t" + summary + "\t" + significant);
                sb.append("                    <td class=\"")
                        .append(significant ? (above ? "success" : "danger") : "warning").append("\">")
                        .append(summary).append("</td>\n");
            }
            sb.append("                </tr>\n");
        }
        sb.append("            </tbody>\n").append("        </table>");
        FileUtils.write(new File(htmlFilepath), titledTemplate.replace("@@TABLE@@", sb.toString()),
                StandardCharsets.UTF_8);
    } catch (IOException ex) {
        logger.error("IO problem with the HTML output.");
        throw new AnalysisEngineProcessException(ex);
    }
}

From source file:com.github.steveash.jg2p.aligntag.AlignTagTrainer.java

private void trainExamples(InstanceList examples) throws IOException {
    Pipe pipe = examples.getPipe();

    TransducerTrainer trainer;//from w  w  w.j  a va 2  s  . com

    int round = 0;
    CrossValidationIterator trials = new CrossValidationIterator(examples, 4, new Random(123321123));
    SummaryStatistics overall = new SummaryStatistics();

    while (trials.hasNext()) {
        log.info("Starting training round {}...", round);
        InstanceList[] split = trials.next();
        InstanceList trainData = split[0];
        InstanceList testData = split[1];

        trainer = trainOnce(pipe, trainData);
        double thisAccuracy = evaluateOnce(round, trainData, testData, trainer);
        overall.addValue(thisAccuracy);

        round += 1;
    }

    log.info("Training on whole data...");
    trainer = trainOnce(pipe, examples);
    writeModel(trainer);

    log.info("Done! overall " + overall.getMean() + " stddev " + overall.getStandardDeviation());
}

From source file:eu.crydee.alignment.aligner.ae.MetricsOneVsOneC.java

@Override
public void collectionProcessComplete() throws AnalysisEngineProcessException {
    try {/*from   w  w w  . ja  v a  2  s  . c o m*/
        String template = IOUtils.toString(getClass()
                .getResourceAsStream("/eu/crydee/alignment/aligner/ae/" + "metrics-one-vs-one-template.html"));
        template = template.replace("@@TITLE@@",
                "Metrics comparator" + LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME));
        template = template.replace("@@LEFTALGO@@", leftAlgoName);
        template = template.replace("@@RIGHTALGO@@", rightAlgoName);
        StringBuilder sb = new StringBuilder();
        sb.append("<table class=\"table table-condensed\">\n").append("            <thead>\n")
                .append("                <tr>\n").append("                    <th>Document\\Metric</th>\n");
        for (String key : keys) {
            sb.append("                    <th colspan=\"2\">").append(methodsMetadata.get(key).getRight())
                    .append("</th>\n");
        }
        sb.append("                <tr>\n").append("            </thead>\n").append("            <tbody>\n")
                .append("                <tr>\n").append("                    <td>\n")
                .append("                        <strong>Total</strong>\n")
                .append("                    </td>\n");
        for (String key : keys) {
            SummaryStatistics ss1 = new SummaryStatistics(), ss2 = new SummaryStatistics();
            List<Pair<Double, Double>> column = results.column(key).values().stream().peek(p -> {
                ss1.addValue(p.getLeft());
                ss2.addValue(p.getRight());
            }).collect(Collectors.toList());
            boolean significant = TestUtils.pairedTTest(column.stream().mapToDouble(p -> p.getLeft()).toArray(),
                    column.stream().mapToDouble(p -> p.getRight()).toArray(), 0.05);
            double mean1 = ss1.getMean(), mean2 = ss2.getMean();
            boolean above = mean1 > mean2;
            String summary1 = String.format("%.3f", mean1) + "<small class=\"text-muted\">" + ""
                    + String.format("%.3f", ss1.getStandardDeviation()) + "</small>",
                    summary2 = String.format("%.3f", mean2) + "<small class=\"text-muted\">" + ""
                            + String.format("%.3f", ss2.getStandardDeviation()) + "</small>";
            sb.append("                    <td class=\"")
                    .append(significant ? (above ? "success" : "danger") : "warning").append("\">")
                    .append(summary1).append("</td>\n");
            sb.append("                    <td class=\"")
                    .append(significant ? (!above ? "success" : "danger") : "warning").append("\">")
                    .append(summary2).append("</td>\n");
        }
        sb.append("                </tr>\n");
        SortedSet<String> rows = new TreeSet<>(results.rowKeySet());
        for (String row : rows) {
            sb.append("                <tr>\n").append("                    <td>").append(row)
                    .append("</td>\n");
            for (String key : keys) {
                Pair<Double, Double> r = results.get(row, key);
                sb.append("                    <td>").append(String.format("%.3f", r.getLeft()))
                        .append("</td>\n").append("                    <td>")
                        .append(String.format("%.3f", r.getRight())).append("</td>\n");

            }
            sb.append("                </tr>\n");
        }
        sb.append("            </tbody>\n").append("        </table>");
        FileUtils.write(new File(htmlFilepath), template.replace("@@TABLE@@", sb.toString()),
                StandardCharsets.UTF_8);
    } catch (IOException ex) {
        logger.error("IO problem with the HTML output.");
        throw new AnalysisEngineProcessException(ex);
    }
}

From source file:io.tilt.minka.business.leader.Shepherd.java

private boolean checkHealth(long now, long normalDelay, List<Heartbeat> onTime) {
    SummaryStatistics stat = new SummaryStatistics();
    // there's some hope
    long lastCreation = onTime.get(0).getCreation().getMillis();
    long biggestDistance = 0;
    for (Heartbeat hb : onTime) {
        long creation = hb.getCreation().getMillis();
        long arriveDelay = now - creation;
        long distance = creation - lastCreation;
        stat.addValue(distance);// w  w  w. j  ava  2 s .  co m
        lastCreation = creation;
        biggestDistance = distance > biggestDistance ? distance : biggestDistance;
        if (logger.isDebugEnabled()) {
            logger.debug("{}: HB SeqID: {}, Arrive Delay: {}ms, Distance: {}ms, Creation: {}",
                    getClass().getSimpleName(), hb.getSequenceId(), arriveDelay, distance, hb.getCreation());
        }
    }

    long stdDeviationDelay = (long) Precision.round(stat.getStandardDeviation(), 2);
    long permittedStdDeviationDistance = (normalDelay
            * (long) (config.getShepherdHeartbeatMaxDistanceStandardDeviation() * 10d) / 100);
    /*
    long permittedBiggestDelay = (normalDelay * 
        (long)(config.getShepherdHeartbeatMaxBiggestDistanceFactor()*10d) / 100);
    */
    final NetworkShardID shardId = onTime.get(0).getShardId();
    boolean healthly = stdDeviationDelay < permittedStdDeviationDistance;// && biggestDelay < permittedBiggestDelay;
    if (logger.isInfoEnabled()) {
        logger.debug("{}: Shard: {}, {} Standard deviation distance: {}/{}", getClass().getSimpleName(),
                shardId, healthly ? HEALTH_UP : HEALTH_DOWN, stdDeviationDelay, permittedStdDeviationDistance);
    }
    return healthly;
}