Ejemplo n.º 1
0
 def testDensity(self):
     "Test vonMisesSufficient.density degenerate case"
     for i in xrange(100):
         randno = [uniform(-4 * pi, 4 * pi), uniform(-pi, pi), uniform(0.1, 100)]
         fn = vonMises(*randno)
         fn2 = vonMisesSufficient(randno[0], 1, 1, randno[1], randno[2])
         self.assertAlmostEqual(fn.density(), fn2.density(), delta=0.001)
 def testEvaluate(self):
     "tests vonMisesSufficient.evaluate"
     for i in xrange(100):
         randno = [uniform(-4 * pi, 4 * pi), uniform(-pi, pi), uniform(0.1, 100)]
         fn = vonMises(*randno)
         fn2 = vonMisesSufficient(randno[0], 1, 1, randno[1], randno[2])
         self.assertAlmostEqual(fn.evaluate(), fn2.evaluate(), delta=0.001)
Ejemplo n.º 3
0
 def testEvaluateDKappa(self):
     "Test vonMisesSufficient.evaluate_derivative_kappa degenerate case"
     for i in xrange(100):
         randno = [uniform(-4 * pi, 4 * pi), uniform(-pi, pi), uniform(0.1, 100)]
         fn = vonMises(*randno)
         fn2 = vonMisesSufficient(randno[0], 1, 1, randno[1], randno[2])
         self.assertAlmostEqual(fn.evaluate_derivative_kappa(), fn2.evaluate_derivative_kappa(), delta=0.001)
Ejemplo n.º 4
0
 def testAlternative(self):
     "Test alternative vonMisesSufficient constructor"
     for i in xrange(100):
         x = uniform(-4 * pi, 4 * pi)
         N = randint(1, 20)
         meanv = uniform(-pi, pi)
         stdev = uniform(0, 2 * pi)
         obs = array([gauss(meanv, stdev) for j in xrange(N)])
         cosbar = cos(obs).sum()
         sinbar = sin(obs).sum()
         R = sqrt(cosbar ** 2 + sinbar ** 2)
         chiexp = acos(cosbar / R)
         if sinbar < 0:
             chiexp = -chiexp
         kappa = uniform(0.1, 100)
         fn = vonMisesSufficient(x, N, R, chiexp, kappa)
         fn2 = vonMisesSufficient(x, obs, kappa)
         self.assertAlmostEqual(fn.evaluate(), fn2.evaluate(), delta=1e-6)
Ejemplo n.º 5
0
 def testAlternative(self):
     "Test alternative vonMisesSufficient constructor"
     for i in xrange(100):
         x = uniform(-4 * pi, 4 * pi)
         N = randint(1, 20)
         meanv = uniform(-pi, pi)
         stdev = uniform(0, 2 * pi)
         obs = array([gauss(meanv, stdev) for j in xrange(N)])
         cosbar = cos(obs).sum()
         sinbar = sin(obs).sum()
         R = sqrt(cosbar**2 + sinbar**2)
         chiexp = acos(cosbar / R)
         if sinbar < 0:
             chiexp = -chiexp
         kappa = uniform(0.1, 100)
         fn = vonMisesSufficient(x, N, R, chiexp, kappa)
         fn2 = vonMisesSufficient(x, obs, kappa)
         self.assertAlmostEqual(fn.evaluate(), fn2.evaluate(), delta=1e-6)
Ejemplo n.º 6
0
 def testEvaluateDX(self):
     "Test vonMisesSufficient.evaluate_derivative_x"
     for i in xrange(100):
         x = uniform(-4 * pi, 4 * pi)
         N = randint(1, 20)
         R = randint(1, N)
         chiexp = uniform(-pi, pi)
         kappa = uniform(0.1, 100)
         fn = vonMisesSufficient(x, N, R, chiexp, kappa)
         self.assertAlmostEqual(fn.evaluate_derivative_x(), R * kappa * sin(x - chiexp), delta=0.001)
Ejemplo n.º 7
0
 def testDensity(self):
     "Test vonMisesSufficient.density degenerate case"
     for i in xrange(100):
         randno = [
             uniform(-4 * pi, 4 * pi),
             uniform(-pi, pi),
             uniform(0.1, 100)
         ]
         fn = vonMises(*randno)
         fn2 = vonMisesSufficient(randno[0], 1, 1, randno[1], randno[2])
         self.assertAlmostEqual(fn.density(), fn2.density(), delta=0.001)
