Example usage for org.apache.commons.math3.distribution NormalDistribution cumulativeProbability

List of usage examples for org.apache.commons.math3.distribution NormalDistribution cumulativeProbability

Introduction

In this page you can find the example usage for org.apache.commons.math3.distribution NormalDistribution cumulativeProbability.

Prototype

public double cumulativeProbability(double x) 

Source Link

Document

If x is more than 40 standard deviations from the mean, 0 or 1 is returned, as in these cases the actual value is within Double.MIN_VALUE of 0 or 1.

Usage

From source file:uk.ac.diamond.scisoft.ncd.core.data.stats.AndersonDarlingNormalityTest.java

public boolean acceptNullHypothesis(Dataset data) {
    Dataset sortedData = data.clone().sort(null);
    double mean = (Double) data.mean(true);
    int size = data.getSize();
    double std = (Double) data.stdDeviation();
    //double std = Math.min((Double) errors.mean(true), (Double) data.stdDeviation());
    //double std = (Double) errors.mean(true);

    double thres = criticalValue / (1.0 + 4.0 / size - 25.0 / size / size);
    if (std > 0) {
        NormalDistribution norm = new NormalDistribution(mean, std);
        double sum = 0.0;
        for (int i = 0; i < size; i++) {
            double val1 = sortedData.getDouble(i);
            double val2 = sortedData.getDouble(size - 1 - i);
            double cdf1 = norm.cumulativeProbability(val1);
            double cdf2 = norm.cumulativeProbability(val2);
            sum += (2 * i + 1) * (Math.log(cdf1) + Math.log(1.0 - cdf2));
        }/*  w  ww  .  ja va 2s.c o  m*/
        double A2 = -size - sum / size;
        return (A2 < 0 ? true : (Math.sqrt(A2) < thres));
    }
    return true;
}

From source file:util.Statistics.java

public Statistics(List<Integer> list) {
    scores = intsToDoubles(list);/*from ww  w  .j  a v a  2 s . com*/
    DescriptiveStatistics dStats = new DescriptiveStatistics(scores);

    summaryStatistics.put("min", dStats.getMin()); // Minimum
    summaryStatistics.put("q1", dStats.getPercentile(25)); // Lower Quartile (Q1)
    summaryStatistics.put("q2", dStats.getPercentile(50)); // Middle Quartile (Median - Q2)
    summaryStatistics.put("q3", dStats.getPercentile(75)); // High Quartile (Q3)
    summaryStatistics.put("max", dStats.getMax()); // Maxiumum

    summaryStatistics.put("mean", dStats.getMean()); // Mean
    summaryStatistics.put("sd", dStats.getStandardDeviation()); // Standard Deviation

    EmpiricalDistribution distribution = new EmpiricalDistribution(NUM_BINS);
    distribution.load(scores);
    List<SummaryStatistics> binStats = distribution.getBinStats();
    double[] upperBounds = distribution.getUpperBounds();

    Double lastUpperBound = upperBounds[0];
    bins.add(new Pair<Pair<Double, Double>, Long>(
            new Pair<Double, Double>(summaryStatistics.get("min"), lastUpperBound), binStats.get(0).getN()));
    for (int i = 1; i < binStats.size(); i++) {
        bins.add(new Pair<Pair<Double, Double>, Long>(new Pair<Double, Double>(lastUpperBound, upperBounds[i]),
                binStats.get(i).getN()));
        lastUpperBound = upperBounds[i];
    }

    if (list.size() > 5 && dStats.getStandardDeviation() > 0) // Only remove outliers if relatively normal
    {
        double mean = dStats.getMean();
        double stDev = dStats.getStandardDeviation();
        NormalDistribution normalDistribution = new NormalDistribution(mean, stDev);

        Iterator<Integer> listIterator = list.iterator();
        double significanceLevel = .50 / list.size(); // Chauvenet's Criterion for Outliers
        while (listIterator.hasNext()) {
            int num = listIterator.next();
            double pValue = normalDistribution.cumulativeProbability(num);
            if (pValue < significanceLevel) {
                outliers.add(num);
                listIterator.remove();
            }
        }

        if (list.size() != dStats.getN()) // If and only if outliers have been removed
        {
            double[] significantData = intsToDoubles(list);
            dStats = new DescriptiveStatistics(significantData);

            summaryStatistics.put("min", dStats.getMin());
            summaryStatistics.put("max", dStats.getMax());
            summaryStatistics.put("mean", dStats.getMean());
            summaryStatistics.put("sd", dStats.getStandardDeviation());
        }
    }
}