我的很多编程都涉及到 scipy.stats 中的统计函数。一个新问题需要计算beta-二项式分布的 pmf 。因为它具有解析形式,但没有出现在 scipy.stats 中,所以我需要自己为其 pmf 定义一个函数。我正在使用 scipy 版本 0.12.0 和 numpy 版本 1.7.0。
import numpy
from scipy.special import gammaln, betaln
def beta_binomial_pmf(k, n, K, N):
# compute natural log of pmf
ln_pmf = ( gammaln(n+1) - gammaln(k+1) - gammaln(n-k+1) ) + \
- betaln(K+1,N-K+1) + betaln(K+k+1,N-K+n-k+1)
return numpy.exp(ln_pmf)
Run Code Online (Sandbox Code Playgroud)
在统计问题中,我试图解决 n 和 k 的值通常在 0 到 100 之间的范围内,但 K 和 N 可以大到 1e9。我的问题是这个函数将为不同的输入返回相同的值。
k = 0
n = 5
K = numpy.array([12, 10, 8]) …Run Code Online (Sandbox Code Playgroud)