/* * File: BernoulliBayesianEstimatorTest.java * Authors: Kevin R. Dixon * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright Nov 17, 2009, 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.bayesian.conjugate; import gov.sandia.cognition.statistics.distribution.BernoulliDistribution; import gov.sandia.cognition.statistics.distribution.BetaDistribution; import gov.sandia.cognition.util.ObjectUtil; import java.util.ArrayList; /** * Unit tests for BernoulliBayesianEstimatorTest. * * @author krdixon */ public class BernoulliBayesianEstimatorTest extends ConjugatePriorBayesianEstimatorTestHarness<Number,Double,BetaDistribution> { /** * Tests for class BernoulliBayesianEstimatorTest. * @param testName Name of the test. */ public BernoulliBayesianEstimatorTest( String testName) { super(testName); } /** * Tests the constructors of class BernoulliBayesianEstimatorTest. */ public void testConstructors() { System.out.println( "Constructors" ); BernoulliBayesianEstimator instance = new BernoulliBayesianEstimator(); assertEquals( 1.0, instance.getInitialBelief().getAlpha() ); assertEquals( 1.0, instance.getInitialBelief().getBeta() ); BetaDistribution beta = new BetaDistribution.CDF( RANDOM.nextDouble(), RANDOM.nextDouble() ); instance = new BernoulliBayesianEstimator( beta ); assertSame( beta, instance.getInitialBelief() ); } @Override public BernoulliBayesianEstimator createInstance() { return new BernoulliBayesianEstimator(); } @Override public BernoulliDistribution.PMF createConditionalDistribution() { return new BernoulliDistribution.PMF( RANDOM.nextDouble() ); } @Override public void testKnownValues() { BernoulliBayesianEstimator instance = new BernoulliBayesianEstimator( new BetaDistribution.CDF( 4.8, 19.2 ) ); ArrayList<Number> data = new ArrayList<Number>( 100 ); for( int i = 0; i < 100; i++ ) { if( i < 26 ) { data.add( 1 ); } else { data.add( 0 ); } } BetaDistribution result = instance.learn(data); System.out.println( "Result: " + ObjectUtil.toString(result) ); assertEquals( 30.8, result.getAlpha() ); assertEquals( 93.2, result.getBeta() ); } }