示例#1
0
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]))
示例#2
0
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)