Ejemplo n.º 8
0
 def testEvaluateDX(self):
     "Test vonMisesSufficient.evaluate_derivative_x"
     for i in xrange(100):
         x = uniform(-4 * pi, 4 * pi)
         N = randint(1, 20)
         R = randint(1, N)
         chiexp = uniform(-pi, pi)
         kappa = uniform(0.1, 100)
         fn = vonMisesSufficient(x, N, R, chiexp, kappa)
         self.assertAlmostEqual(fn.evaluate_derivative_x(),
                                R * kappa * sin(x - chiexp),
                                delta=0.001)
Ejemplo n.º 9
0
 def testEvaluateDKappa(self):
     "Test vonMisesSufficient.evaluate_derivative_kappa degenerate case"
     for i in xrange(100):
         randno = [
             uniform(-4 * pi, 4 * pi),
             uniform(-pi, pi),
             uniform(0.1, 100)
         ]
         fn = vonMises(*randno)
         fn2 = vonMisesSufficient(randno[0], 1, 1, randno[1], randno[2])
         self.assertAlmostEqual(fn.evaluate_derivative_kappa(),
                                fn2.evaluate_derivative_kappa(),
                                delta=0.001)
Ejemplo n.º 10
0
 def testEvaluateDKappa(self):
     "Test vonMisesSufficient.evaluate_derivative_kappa"
     try:
         from scipy.special import i0, i1
     except ImportError:
         self.skipTest("this test requires the scipy Python module")
     for i in xrange(100):
         x = uniform(-4 * pi, 4 * pi)
         N = randint(1, 20)
         R = randint(1, N)
         chiexp = uniform(-pi, pi)
         kappa = uniform(0.1, 100)
         fn = vonMisesSufficient(x, N, R, chiexp, kappa)
         self.assertAlmostEqual(
             fn.evaluate_derivative_kappa(), N * i1(kappa) / i0(kappa) - R * cos(x - chiexp), delta=0.001
         )
Ejemplo n.º 11
0
 def testEvaluateDKappa(self):
     "Test vonMisesSufficient.evaluate_derivative_kappa"
     try:
         from scipy.special import i0, i1
     except ImportError:
         self.skipTest("this test requires the scipy Python module")
     for i in xrange(100):
         x = uniform(-4 * pi, 4 * pi)
         N = randint(1, 20)
         R = randint(1, N)
         chiexp = uniform(-pi, pi)
         kappa = uniform(0.1, 100)
         fn = vonMisesSufficient(x, N, R, chiexp, kappa)
         self.assertAlmostEqual(fn.evaluate_derivative_kappa(),
                                N * i1(kappa) / i0(kappa) -
                                R * cos(x - chiexp),
                                delta=0.001)
Ejemplo n.º 12
0
 def testDensity(self):
     "Test vonMisesSufficient.density"
     try:
         from scipy.special import i0, i1
     except ImportError:
         self.skipTest("this test requires the scipy Python module")
     for i in xrange(100):
         # x, N, cmu1, smu2, kappa
         x = uniform(-4 * pi, 4 * pi)
         N = randint(1, 20)
         R = randint(1, N)
         chiexp = uniform(-pi, pi)
         kappa = uniform(0.1, 10)
         fn = vonMisesSufficient(x, N, R, chiexp, kappa)
         cpp = fn.density()
         py = exp(R * kappa * cos(x - chiexp)) / (2 * pi * i0(kappa) ** N)
         if py == 0.0:
             self.assertAlmostEqual(cpp, 0.0, delta=0.001)
         else:
             self.assertAlmostEqual(cpp / py, 1.0, delta=0.001)
Ejemplo n.º 13
0
 def testDensity(self):
     "Test vonMisesSufficient.density"
     try:
         from scipy.special import i0, i1
     except ImportError:
         self.skipTest("this test requires the scipy Python module")
     for i in xrange(100):
         #x, N, cmu1, smu2, kappa
         x = uniform(-4 * pi, 4 * pi)
         N = randint(1, 20)
         R = randint(1, N)
         chiexp = uniform(-pi, pi)
         kappa = uniform(0.1, 10)
         fn = vonMisesSufficient(x, N, R, chiexp, kappa)
         cpp = fn.density()
         py = exp(R * kappa * cos(x - chiexp)) / (2 * pi * i0(kappa)**N)
         if py == 0.0:
             self.assertAlmostEqual(cpp, 0.0, delta=0.001)
         else:
             self.assertAlmostEqual(cpp / py, 1.0, delta=0.001)