Python中的Beta二项式函数

时间:2014-11-14 16:58:42

标签: python distribution probability-density binomial-cdf

我想计算二项分布给出的预定x(成功),n(试验)和p(概率)的概率 - 后者由概率质量函数Beta(a,b)给出

我知道scipy.stats.binom.pmf(x,n,p) - 但我不确定如何用概率函数替换p。我也想知道我是否可以使用scipy.stats.binom.pmfloc参数来模拟这种行为。

3 个答案:

答案 0 :(得分:8)

如果n(总#试验)和x(#成功)的值很大,那么计算beta二项式概率的更稳定的方法是使用日志。使用beta-binomial分布函数的gamma function expansion,您所需概率的自然对数为:

ln(answer) = gammaln(n+1) + gammaln(x+a) + gammaln(n-x+b) + gammaln(a+b) - \
        (gammaln(x+1) + gammaln(n-x+1) + gammaln(a) + gammaln(b) + gammaln(n+a+b))

其中gammaln是伽玛函数的自然对数,在scipy.special中给出。

(顺便说一句:loc参数只是向左或向右移动分布,这不是你想要的。)

答案 1 :(得分:5)

Wiki says复合分布函数由

给出
f(k|n,a,b) = comb(n,k) * B(k+a, n-k+b) / B(a,b)

其中B是beta函数,a和b是原始Beta参数,n是二项式参数。 k这里是你的x和p消失,因为你整合了p的值来获得这个(卷积)。 也就是说,你不会在scipy中找到它,但如果你有the beta function from scipy,它就是单行的。

答案 2 :(得分:0)

Beta-Binomial发行版以MongoPlayground的形式包含在1.4.0版的scipy中