class GaussianTests(unittest.TestCase): def setUp(self): self.prior = Uniform([-1.0, 0.0], [1.0, 1.0], seed=1) self.model = Gaussian(self.prior, 0, 1, seed=1) def test_simulate(self): samples = self.model.simulate(10) self.assertIsInstance(samples, list) expected_output = [1.6243453636632417, -0.61175641365007538, -0.5281717522634557, \ -1.0729686221561705, 0.86540762932467852, -2.3015386968802827, \ 1.74481176421648, -0.76120690089510279, 0.31903909605709857, \ -0.24937037547741009] self.assertEqual(samples, expected_output) def test_get_parameters(self): self.model.sample_from_prior() params = self.model.get_parameters() # test shape of parameters param_len = len(params) self.assertEqual(param_len, 2) def test_set_parameters(self): self.assertRaises(TypeError, self.model.set_parameters, 3.4) self.assertFalse(self.model.set_parameters([1, 3, 2])) self.assertFalse(self.model.set_parameters([2, -1]))
class PenLogRegTests(unittest.TestCase): def setUp(self): self.prior = Uniform([-5.0, 5.0], [5.0, 10.0], seed=1) self.model = Gaussian(self.prior, mu=1.1, sigma=1.0, seed=1) self.stat_calc = Identity(degree=2, cross=0) self.likfun = PenLogReg(self.stat_calc, self.model, n_simulate=100, n_folds=10) def test_likelihood(self): #Checks whether wrong input type produces error message self.assertRaises(TypeError, self.likfun.likelihood, 3.4, [2, 1]) self.assertRaises(TypeError, self.likfun.likelihood, [2, 4], 3.4) # create observed data y_obs = self.model.simulate(1) # create fake simulated data self.model.set_parameters(np.array([1.1, 1.0])) y_sim = self.model.simulate(100) comp_likelihood = self.likfun.likelihood(y_obs, y_sim) expected_likelihood = 4.39965563272 # This checks whether it computes a correct value and dimension is right self.assertLess(comp_likelihood - expected_likelihood, 10e-2)