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