7

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

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

4

3 回答 3

10

如果n(total # trial) 和x(# successes) 的值很大,那么计算 beta 二项式概率的更稳定的方法是使用对数。使用beta-二项分布函数的gamma 函数展开,您所需概率的自然对数为:

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是 gamma 函数的自然对数,在 中给出scipy.special

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

于 2015-09-02T14:19:38.140 回答
5

Wiki 说复合分布函数由下式给出

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 中找到它,但它是单行的,前提是您具有scipy 的 beta 功能

于 2014-11-14T20:18:21.237 回答
1

Beta-Binomial 分布包含在 scipy 版本 1.4.0 中作为scipy.stats.betabinom

于 2020-01-04T21:33:45.170 回答