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 VarianceTest extends StorelessUnivariateStatisticAbstractTest{ 30 31 protected Variance stat; 32 33 36 public VarianceTest(String name) { 37 super(name); 38 } 39 40 43 public UnivariateStatistic getUnivariateStatistic() { 44 return new Variance(); 45 } 46 47 public static Test suite() { 48 TestSuite suite = new TestSuite(VarianceTest.class); 49 suite.setName("Variance Tests"); 50 return suite; 51 } 52 53 56 public double expectedValue() { 57 return this.var; 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 SecondMoment m = new SecondMoment(); 77 m.evaluate(values); Variance v1 = new Variance(); 79 v1.setBiasCorrected(false); 80 assertEquals(populationVariance(values), v1.evaluate(values), 1E-14); 81 v1.incrementAll(values); 82 assertEquals(populationVariance(values), v1.getResult(), 1E-14); 83 v1 = new Variance(false, m); 84 assertEquals(populationVariance(values), v1.getResult(), 1E-14); 85 v1 = new Variance(false); 86 assertEquals(populationVariance(values), v1.evaluate(values), 1E-14); 87 v1.incrementAll(values); 88 assertEquals(populationVariance(values), v1.getResult(), 1E-14); 89 } 90 91 94 protected double populationVariance(double[] v) { 95 double mean = new Mean().evaluate(v); 96 double sum = 0; 97 for (int i = 0; i < v.length; i++) { 98 sum += (v[i] - mean) * (v[i] - mean); 99 } 100 return sum / (double) v.length; 101 } 102 103 } 104 | Popular Tags |