def gamma_transition_kernel (data, shape0, scale0, shape1, scale1):
S = numpy.sum(data)
Slog = numpy.sum(map(numpy.log, data))
N = len(data)
logP = 1.0+Slog
q = 1.0 + S
r = 1.0 + N
s = 1.0 + N
lnf_shape = lambda al: (al-1)*logP - q/scale0 - r*special.gammaln(al) - (al*s)*numpy.log(scale0)
p_shape = lnf_shape(shape1)
lnf_scale = lambda beta: (shape1-1)*logP - q/beta - r*special.gammaln(shape1) - (shape1*s)*numpy.log(beta)
p_scale = lnf_scale (scale1)
return p_shape + p_scale
# proposal
评论列表
文章目录