def testRandom(self): from scipy.special import kv from numpy import sqrt a = 2. b = 1. p = 1 gig = GeneralizedInverseGaussian(a, b, p) samples = gig.random(10000) mu_analytical = sqrt(b) * kv(p + 1, sqrt(a * b)) / (sqrt(a) * kv(p, sqrt(a * b))) var_analytical = b * kv(p + 2, sqrt(a * b)) / a / kv(p, sqrt(a * b)) - mu_analytical ** 2 mu = numpy.mean(samples) var = numpy.var(samples) self.assertAlmostEqual(mu_analytical, mu, delta=1e-1) self.assertAlmostEqual(var_analytical, var, delta=1e-1)
def testRandom(self): from scipy.special import kv from numpy import sqrt a = 2. b = 1. p = 1 gig = GeneralizedInverseGaussian(a, b, p) samples = gig.random(10000) mu_analytical = sqrt(b) * kv(p + 1, sqrt( a * b)) / (sqrt(a) * kv(p, sqrt(a * b))) var_analytical = b * kv(p + 2, sqrt(a * b)) / a / kv(p, sqrt( a * b)) - mu_analytical**2 mu = numpy.mean(samples) var = numpy.var(samples) self.assertAlmostEqual(mu_analytical, mu, delta=1e-1) self.assertAlmostEqual(var_analytical, var, delta=1e-1)