Exemplo n.º 1
0
    def calc_marginal_logp(N, sum_sin_x, sum_cos_x, k, a, b, scale, shape):
        assert N >= 0
        assert a > 0
        assert 0 <= b and b <= 2 * math.pi
        assert k >= 0
        an, bn = cc_vonmises_uc.posterior_update_parameters(
            N, sum_sin_x, sum_cos_x, a, b, k)

        Z0 = cc_vonmises_uc.calc_log_Z(a)
        ZN = cc_vonmises_uc.calc_log_Z(an)

        lp = -(float(N)) * (LOG2PI + utils.log_bessel_0(k)) + ZN - Z0

        return lp + cc_vonmises_uc.calc_k_log_prior(k, scale, shape)
Exemplo n.º 2
0
    def calc_marginal_logp(N, sum_sin_x, sum_cos_x, k, a, b, scale, shape):
        assert N >= 0
        assert a > 0
        assert 0 <= b and b <= 2*math.pi
        assert k >= 0 
        an, bn = cc_vonmises_uc.posterior_update_parameters(
            N, sum_sin_x, sum_cos_x, a, b, k)

        Z0 = cc_vonmises_uc.calc_log_Z(a)
        ZN = cc_vonmises_uc.calc_log_Z(an)

        lp = -(float(N))*(LOG2PI +  utils.log_bessel_0(k)) + ZN-Z0

        return lp + cc_vonmises_uc.calc_k_log_prior(k, scale, shape)
Exemplo n.º 3
0
    def calc_marginal_logp(N, sum_sin_x, sum_cos_x, a, b, k):
        assert N >= 0
        assert a > 0
        assert 0 <= b and b <= 2*math.pi
        assert k > 0 
        an, bn = cc_vonmises.posterior_update_parameters(
            N, sum_sin_x, sum_cos_x, a, b, k)

        Z0 = cc_vonmises.calc_log_Z(a)
        ZN = cc_vonmises.calc_log_Z(an)

        lp = -(float(N))*(LOG2PI + utils.log_bessel_0(k)) + ZN-Z0

        if numpy.isnan(lp) or numpy.isinf(lp):
            pdb.set_trace()

        return lp
Exemplo n.º 4
0
    def calc_predictive_logp(x, N, sum_sin_x, sum_cos_x, a, b, k):
        assert 0 <= x and x <= 2 * math.pi
        assert N >= 0
        assert a > 0
        assert 0 <= b and b <= 2 * math.pi
        assert k >= 0

        if x < 0 or x > math.pi * 2.0:
            return 0.0

        an, bn = cc_vonmises_uc.posterior_update_parameters(
            N, sum_sin_x, sum_cos_x, a, b, k)

        am, bm = cc_vonmises_uc.posterior_update_parameters(
            N + 1.0, sum_sin_x + sin(x), sum_cos_x + cos(x), a, b, k)

        ZN = cc_vonmises_uc.calc_log_Z(an)
        ZM = cc_vonmises_uc.calc_log_Z(am)

        lp = -LOG2PI - utils.log_bessel_0(k) + ZM - ZN

        return lp
Exemplo n.º 5
0
    def calc_predictive_logp(x, N, sum_sin_x, sum_cos_x, a, b, k):
        assert 0 <= x and x <= 2*math.pi
        assert N >= 0
        assert a > 0
        assert 0 <= b and b <= 2*math.pi
        assert k >= 0 

        if x < 0 or x > math.pi*2.0:
            return 0.0

        an, bn = cc_vonmises_uc.posterior_update_parameters(
            N, sum_sin_x, sum_cos_x, a, b, k)

        am, bm = cc_vonmises_uc.posterior_update_parameters(
            N+1.0, sum_sin_x+sin(x), sum_cos_x+cos(x), a, b, k)

        ZN = cc_vonmises_uc.calc_log_Z(an)
        ZM = cc_vonmises_uc.calc_log_Z(am)
    
        lp = -LOG2PI -  utils.log_bessel_0(k) + ZM - ZN

        return lp
Exemplo n.º 6
0
 def calc_log_Z(a):
     assert a > 0
     return utils.log_bessel_0(a)
Exemplo n.º 7
0
 def calc_log_Z(a):
     assert a > 0
     return utils.log_bessel_0(a)