Exemple #1
0
 def test_get_density(self):
     """Test FStudentT.get_density"""
     n = 10
     for i in range(10):
         m, s, v = uniform(-10, 10), uniform(1, 10), uniform(1, 60)
         x = np.random.uniform(-100, 100, n)
         jx = np.ones_like(x)
         f = FStudentT(x, jx, m, s, v, "test")
         exp_dens = np.exp(-evaluate_studentt(x, m, s, v))
         self.assertAlmostEqual(f.get_density(), exp_dens, delta=1e-6)
Exemple #2
0
 def test_evaluate_Dnu(self):
     """Test FStudentT.evaluate_derivative_nu"""
     n = 10
     for i in range(10):
         m, s, v = uniform(-10, 10), uniform(1, 10), uniform(1, 60)
         x = np.random.uniform(-100, 100, n)
         jx = np.ones_like(x)
         f = FStudentT(x, jx, m, s, v, "test")
         f.update_cached_values()
         exp_derv = evaluate_derivative_v(x, m, s, v)
         self.assertAlmostEqual(f.evaluate_derivative_nu(), exp_derv,
                                delta=1e-6)
Exemple #3
0
    def test_update_sufficient_statistics(self):
        """Test sufficient statistics correctly updated."""
        n = 10
        for i in range(10):
            x = np.random.uniform(-100, 100, n)
            jx = 2 * np.ones_like(x)
            sumx = x.sum()
            sumx2 = (x**2).sum()
            logJX = np.log(jx).sum()
            f = FStudentT(x, jx, 1., 10., 10., "test")
            stats = f.get_sufficient_statistics()
            self.assertAlmostEqual(stats[0], sumx, delta=1e-4)
            self.assertAlmostEqual(stats[1], sumx2, delta=1e-2)
            self.assertAlmostEqual(stats[2], n, delta=1e-6)
            self.assertAlmostEqual(f.get_LogJX(), logJX, delta=1e-6)

            x = np.random.uniform(-100, 100, n)
            jx = 3 * np.ones_like(x)
            sumx = x.sum()
            sumx2 = (x**2).sum()
            logJX = np.log(jx).sum()
            f.update_sufficient_statistics(x, jx)
            stats = f.get_sufficient_statistics()
            self.assertAlmostEqual(stats[0], sumx, delta=1e-4)
            self.assertAlmostEqual(stats[1], sumx2, delta=1e-2)
            self.assertAlmostEqual(stats[2], n, delta=1e-6)
            self.assertAlmostEqual(f.get_LogJX(), logJX, delta=1e-6)
Exemple #4
0
 def test_create_from_sufficient_statistics(self):
     """Test constructor with sufficient stats."""
     n = 10
     for i in range(10):
         x = np.random.uniform(-100, 100, n)
         jx = 2 * np.ones_like(x)
         sumx = x.sum()
         sumx2 = (x**2).sum()
         logJX = np.log(jx).sum()
         f = FStudentT(sumx, sumx2, n, logJX, 1., 10., 10., "test")
         stats = f.get_sufficient_statistics()
         self.assertAlmostEqual(stats[0], sumx, delta=1e-4)
         self.assertAlmostEqual(stats[1], sumx2, delta=1e-2)
         self.assertAlmostEqual(stats[2], n, delta=1e-6)
         self.assertAlmostEqual(f.get_LogJX(), logJX, delta=1e-6)
Exemple #5
0
 def test_evaluate_DFX(self):
     """Test FStudentT.evaluate_derivative_FX"""
     n = 10
     for i in range(10):
         m, s, v = uniform(-10, 10), uniform(1, 10), uniform(1, 60)
         x = np.random.uniform(-100, 100, n)
         jx = np.ones_like(x)
         f = FStudentT(x, jx, m, s, v, "test")
         f.update_cached_values()
         exp_dervs = evaluate_derivative_fx(x, m, s, v)
         batch_dervs = f.evaluate_derivative_FX(x)
         for i in range(n):
             single_derv = f.evaluate_derivative_Fx(x[i])
             self.assertAlmostEqual(single_derv, exp_dervs[i],
                                    delta=1e-6)
             self.assertAlmostEqual(batch_dervs[i], exp_dervs[i],
                                    delta=1e-6)
Exemple #6
0
    def test_evaluate(self):
        """Test FStudentT.evaluate"""
        n = 10
        for i in range(10):
            # Test Student-t
            m, s, v = uniform(-10, 10), uniform(1, 10), uniform(1, 60)
            x = np.random.uniform(-100, 100, n)
            jx = np.ones_like(x)
            f = FStudentT(x, jx, m, s, v, "test")
            exp_score = evaluate_studentt(x, m, s, v)
            self.assertAlmostEqual(f.evaluate(), exp_score, delta=1e-6)

            # Test Log-Student-t
            m, s, v = uniform(.1, 10), uniform(1, 10), uniform(1, 60)
            x = np.random.uniform(.1, 100, n)
            jx = 1. / x
            logx = np.log(x)
            logm = np.log(m)
            f = FStudentT(logx, jx, logm, s, v, "test")
            exp_score = evaluate_logstudentt(logx, logm, s, v)
            self.assertAlmostEqual(f.evaluate(), exp_score, delta=1e-6)
Exemple #7
0
 def test_setters_getters(self):
     f = FStudentT(*get_random_attributes())
     for i in range(10):
         vs = get_random_attributes()
         f.set_sumFX(vs[0])
         f.set_sumFX2(vs[1])
         f.set_N(vs[2])
         f.set_LogJX(vs[3])
         f.set_FM(vs[4])
         f.set_sigma(vs[5])
         f.set_nu(vs[6])
         self.assertAlmostEqual(f.get_sumFX(), vs[0], delta=1e-6)
         self.assertAlmostEqual(f.get_sumFX2(), vs[1], delta=1e-6)
         self.assertAlmostEqual(f.get_N(), vs[2], delta=1e-6)
         self.assertAlmostEqual(f.get_LogJX(), vs[3], delta=1e-6)
         self.assertAlmostEqual(f.get_FM(), vs[4], delta=1e-6)
         self.assertAlmostEqual(f.get_sigma(), vs[5], delta=1e-6)
         self.assertAlmostEqual(f.get_nu(), vs[6], delta=1e-6)