/* * File: FisherSignConfidenceTest.java * Authors: Kevin R. Dixon * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright August 19, 2007, Sandia Corporation. Under the terms of Contract * DE-AC04-94AL85000, there is a non-exclusive license for use of this work by * or on behalf of the U.S. Government. Export of this program may require a * license from the United States Government. See CopyrightHistory.txt for * complete details. * */ package gov.sandia.cognition.statistics.method; import gov.sandia.cognition.statistics.method.FisherSignConfidence.Statistic; import java.util.Arrays; import java.util.LinkedList; import junit.framework.TestCase; /** * * @author Kevin R. Dixon */ public class FisherSignConfidenceTest extends TestCase { public FisherSignConfidenceTest(String testName) { super(testName); } /** * Test of clone method, of class gov.sandia.cognition.learning.util.statistics.FisherSignConfidence. */ public void testClone() { System.out.println("clone"); FisherSignConfidence instance = new FisherSignConfidence(); FisherSignConfidence clone = (FisherSignConfidence) instance.clone(); assertNotSame(instance, clone); } /** * Test of evaluateNullHypothesis method, of class gov.sandia.cognition.learning.util.statistics.FisherSignConfidence. */ public void testEvaluateNullHypothesis() { System.out.println("evaluateNullHypothesis"); LinkedList<Double> data1 = new LinkedList<Double>(Arrays.asList(1.0, 2.0, 3.0, 4.0, 5.0)); LinkedList<Double> data2 = new LinkedList<Double>(Arrays.asList(5.0, 4.0, 3.0, 2.0, 1.0)); final double EPS = 1e-5; // I got these numbers from octave's sign_test(data1,data2) function FisherSignConfidence st = new FisherSignConfidence(); FisherSignConfidence.Statistic stat = st.evaluateNullHypothesis(data1, data2); assertEquals(4, stat.getNumDifferent()); assertEquals(2, stat.getNumPositiveSign()); assertEquals(0.625, stat.getNullHypothesisProbability(), EPS); data1.add(6.0); try { st.evaluateNullHypothesis(data1, data2); fail("Datasets must be the same size"); } catch (Exception e) { System.out.println("Good: " + e); } data2.add(0.0); stat = st.evaluateNullHypothesis(data1, data2); assertEquals(5, stat.getNumDifferent()); assertEquals(3, stat.getNumPositiveSign()); assertEquals(0.375, stat.getNullHypothesisProbability(), EPS); int N = 3; for (int i = 0; i < N; i++) { data1.add(Math.random()); data2.add(0.0); } stat = st.evaluateNullHypothesis(data1, data2); assertEquals(data1.size() - 1, stat.getNumDifferent()); assertEquals(3 + N, stat.getNumPositiveSign()); assertEquals(0.0703125, stat.getNullHypothesisProbability(), EPS); } public FisherSignConfidence.Statistic createStatInstance() { int N = (int) (Math.random() * 100) + 10; int x = (int) (Math.random() * N); return new FisherSignConfidence.Statistic(x, N); } /** * Test of clone method, of class gov.sandia.cognition.learning.util.statistics.FisherSignConfidence.Statistic. */ public void testStatisticClone() { System.out.println("Statistic.clone"); FisherSignConfidence.Statistic instance = this.createStatInstance(); FisherSignConfidence.Statistic clone = (Statistic) instance.clone(); assertNotSame(instance, clone); assertEquals(instance.getNullHypothesisProbability(), clone.getNullHypothesisProbability()); assertEquals(instance.getNumDifferent(), clone.getNumDifferent()); assertEquals(instance.getNumPositiveSign(), clone.getNumPositiveSign()); } /** * Test of getNumDifferent method, of class gov.sandia.cognition.learning.util.statistics.FisherSignConfidence.Statistic. */ public void testStatisticGetNumDifferent() { System.out.println("Statistic.getNumDifferent"); int b = 10; int N = 2 * b; FisherSignConfidence.Statistic instance = new FisherSignConfidence.Statistic(b, N); assertEquals(N, instance.getNumDifferent()); } /** * Test of setNumDifferent method, of class gov.sandia.cognition.learning.util.statistics.FisherSignConfidence.Statistic. */ public void testStatisticSetNumDifferent() { System.out.println("Statistic.setNumDifferent"); int b = 10; int N = 2 * b; FisherSignConfidence.Statistic instance = new FisherSignConfidence.Statistic(b, N); assertEquals(N, instance.getNumDifferent()); int N2 = N + 1; instance.setNumDifferent(N2); assertEquals(N2, instance.getNumDifferent()); instance = new FisherSignConfidence.Statistic(N, N); try { instance = new FisherSignConfidence.Statistic(N, N - 1); fail("NumDifferent must be >= numPositiveSign"); } catch (Exception e) { System.out.println("Good: " + e); } } /** * Test of getNumPositiveSign method, of class gov.sandia.cognition.learning.util.statistics.FisherSignConfidence.Statistic. */ public void testStatisticGetNumPositiveSign() { System.out.println("Statistic.getNumPositiveSign"); int b = 10; int N = 2 * b; FisherSignConfidence.Statistic instance = new FisherSignConfidence.Statistic(b, N); assertEquals(b, instance.getNumPositiveSign()); } /** * Test of setNumPositiveSign method, of class gov.sandia.cognition.learning.util.statistics.FisherSignConfidence.Statistic. */ public void testStatisticSetNumPositiveSign() { System.out.println("Statistic.setNumPositiveSign"); int b = 10; int N = 2 * b; FisherSignConfidence.Statistic instance = new FisherSignConfidence.Statistic(b, N); assertEquals(b, instance.getNumPositiveSign()); int b2 = b - 1; instance.setNumPositiveSign(b2); assertEquals(b2, instance.getNumPositiveSign()); instance = new FisherSignConfidence.Statistic(b, b); try { instance = new FisherSignConfidence.Statistic(b + 1, b); fail("NumDifferent must be >= numPositiveSign"); } catch (Exception e) { System.out.println("Good: " + e); } } }