Python 中的 Beta 二项函数



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

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

如果 n(总 # 次试验)和x(# 成功)的值很大,那么计算 β-二项式概率的更稳定方法是使用日志。使用 β-二项分布函数的 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是伽马函数的自然对数,以scipy.special 表示。

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

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 函数。

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

相关内容

  • 没有找到相关文章

最新更新