Esempio n. 1
0
    def test_half_cauchy_prior(self):
        # Test two specific function values
        p1 = pints.HalfCauchyLogPrior(0, 10)
        self.assertEqual(p1([0]), -float('Inf'))
        self.assertAlmostEqual(p1([10]), -3.447314978843445)
        p2 = pints.HalfCauchyLogPrior(10, 5)
        self.assertAlmostEqual(p2([10]), -2.594487638427916)

        # Test exceptions
        self.assertRaises(ValueError, pints.HalfCauchyLogPrior, 0, 0)
        self.assertRaises(ValueError, pints.HalfCauchyLogPrior, 10, -1)

        # Test means
        self.assertTrue(np.isnan(p1.mean()))
        self.assertTrue(np.isnan(p2.mean()))

        # Test other function calls
        self.assertEqual(p1.n_parameters(), 1)
        self.assertEqual(p2.n_parameters(), 1)

        # Test sensitivities
        p = pints.HalfCauchyLogPrior(-3, 5)
        val = p([3.3])
        val1, dp = p.evaluateS1([3.3])
        self.assertEqual(val, val1)
        self.assertAlmostEqual(dp[0], -0.19477508115628384, places=6)
Esempio n. 2
0
    def test_half_cauchy_prior_sampling(self):
        p1 = pints.HalfCauchyLogPrior(0, 1000)
        self.assertEqual(len(p1.sample()), 1)
        n = 1000
        v_samples = p1.sample(n)
        self.assertEqual(len(v_samples), n)
        self.assertTrue(np.all(v_samples > 0))

        # test medians
        p1 = pints.HalfCauchyLogPrior(-3, 10)
        n = 1000000
        v_samples = p1.sample(n)
        self.assertTrue(np.abs(np.median(v_samples) - 10.45) < 0.1)
Esempio n. 3
0
 def __init__(self, centered=True):
     self._n_parameters = 10
     self._y_j = [28, 8, -3, 7, -1, 1, 18, 12]
     self._sigma_j = [15, 10, 16, 11, 9, 11, 10, 18]
     # priors
     self._mu_log_pdf = pints.GaussianLogPrior(0, 5)
     self._tau_log_pdf = pints.HalfCauchyLogPrior(0, 5)
     self._centered = bool(centered)
Esempio n. 4
0
 def test_half_cauchy_prior_sampling(self):
     # Aren't many tests for Cauchy distributions
     # because they have no mean or variance!
     p1 = pints.HalfCauchyLogPrior(0, 1000)
     self.assertEqual(len(p1.sample()), 1)
     n = 1000
     v_samples = p1.sample(n)
     self.assertEqual(len(v_samples), n)
     self.assertTrue(np.all(v_samples > 0))
Esempio n. 5
0
    def test_half_cauchy_prior(self):
        # Test two specific function values
        p1 = pints.HalfCauchyLogPrior(0, 10)
        self.assertEqual(p1([0]), -float('Inf'))
        self.assertAlmostEqual(p1([10]), -3.447314978843445)
        p2 = pints.HalfCauchyLogPrior(10, 5)
        self.assertAlmostEqual(p2([10]), -2.594487638427916)

        # Test exceptions
        self.assertRaises(ValueError, pints.HalfCauchyLogPrior, 0, 0)
        self.assertRaises(ValueError, pints.HalfCauchyLogPrior, 10, -1)

        # Test means
        self.assertTrue(np.isnan(p1.mean()))
        self.assertTrue(np.isnan(p2.mean()))

        # Test other function calls
        self.assertEqual(p1.n_parameters(), 1)
        self.assertEqual(p2.n_parameters(), 1)
Esempio n. 6
0
 def test_half_cauchy_cdf_icdf(self):
     p1 = pints.HalfCauchyLogPrior(-3, 4.5)
     self.assertAlmostEqual(p1.cdf(5.5), 0.504576372137924)
     self.assertAlmostEqual(p1.icdf(0.72), 12.937927031237367)