Beispiel #1
0
    def testLogProb(self):

        fx = [
            2.7939e-24, 1.5305e-03, 2.3028e-02, 6.6302e-02, 1.1759e-01,
            1.6810e-01, 2.1365e-01, 2.5255e-01, 2.8438e-01, 3.0937e-01,
            3.2806e-01, 3.4111e-01, 3.4922e-01, 3.5307e-01, 3.5329e-01,
            3.5048e-01, 3.4515e-01, 3.3778e-01, 3.2878e-01, 3.1850e-01,
            3.0726e-01, 2.9531e-01, 2.8289e-01, 2.7018e-01, 2.5736e-01,
            2.4454e-01, 2.3185e-01, 2.1937e-01, 2.0717e-01, 1.9532e-01,
            1.8385e-01, 1.7280e-01, 1.6220e-01, 1.5205e-01, 1.4236e-01,
            1.3315e-01, 1.2440e-01, 1.1611e-01, 1.0828e-01, 1.0088e-01,
            9.3917e-02, 8.7363e-02, 8.1207e-02, 7.5432e-02, 7.0021e-02,
            6.4958e-02, 6.0224e-02, 5.5804e-02
        ]

        x = numpy.arange(0.01, 5., 0.1)

        a = 2.
        b = 1.
        p = 2
        gig = GeneralizedInverseGaussian(a, b, p)
        fx2 = gig(x)

        for i in range(len(fx)):
            self.assertAlmostEqual(fx[i], fx2[i], 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)
 def testParameters(self):
 
     pdf = GeneralizedInverseGaussian(1, 1, 1)
     pdf.a = 2
     pdf.b = 3
     pdf.p = 4
     
     self.assertEqual(pdf.a, 2)
     self.assertEqual(pdf.b, 3)
     self.assertEqual(pdf.p, 4)
     self.assertEqual(pdf.p, pdf['p'])
     
     def propertyAssignment():
         pdf.a = -1
     def directAssignment(p):
         pdf[p] = -1
     
     self.assertRaises(ParameterValueError, propertyAssignment)
     self.assertRaises(ParameterValueError, directAssignment, 'a')
     self.assertRaises(ParameterValueError, directAssignment, 'b')
     self.assertRaises(ParameterValueError, directAssignment, 'p')        
Beispiel #4
0
    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)
Beispiel #5
0
    def testParameters(self):

        pdf = GeneralizedInverseGaussian(1, 1, 1)
        pdf.a = 2
        pdf.b = 3
        pdf.p = 4

        self.assertEqual(pdf.a, 2)
        self.assertEqual(pdf.b, 3)
        self.assertEqual(pdf.p, 4)
        self.assertEqual(pdf.p, pdf['p'])

        def propertyAssignment():
            pdf.a = -1

        def directAssignment(p):
            pdf[p] = -1

        self.assertRaises(ParameterValueError, propertyAssignment)
        self.assertRaises(ParameterValueError, directAssignment, 'a')
        self.assertRaises(ParameterValueError, directAssignment, 'b')
        self.assertRaises(ParameterValueError, directAssignment, 'p')