1 16 package org.apache.commons.math.stat.descriptive.moment; 17 18 import junit.framework.Test; 19 import junit.framework.TestSuite; 20 21 import org.apache.commons.math.stat.descriptive.StorelessUnivariateStatisticAbstractTest; 22 import org.apache.commons.math.stat.descriptive.UnivariateStatistic; 23 24 29 public class StandardDeviationTest extends StorelessUnivariateStatisticAbstractTest{ 30 31 protected StandardDeviation stat; 32 33 36 public StandardDeviationTest(String name) { 37 super(name); 38 } 39 40 43 public UnivariateStatistic getUnivariateStatistic() { 44 return new StandardDeviation(); 45 } 46 47 public static Test suite() { 48 TestSuite suite = new TestSuite(StandardDeviationTest.class); 49 suite.setName("StandardDeviation Tests"); 50 return suite; 51 } 52 53 56 public double expectedValue() { 57 return this.std; 58 } 59 60 64 public void testNaN() { 65 StandardDeviation std = new StandardDeviation(); 66 assertTrue(Double.isNaN(std.getResult())); 67 std.increment(1d); 68 assertEquals(0d, std.getResult(), 0); 69 } 70 71 74 public void testPopulation() { 75 double[] values = {-1.0d, 3.1d, 4.0d, -2.1d, 22d, 11.7d, 3d, 14d}; 76 double sigma = populationStandardDeviation(values); 77 SecondMoment m = new SecondMoment(); 78 m.evaluate(values); StandardDeviation s1 = new StandardDeviation(); 80 s1.setBiasCorrected(false); 81 assertEquals(sigma, s1.evaluate(values), 1E-14); 82 s1.incrementAll(values); 83 assertEquals(sigma, s1.getResult(), 1E-14); 84 s1 = new StandardDeviation(false, m); 85 assertEquals(sigma, s1.getResult(), 1E-14); 86 s1 = new StandardDeviation(false); 87 assertEquals(sigma, s1.evaluate(values), 1E-14); 88 s1.incrementAll(values); 89 assertEquals(sigma, s1.getResult(), 1E-14); 90 } 91 92 95 protected double populationStandardDeviation(double[] v) { 96 double mean = new Mean().evaluate(v); 97 double sum = 0; 98 for (int i = 0; i < v.length; i++) { 99 sum += (v[i] - mean) * (v[i] - mean); 100 } 101 return Math.sqrt(sum / (double) v.length); 102 } 103 104 } 105 | Popular Tags |