List of usage examples for org.apache.commons.math3.distribution NormalDistribution cumulativeProbability
public double cumulativeProbability(double x)
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()); } } }