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(合計試行数) と(成功数)の値xが大きい場合、ベータ二項確率を計算するより安定した方法は、ログを使用することです。ベータ二項分布関数のガンマ関数展開を使用すると、目的の確率の自然対数は次のようになります。

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引数は分布を左または右にシフトするだけです。これは、ここで必要なものではありません。)

于 2015-09-02T14:19:38.140 に答える
5

ウィキによると、複合分布関数は次のように与えられます。

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 では見つかりませんが、 scipyのベータ機能があればワンライナーです。

于 2014-11-14T20:18:21.237 に答える
1

ベータ二項分布は、バージョン 1.4.0 からscipy.stats.betabinomとして scipy に含まれています。

于 2020-01-04T21:33:45.170 に答える