def testParameterEstimation(self): mu, shape = 1, 3 data = numpy.random.wald(mu, shape, 100000) pdf = InverseGaussian(1, 1) pdf.estimate(data) self.assertAlmostEqual(pdf.mu, mu, places=2) self.assertAlmostEqual(pdf.shape, shape, delta=0.05)
def testParameters(self): pdf = InverseGaussian(1.5, 2.5) pdf.mu = 3 pdf.shape = 4 self.assertEqual(pdf.mu, 3) self.assertEqual(pdf.shape, 4) self.assertEqual(pdf.mu, pdf['mu']) def propertyAssignment(): pdf.shape = -1 def directAssignment(): pdf['shape'] = -1 self.assertRaises(ParameterValueError, propertyAssignment) self.assertRaises(ParameterValueError, directAssignment)
def testRandom(self): ig = InverseGaussian(1., 1.) samples = ig.random(1000000) mu = numpy.mean(samples) var = numpy.var(samples) self.assertAlmostEqual(ig.mu, mu, delta=1e-1) self.assertAlmostEqual(ig.mu ** 3 / ig.shape, var, delta=1e-1) ig = InverseGaussian(3., 6.) samples = ig.random(1000000) mu = numpy.mean(samples) var = numpy.var(samples) self.assertAlmostEqual(ig.mu, mu, delta=1e-1) self.assertAlmostEqual(ig.mu ** 3 / ig.shape, var, delta=5e-1)
def testLogProb(self): ig = InverseGaussian(1., 1.) self.assertAlmostEqual(ig(1.), numpy.sqrt(1 / (2 * numpy.pi)), delta=1e-5) self.assertAlmostEqual( ig(2.), (numpy.sqrt(1 / (2 * numpy.pi * 2**3)) * numpy.exp(-1. / 4.)), delta=1e-5)
def testParameterValidation(self): """ @see: [CSB 0000132] """ self.assertRaises(ParameterValueError, InverseGaussian, -1, 1) pdf = InverseGaussian() data = [3.1, 1.15, 6.86, 0.69, -1.73, -2.91, -2.2800744] def testMu(v): pdf['mu'] = v pdf.mu = v self.assertRaises(ParameterValueError, testMu, -1) self.assertRaises(EstimationFailureError, pdf.estimate, data)
def testRandom(self): ig = InverseGaussian(1., 1.) samples = ig.random(1000000) mu = numpy.mean(samples) var = numpy.var(samples) self.assertAlmostEqual(ig.mu, mu, delta=1e-1) self.assertAlmostEqual(ig.mu**3 / ig.shape, var, delta=1e-1) ig = InverseGaussian(3., 6.) samples = ig.random(1000000) mu = numpy.mean(samples) var = numpy.var(samples) self.assertAlmostEqual(ig.mu, mu, delta=1e-1) self.assertAlmostEqual(ig.mu**3 / ig.shape, var, delta=5e-1)