SciPy scipy.stats.binom 関数
Bhuwan Bhatt
2023年1月30日
-
二項分布を計算するための
scipy.stats.binom()
の構文: -
コード例:
binom
を使用した離散分布の確率質量関数(pmf)
の計算 - 追加コード
-
コード例:
累積分布関数(cdf)の計算``binom
の使用 -
コード例:
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()
出力:
ここでは、成功確率 80%の実験を考慮し、12 回の実験を行います。各試行で成功する確率はかなり高いため、出力は次のように視覚化できます。
- 一度だけ成功する可能性は非常に少なくなります
4.09600000e-09
。 - 棒グラフに示されているように、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
ここで、負の歪度は、分布の左側の裾が右側より太い、または長いことを意味します。