2014-11-14 160 views
3

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

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

回答

2

Wiki says该化合物分布函数由

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

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

+0

的选择应该返回一个整数(我想是这样,但['numpy.choose'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.choose.html)似乎返回一个数组)。 – TheChymera 2014-11-15 01:18:21

+0

是的,选择是一个组合,看看那里:http://en.wikipedia.org/wiki/Combination – JulienD 2014-11-15 18:32:28

+0

好吧,所以也许你的意思是[梳子](http://docs.scipy.org/doc/scipy- 0.14.0/reference/generated/scipy.misc.comb.html),而不是[选择](http://docs.scipy.org/doc/numpy/reference/generated/numpy.choose.html)?我有权使用['scipy.misc.comb'](http://docs.scipy.org/doc/numpy/reference/generated/numpy.choose.html)吗? – TheChymera 2014-11-15 19:18:25

4

如果您的n(总#次试用)和x(#成功)的值很大,则计算Beta二项式概率的更稳定方法是使用日志。使用β-二项式分布函数的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给出。

(BTW:该loc说法只是转移向左或向右分布,这是不是你想要的这里。)