Package com.opengamma.analytics.math.statistics.distribution

Source Code of com.opengamma.analytics.math.statistics.distribution.LaplaceDistributionTest

/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.math.statistics.distribution;

import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;

import org.testng.annotations.Test;

import com.opengamma.analytics.math.statistics.descriptive.MeanCalculator;
import com.opengamma.analytics.math.statistics.descriptive.MedianCalculator;
import com.opengamma.analytics.math.statistics.descriptive.SampleFisherKurtosisCalculator;
import com.opengamma.analytics.math.statistics.descriptive.SampleSkewnessCalculator;
import com.opengamma.analytics.math.statistics.descriptive.SampleVarianceCalculator;

public class LaplaceDistributionTest extends ProbabilityDistributionTestCase {
  private static final double MU = 0.7;
  private static final double B = 0.5;
  private static final LaplaceDistribution LAPLACE = new LaplaceDistribution(MU, B, ENGINE);
  private static final double[] DATA;
  private static final double EPS1 = 0.05;
  static {
    final int n = 500000;
    DATA = new double[n];
    for (int i = 0; i < n; i++) {
      DATA[i] = LAPLACE.nextRandom();
    }
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNegativeBDistribution() {
    new LaplaceDistribution(1, -0.4);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullEngine() {
    new LaplaceDistribution(0, 1, null);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testInverseCDFWithLow() {
    LAPLACE.getInverseCDF(-0.45);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testInverseCDFWithHigh() {
    LAPLACE.getInverseCDF(6.7);
  }

  @Test
  public void testObject() {
    assertEquals(LAPLACE.getB(), B, 0);
    assertEquals(LAPLACE.getMu(), MU, 0);
    LaplaceDistribution other = new LaplaceDistribution(MU, B);
    assertEquals(LAPLACE, other);
    assertEquals(LAPLACE.hashCode(), other.hashCode());
    other = new LaplaceDistribution(MU + 1, B);
    assertFalse(LAPLACE.equals(other));
    other = new LaplaceDistribution(MU, B + 1);
    assertFalse(LAPLACE.equals(other));
  }

  @Test
  public void test() {
    assertCDFWithNull(LAPLACE);
    assertPDFWithNull(LAPLACE);
    assertInverseCDFWithNull(LAPLACE);
    final double mean = new MeanCalculator().evaluate(DATA);
    final double median = new MedianCalculator().evaluate(DATA);
    final double variance = new SampleVarianceCalculator().evaluate(DATA);
    final double skew = new SampleSkewnessCalculator().evaluate(DATA);
    final double kurtosis = new SampleFisherKurtosisCalculator().evaluate(DATA);
    assertEquals(mean, MU, EPS1);
    assertEquals(median, MU, EPS1);
    assertEquals(variance, 2 * B * B, EPS1);
    assertEquals(skew, 0, EPS1);
    assertEquals(kurtosis, 3, EPS1);
  }
}
TOP

Related Classes of com.opengamma.analytics.math.statistics.distribution.LaplaceDistributionTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.