/* * File: LogisticDistributionTest.java * Authors: Kevin R. Dixon * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright Sep 30, 2011, 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.distribution; import gov.sandia.cognition.math.matrix.Vector; import gov.sandia.cognition.statistics.SmoothUnivariateDistributionTestHarness; /** * Tests for class LogisticDistributionTest. * @author krdixon */ public class LogisticDistributionTest extends SmoothUnivariateDistributionTestHarness { /** * Default Constructor * @param testName * test name */ public LogisticDistributionTest( String testName ) { super( testName ); } @Override public LogisticDistribution createInstance() { return new LogisticDistribution( RANDOM.nextGaussian(), RANDOM.nextDouble()*10.0 ); } @Override public void testDistributionConstructors() { System.out.println( "Distribuition Constructors" ); LogisticDistribution instance = new LogisticDistribution(); assertEquals( LogisticDistribution.DEFAULT_MEAN, instance.getMean() ); assertEquals( LogisticDistribution.DEFAULT_SCALE, instance.getScale() ); double mean = RANDOM.nextGaussian(); double scale = RANDOM.nextDouble(); instance = new LogisticDistribution( mean, scale ); assertEquals( mean, instance.getMean() ); assertEquals( scale, instance.getScale() ); LogisticDistribution i2 = new LogisticDistribution( instance ); assertNotSame( instance, i2 ); assertEquals( instance.convertToVector(), i2.convertToVector() ); } @Override public void testPDFConstructors() { System.out.println( "CDF constructors" ); LogisticDistribution.CDF instance = new LogisticDistribution.CDF(); assertEquals( LogisticDistribution.DEFAULT_MEAN, instance.getMean() ); assertEquals( LogisticDistribution.DEFAULT_SCALE, instance.getScale() ); double mean = RANDOM.nextGaussian(); double scale = RANDOM.nextDouble(); instance = new LogisticDistribution.CDF( mean, scale ); assertEquals( mean, instance.getMean() ); assertEquals( scale, instance.getScale() ); LogisticDistribution.CDF i2 = new LogisticDistribution.CDF( instance ); assertNotSame( instance, i2 ); assertEquals( instance.convertToVector(), i2.convertToVector() ); } @Override public void testCDFConstructors() { System.out.println( "PDF constructors" ); LogisticDistribution.PDF instance = new LogisticDistribution.PDF(); assertEquals( LogisticDistribution.DEFAULT_MEAN, instance.getMean() ); assertEquals( LogisticDistribution.DEFAULT_SCALE, instance.getScale() ); double mean = RANDOM.nextGaussian(); double scale = RANDOM.nextDouble(); instance = new LogisticDistribution.PDF( mean, scale ); assertEquals( mean, instance.getMean() ); assertEquals( scale, instance.getScale() ); LogisticDistribution.PDF i2 = new LogisticDistribution.PDF( instance ); assertNotSame( instance, i2 ); assertEquals( instance.convertToVector(), i2.convertToVector() ); } /** * Test of getScale method, of class LogisticDistribution. */ public void testGetScale() { System.out.println("getScale"); LogisticDistribution instance = this.createInstance(); double scale = RANDOM.nextDouble(); instance.setScale(scale); assertEquals( scale, instance.getScale() ); } /** * Test of setScale method, of class LogisticDistribution. */ public void testSetScale() { System.out.println("setScale"); LogisticDistribution instance = this.createInstance(); double scale = RANDOM.nextDouble(); instance.setScale(scale); assertEquals( scale, instance.getScale() ); try { instance.setScale(0.0); fail( "Scale must be > 0.0" ); } catch (Exception e) { System.out.println( "Good: " + e ); } } @Override public void testPDFKnownValues() { System.out.println( "PDF Known Values" ); LogisticDistribution.PDF pdf = new LogisticDistribution.PDF( 1.0, 2.0 ); assertEquals( 0.0745732260, pdf.evaluate(-2.0), TOLERANCE ); assertEquals( 0.0983059666, pdf.evaluate(-1.0), TOLERANCE ); assertEquals( 0.1175018561, pdf.evaluate( 2.0), TOLERANCE ); assertEquals( 0.0745732260, pdf.evaluate( 4.0), TOLERANCE ); } @Override public void testCDFKnownValues() { System.out.println( "CDF Known Values" ); LogisticDistribution.CDF cdf = new LogisticDistribution.CDF( 1.0, 2.0 ); assertEquals( 0.5, cdf.evaluate(cdf.getMean()), TOLERANCE ); assertEquals( 0.1824255238, cdf.evaluate(-2.0), TOLERANCE ); assertEquals( 0.2689414214, cdf.evaluate(-1.0), TOLERANCE ); assertEquals( 0.6224593312, cdf.evaluate( 2.0), TOLERANCE ); assertEquals( 0.8175744762, cdf.evaluate( 4.0), TOLERANCE ); } @Override public void testKnownConvertToVector() { System.out.println( "Known convertToVector" ); LogisticDistribution instance = this.createInstance(); Vector p = instance.convertToVector(); assertEquals( 2, p.getDimensionality() ); assertEquals( instance.getMean(), p.getElement(0) ); assertEquals( instance.getScale(), p.getElement(1) ); } }