/*
* File: MannWhitneyUConfidenceTest.java
* Authors: Kevin R. Dixon
* Company: Sandia National Laboratories
* Project: Cognitive Foundry
*
* Copyright August 27, 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.learning.data.DefaultInputOutputPair;
import gov.sandia.cognition.learning.data.InputOutputPair;
import gov.sandia.cognition.statistics.method.MannWhitneyUConfidence.Statistic;
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedList;
import java.util.Random;
import junit.framework.TestCase;
/**
*
* @author Kevin R. Dixon
*/
public class MannWhitneyUConfidenceTest extends TestCase
{
public static final Random random = new Random( 1 );
public MannWhitneyUConfidenceTest(String testName)
{
super(testName);
}
/**
* Test of clone method, of class gov.sandia.cognition.learning.util.statistics.MannWhitneyUConfidence.
*/
public void testClone()
{
System.out.println("clone");
MannWhitneyUConfidence instance = new MannWhitneyUConfidence();
MannWhitneyUConfidence clone = (MannWhitneyUConfidence) instance.clone();
assertNotSame( instance, clone );
}
/**
* Test of evaluateNullHypothesis method, of class gov.sandia.cognition.learning.util.statistics.MannWhitneyUConfidence.
*/
public void testEvaluateNullHypothesis()
{
System.out.println("evaluateNullHypothesis");
Collection<InputOutputPair<Double,Boolean>> scoreClassPairs =
new LinkedList<InputOutputPair<Double,Boolean>>();
scoreClassPairs.add( new DefaultInputOutputPair<Double,Boolean>(18.0,true) );
scoreClassPairs.add( new DefaultInputOutputPair<Double,Boolean>(21.0,true) );
scoreClassPairs.add( new DefaultInputOutputPair<Double,Boolean>(23.0,true) );
scoreClassPairs.add( new DefaultInputOutputPair<Double,Boolean>(25.0,false) );
scoreClassPairs.add( new DefaultInputOutputPair<Double,Boolean>(26.0,false) );
scoreClassPairs.add( new DefaultInputOutputPair<Double,Boolean>(29.0,true) );
scoreClassPairs.add( new DefaultInputOutputPair<Double,Boolean>(34.0,false) );
scoreClassPairs.add( new DefaultInputOutputPair<Double,Boolean>(37.0,false) );
scoreClassPairs.add( new DefaultInputOutputPair<Double,Boolean>(39.0,false) );
scoreClassPairs.add( new DefaultInputOutputPair<Double,Boolean>(42.0,true) );
scoreClassPairs.add( new DefaultInputOutputPair<Double,Boolean>(48.0,false) );
scoreClassPairs.add( new DefaultInputOutputPair<Double,Boolean>(56.0,false) );
scoreClassPairs.add( new DefaultInputOutputPair<Double,Boolean>(104.0,false) );
MannWhitneyUConfidence test = new MannWhitneyUConfidence();
MannWhitneyUConfidence.Statistic stat =
test.evaluateNullHypothesis( scoreClassPairs );
final double EPS = 1e-5;
assertEquals( 7.0, stat.getU() );
assertEquals( 5, stat.getN1() );
assertEquals( 8, stat.getN2() );
assertEquals( -1.903005, stat.getZ(), EPS );
assertEquals( 0.057040, stat.getNullHypothesisProbability(), EPS );
}
public void testEvaluateNullHypothesis2()
{
System.out.println("evaluateNullHypothesis2");
Collection<Double> data1 = Arrays.asList( 23.0, 18.0, 29.0, 42.0, 21.0 );
Collection<Double> data2 = Arrays.asList( 37.0, 56.0, 39.0, 34.0, 26.0, 104.0, 48.0, 25.0 );
MannWhitneyUConfidence test = new MannWhitneyUConfidence();
MannWhitneyUConfidence.Statistic stat =
test.evaluateNullHypothesis( data1, data2 );
final double EPS = 1e-5;
assertEquals( 7.0, stat.getU() );
assertEquals( 5, stat.getN1() );
assertEquals( 8, stat.getN2() );
assertEquals( -1.903005, stat.getZ(), EPS );
assertEquals( 0.057040, stat.getNullHypothesisProbability(), EPS );
}
public static MannWhitneyUConfidence.Statistic createStatisticInstance()
{
int N = random.nextInt(100) + 10;
int N1 = random.nextInt(N-2) + 1;
int N2 = N-N1;
Collection<Double> data1 = new LinkedList<Double>();
for( int i = 0; i < N1; i++ )
{
data1.add( random.nextDouble() );
}
Collection<Double> data2 = new LinkedList<Double>();
for( int i = 0; i < N2; i++ )
{
data2.add( random.nextDouble() );
}
Collection<Double> dataAll = new LinkedList<Double>();
dataAll.addAll( data1 );
dataAll.addAll( data2 );
double[] rank = WilcoxonSignedRankConfidence.ranks( dataAll );
double sum1 = 0.0;
for( int i = 0; i < N1; i++ )
{
sum1 += rank[i];
}
double sum2 = 0.0;
for( int i = N1; i < (N1+N2); i++ )
{
sum2 += rank[i];
}
return new MannWhitneyUConfidence.Statistic( sum1, N1, sum2, N2 );
}
/**
* Test of clone method, of class gov.sandia.cognition.learning.util.statistics.MannWhitneyUConfidence.Statistic.
*/
public void testStatisticClone()
{
System.out.println("Statistic.clone");
MannWhitneyUConfidence.Statistic instance = createStatisticInstance();
MannWhitneyUConfidence.Statistic clone = (Statistic) instance.clone();
assertEquals( instance.getN1(), clone.getN1() );
assertEquals( instance.getN2(), clone.getN2() );
assertEquals( instance.getU(), clone.getU() );
assertEquals( instance.getZ(), clone.getZ() );
assertEquals( instance.getNullHypothesisProbability(), clone.getNullHypothesisProbability() );
}
/**
* Test of computeU method, of class gov.sandia.cognition.learning.util.statistics.MannWhitneyUConfidence.Statistic.
*/
public void testStatisticComputeU()
{
System.out.println("Statistic.computeU");
System.out.println( "This is checked in testEvaluateNullHypothesis()" );
}
/**
* Test of computeZ method, of class gov.sandia.cognition.learning.util.statistics.MannWhitneyUConfidence.Statistic.
*/
public void testStatisticComputeZ()
{
System.out.println("Statistic.computeZ");
System.out.println( "This is checked in testEvaluateNullHypothesis()" );
}
/**
* Test of computeNullHypothesisProbability method, of class gov.sandia.cognition.learning.util.statistics.MannWhitneyUConfidence.Statistic.
*/
public void testStatisticComputeNullHypothesisProbability()
{
System.out.println("Statistic.computeNullHypothesisProbability");
System.out.println( "This is checked in testEvaluateNullHypothesis()" );
}
/**
* Test of getU method, of class gov.sandia.cognition.learning.util.statistics.MannWhitneyUConfidence.Statistic.
*/
public void testStatisticGetU()
{
System.out.println("Statistic.getU");
MannWhitneyUConfidence.Statistic instance = createStatisticInstance();
assertTrue( instance.getU() > 0.0 );
}
/**
* Test of setU method, of class gov.sandia.cognition.learning.util.statistics.MannWhitneyUConfidence.Statistic.
*/
public void testStatisticSetU()
{
System.out.println("Statistic.setU");
MannWhitneyUConfidence.Statistic instance = createStatisticInstance();
assertTrue( instance.getU() > 0.0 );
double U2 = instance.getU() + 1.0;
instance.setU( U2 );
assertEquals( U2, instance.getU() );
}
/**
* Test of getZ method, of class gov.sandia.cognition.learning.util.statistics.MannWhitneyUConfidence.Statistic.
*/
public void testStatisticGetZ()
{
System.out.println("Statistic.getZ");
MannWhitneyUConfidence.Statistic instance = createStatisticInstance();
assertTrue( instance.getZ() <= 0.0 );
}
/**
* Test of setZ method, of class gov.sandia.cognition.learning.util.statistics.MannWhitneyUConfidence.Statistic.
*/
public void testStatisticSetZ()
{
System.out.println("Statistic.setZ");
MannWhitneyUConfidence.Statistic instance = createStatisticInstance();
assertTrue( instance.getZ() <= 0.0 );
double z2 = instance.getZ() - 1.0;
instance.setZ( z2 );
assertEquals( z2, instance.getZ() );
}
/**
* Test of getN1 method, of class gov.sandia.cognition.learning.util.statistics.MannWhitneyUConfidence.Statistic.
*/
public void testStatisticGetN1()
{
System.out.println("Statistic.getN1");
MannWhitneyUConfidence.Statistic instance = createStatisticInstance();
assertTrue( instance.getN1() > 0 );
}
/**
* Test of setN1 method, of class gov.sandia.cognition.learning.util.statistics.MannWhitneyUConfidence.Statistic.
*/
public void testStatisticSetN1()
{
System.out.println("Statistic.setN1");
MannWhitneyUConfidence.Statistic instance = createStatisticInstance();
assertTrue( instance.getN1() > 0 );
int N12 = instance.getN1() + 1;
instance.setN1( N12 );
assertEquals( N12, instance.getN1() );
}
/**
* Test of getN2 method, of class gov.sandia.cognition.learning.util.statistics.MannWhitneyUConfidence.Statistic.
*/
public void testStatisticGetN2()
{
System.out.println("Statistic.getN2");
MannWhitneyUConfidence.Statistic instance = createStatisticInstance();
assertTrue( instance.getN2() > 0 );
}
/**
* Test of setN2 method, of class gov.sandia.cognition.learning.util.statistics.MannWhitneyUConfidence.Statistic.
*/
public void testStatisticSetN2()
{
System.out.println("Statistic.setN2");
MannWhitneyUConfidence.Statistic instance = createStatisticInstance();
assertTrue( instance.getN2() > 0 );
int N22 = instance.getN2() + 1;
instance.setN2( N22 );
assertEquals( N22, instance.getN2() );
}
}