SciPy scipy.stats.binom 関数

Bhuwan Bhatt 2023年1月30日
  1. 二項分布を計算するための scipy.stats.binom() の構文:
  2. コード例:binom を使用した離散分布の確率質量関数(pmf)の計算
  3. 追加コード
  4. コード例:累積分布関数(cdf)の計算``binom の使用
  5. コード例:binom を使用した分布の平均、分散、歪度、尖度の計算
SciPy scipy.stats.binom 関数

Python Scipy scipy.stats.binom() 関数は、2つの可能な結果成功または失敗を持つ実験の二項分布を計算します。さらに、binom() メソッドを適用して、任意の二項分布の確率質量関数(pmf)確率密度関数(pdf)累積分布関数(cdf)stats などを個別に取得できます。

二項分布を計算するための scipy.stats.binom() の構文:

scipy.stats.binom(n, p)

パラメーター

n これは、実験が実行された試行の数です。
p これは、1 回の試行で成功する確率です。他の考えられる結果は、q で示され、1-p に等しい failure です。

コード例:binom を使用した離散分布の確率質量関数(pmf)の計算

import scipy
from scipy import stats
from scipy.stats import binom

n = 12
p = 0.8
x = range(0, n)
pmf_result = binom.pmf(x, n, p)

print("x:\n", list(x))
print("The pmf of x is:\n", pmf_result)

出力:

x:
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
The pmf of x is:
 [4.09600000e-09 1.96608000e-07 4.32537600e-06 5.76716800e-05
 5.19045120e-04 3.32188877e-03 1.55021476e-02 5.31502203e-02
 1.32875551e-01 2.36223201e-01 2.83467842e-01 2.06158430e-01]

上記の出力を棒グラフに視覚化しようとすると、次のようになります。

追加コード

import scipy
from scipy import stats
from scipy.stats import binom
import matplotlib.pyplot as plt

n = 12
p = 0.8
x = range(0, n)
pmf_result = binom.pmf(x, n, p)

dist = [binom.pmf(r, n, p) for r in x]
plt.bar(x, dist)
plt.xlabel("Number of Success")
plt.ylabel("Probability ")
plt.show()

出力:

二項分布の PMF プロット

ここでは、成功確率 80%の実験を考慮し、12 回の実験を行います。各試行で成功する確率はかなり高いため、出力は次のように視覚化できます。

  1. 一度だけ成功する可能性は非常に少なくなります 4.09600000e-09
  2. 棒グラフに示されているように、8 回近く成功する可能性はかなり高いです。

コード例:累積分布関数(cdf)の計算``binom の使用

cdf() 関数を使用して、特定の範囲内で多数の成功を得る確率を計算します。

import scipy
from scipy import stats
from scipy.stats import binom

n = 10
p = 0.8
k = 5
cdf_result = binom.cdf(k, n, p)

print("The cdf of k=5 is in given binomial distribution is: ", cdf_result)

出力:

The cdf of k=5 is in given binomial distribution is:  0.032793497599999964

ここでは、成功確率が 80%の場合に 10 回の試行を繰り返した場合の成功率を調べようとしています。

そして、私たちの出力 0.03279349759999386 は、10 回の試行で 5 回以下の成功を収める可能性がほぼ 3 パーセントであることを示しています。

コード例:binom を使用した分布の平均、分散、歪度、尖度の計算

import scipy
from scipy import stats
from scipy.stats import binom

n = 12
p = 0.8
mean, variance, skewness, kurtosis = binom.stats(n, p, moments="mvsk")

print("The mean of the given distribution is:", mean)
print("The variance of the given distribution is:", variance)
print("The skewness of the given distribution is:", skewness)
print("The kurtosis of the given distribution is:", kurtosis)

出力:

The mean of given distribution is: 9.600000000000001
The variance of given distribution is: 1.92
The skewness of given distribution is: -0.4330127018922194
The kurtosis of given distribution is: 0.020833333333333353

ここで、負の歪度は、分布の左側の裾が右側より太い、または長いことを意味します。

関連記事 - SciPy Stats