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)
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)
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)
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)
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)
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 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)
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 )
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)
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)
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)