예제 #1
0
    def __init__(self, alpha=1., beta=1., hyper_alpha=(4., 1.),
                 hyper_beta=(2., 1.)):

        super(InvGammaPrior, self).__init__(alpha, beta)

        self._hyper_alpha = Gamma(*hyper_alpha)
        self._hyper_beta = Gamma(*hyper_beta)
        self.estimator = InvGammaPosteriorSampler()
예제 #2
0
    def testLogProb(self):

        g = Gamma(1., 1.)
        self.assertAlmostEqual(g(1.), numpy.exp(-1.), delta=1e-5)
        self.assertAlmostEqual(g(2.), numpy.exp(-2.), delta=1e-5)

        g = Gamma(2., 1.)
        self.assertAlmostEqual(g(1.), 1. * numpy.exp(-1), delta=1e-5)
        self.assertAlmostEqual(g(2.), 2. * numpy.exp(-2), delta=1e-5)
예제 #3
0
    def testRandom(self):

        gamma = Gamma(1., 1.)
        samples = gamma.random(10000)
        mu = numpy.mean(samples)
        var = numpy.var(samples)

        self.assertAlmostEqual(gamma.alpha / gamma.beta, mu, delta=1e-1)
        self.assertAlmostEqual(gamma.alpha / gamma.beta**2, var, delta=1e-1)
예제 #4
0
    def testParameterEstimation(self):

        alpha = 0.1
        beta = 0.1

        data = numpy.random.gamma(alpha, 1. / beta, 10000)
        pdf = Gamma(1, 1)
        pdf.estimate(data)

        self.assertAlmostEqual(pdf.alpha, alpha, places=2)
        self.assertAlmostEqual(pdf.beta, beta, places=1)
예제 #5
0
def calculate_KL((posterior_distances, prior_distances, bins)):

    from csb.statistics.pdf import Gamma
    from csb.numeric import log

    g = Gamma()
    g.estimate(prior_distances)
    posterior_hist = np.histogram(posterior_distances, bins=bins,
                                  normed=True)[0]

    return np.trapz(posterior_hist * log(posterior_hist / g(bins[:-1])),
                    bins[:-1])
예제 #6
0
    def testParameters(self):

        pdf = Gamma(1, 1)
        pdf.alpha = 2
        pdf.beta = 3

        self.assertEqual(pdf.alpha, 2)
        self.assertEqual(pdf.beta, 3)
        self.assertEqual(pdf.beta, pdf['beta'])

        def propertyAssignment():
            pdf.beta = -1

        def directAssignment(p):
            pdf[p] = -1

        self.assertRaises(ParameterValueError, propertyAssignment)
        self.assertRaises(ParameterValueError, directAssignment, 'alpha')
        self.assertRaises(ParameterValueError, directAssignment, 'beta')