/* * File: PoissonBayesianEstimatorTest.java * Authors: Kevin R. Dixon * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright Dec 15, 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.GammaDistribution; import gov.sandia.cognition.statistics.distribution.PoissonDistribution; import java.util.Arrays; import java.util.Collection; import java.util.LinkedList; /** * Unit tests for PoissonBayesianEstimatorTest. * * @author krdixon */ public class PoissonBayesianEstimatorTest extends ConjugatePriorBayesianEstimatorTestHarness<Number,Double,GammaDistribution> { /** * Tests for class PoissonBayesianEstimatorTest. * @param testName Name of the test. */ public PoissonBayesianEstimatorTest( String testName) { super(testName); } /** * Tests the constructors of class PoissonBayesianEstimatorTest. */ public void testConstructors() { System.out.println( "Constructors" ); PoissonBayesianEstimator f = new PoissonBayesianEstimator(); assertEquals( 1.0, f.getInitialBelief().getShape() ); assertEquals( 1.0, f.getInitialBelief().getScale() ); GammaDistribution g = new GammaDistribution( RANDOM.nextDouble() * 10.0, RANDOM.nextDouble() * 10.0 ); f = new PoissonBayesianEstimator( g ); assertSame( g, f.getInitialBelief() ); } @Override public PoissonBayesianEstimator createInstance() { double shape = RANDOM.nextDouble() * 10.0+10.0; double scale = 1.0; return new PoissonBayesianEstimator( new GammaDistribution( shape, scale ) ); } @Override public PoissonDistribution.PMF createConditionalDistribution() { double rate = RANDOM.nextDouble() * 10.0 + 10.0; return new PoissonDistribution.PMF( rate ); } @Override public void testKnownValues() { System.out.println( "Known Values" ); PoissonBayesianEstimator instance = new PoissonBayesianEstimator( new GammaDistribution( 6.25, 1.0/2.5 ) ); Collection<Number> values = new LinkedList<Number>( Arrays.asList( 3.0, 2.0, 0.0, 8.0, 2.0, 4.0, 6.0, 1.0 ) ); GammaDistribution result = instance.learn(values); System.out.println( "Gamma Mean: " + result.getMean() ); assertEquals( 32.25, result.getShape() ); assertEquals( 1.0/10.5, result.getScale() ); } }