def log_betabin(k, n, alpha, beta):
try:
c = math.lgamma(alpha+beta) - math.lgamma(alpha) - math.lgamma(beta)
except:
print('alpha = {}, beta = {}'.format(alpha, beta))
if isinstance(k, (list, np.ndarray)):
if len(k) != len(n):
print('length of k in %d and length of n is %d' %(len(k), len(n)))
raise ValueError
lbeta = []
for ki, ni in zip(k, n):
lbeta.append(math.lgamma(ki+alpha) + math.lgamma(ni-ki+beta) - math.lgamma(ni+alpha+beta) + c)
return np.array(lbeta)
else:
return (math.lgamma(k+alpha) + math.lgamma(n-k+beta) - math.lgamma(n+alpha+beta) + c)
评论列表
文章目录