/* * File: ExponentialBayesianEstimatorTest.java * Authors: Kevin R. Dixon * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright Apr 14, 2010, 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.bayesian.BayesianCredibleInterval; import gov.sandia.cognition.statistics.distribution.ExponentialDistribution; import gov.sandia.cognition.statistics.distribution.GammaDistribution; import java.util.ArrayList; /** * Unit tests for ExponentialBayesianEstimatorTest. * * @author krdixon */ public class ExponentialBayesianEstimatorTest extends ConjugatePriorBayesianEstimatorTestHarness<Double,Double,GammaDistribution> { /** * Tests for class ExponentialBayesianEstimatorTest. * @param testName Name of the test. */ public ExponentialBayesianEstimatorTest( String testName) { super(testName); } /** * Tests the constructors of class ExponentialBayesianEstimatorTest. */ public void testConstructors() { System.out.println( "Constructors" ); ExponentialBayesianEstimator instance = new ExponentialBayesianEstimator(); assertNotNull( instance.getParameter() ); GammaDistribution belief = new GammaDistribution(); instance = new ExponentialBayesianEstimator( belief ); assertSame( instance.getInitialBelief(), belief ); ExponentialDistribution conditional = new ExponentialDistribution(); instance = new ExponentialBayesianEstimator( conditional, belief ); assertSame( instance.getInitialBelief(), belief ); assertSame( instance.getParameter().getConditionalDistribution(), conditional ); } @Override public ExponentialBayesianEstimator createInstance() { GammaDistribution belief = new GammaDistribution( 2.0, 2.0 ); return new ExponentialBayesianEstimator( belief ); } @Override public ExponentialDistribution createConditionalDistribution() { double rate = RANDOM.nextDouble() * 10.0 + 1.0; return new ExponentialDistribution( rate ); } @Override public void testKnownValues() { System.out.println( "Known values" ); GammaDistribution belief = new GammaDistribution( 1.0, 1.0 ); ExponentialDistribution target = new ExponentialDistribution( Math.abs(RANDOM.nextGaussian()) ); ExponentialBayesianEstimator instance = new ExponentialBayesianEstimator( belief ); ArrayList<Double> samples = target.sample(RANDOM, NUM_SAMPLES); GammaDistribution posterior = instance.learn(samples); BayesianCredibleInterval interval = BayesianCredibleInterval.compute(posterior, 0.95); System.out.println( "Target: " + target.getRate() ); System.out.println( "Interval: " + interval ); assertTrue( interval.withinInterval(target.getRate()) ); } }