def _sample_alpha(self, n=1):
eps = 1e-5
loglikelihood = lambda alpha: (alpha - 1) * np.log(self.a_0+eps) + alpha * self.c_0 * np.log(self.beta+eps) \
- self.b_0 * np.log(special.gamma(alpha))
likelihood = lambda alpha: np.exp(loglikelihood(alpha))
stop = 15
alpha_space = np.linspace(0, stop, num=old_div(stop, 0.001))
alpha_dist = likelihood(alpha_space)
alpha_dist = old_div(alpha_dist, alpha_dist.sum())
return np.random.choice(a=alpha_space, p=alpha_dist, size=n)
评论列表
文章目录