こんにちわ!Yamuです!
前回の記事で離散分布の期待値
分散について説明しました。
今回は離散分布の
ベルヌーイ分布
二項分布について解説した後
pythonで実装していきます!
- ベルヌーイ分布について知りたい
- ベルヌーイ分布の例題を解きたい
- 二項分布について知りたい
- 二項分布の例題を解きたい
- 二項分布をpythonで実装したい
目次
ベルヌーイ分布
サイコロを投げて
偶数が出た場合を成功
奇数が出た場合を失敗とすると
ベルヌーイ試行として知られる試行が行われます。
ベルヌーイ試行では
各試行ごとに2つの独立した結果のいずれかが得られるため
2種類の結果が出現する可能性があります。
この試行で得られる確率分布は
ベルヌーイ分布として知られています。
2種類の結果を0(失敗)と1(成功)とし
成功確率をPとすると
\(P(X=K)=P^k(1-P)^{1-k}\)
k:0 もしくは1
P:1回の試行で事象2が起こる確率
期待値と分散は
\(E[X] = μ = p \)
\(V[x] = E[x] – μ^2 = 1・p + (1-p)・0 – p^2 = p(1-p)\)
コインを投げたとき50%で
表と裏のどちらかが出る事象
を利用して
ベルヌーイ分布の解説を
していきます。
【例題1】コイン投げ
コインを1回投げたときの確率密度関数を求めよ
コインを投げた結果は表か裏のどちらかである。
表の時をK=1,裏の時はK=0と置いて
P(X=1)とP(X=0)を求める
表が出る確率\(P\)は
\(\displaystyle P=\frac{1}{2}\)
*この時点で答えが出ている
裏が出る確率\(1-P\)は
\(\displaystyle 1-P= \frac{1}{2}\)
*この時点で答えが出ている
表が出る場合を1とすると
\(K=1\)
ベルヌーイ分布の公式は
\(P(X=K)=P^k(1-p)^{1-k}\)
各値を当てはめると
表が出る確率\(P\)は
\(P(X=1)=(\displaystyle \frac{1}{2})^1・(\frac{1}{2})^0\)
\(\displaystyle P(X=1)=\frac{1}{2}\)
裏が出る確率\(1-P\)は
\(P(X=0)=(\displaystyle \frac{1}{2})^0・(\frac{1}{2})^1\)
\(\displaystyle P(X=0)=\frac{1}{2}\)
ベルヌーイ分布を利用して
表が出る確率と裏が出る
確率を求めるとともに 0.5
ベルヌーイ分布は
表と裏の2つの結果の確率を扱う
単純な離散分布なんですね
Pythonを使ってベルヌーイ分布の確率密度関数の値を出力するコードを実装
ある実験を繰り返し10回行った所8回成功し2回失敗した。
成功=1失敗=0とし
表にまとめるとこのようになった。
[0,0,1,1,1,1,1,1,1,1]
\(P(x=0)\),\(P(x=1)\)を求めよ
10回中2回失敗した。
失敗した確率
すなわちP(X=0)は
\(\displaystyle P(X=0)=\frac{2}{10}=0.2\)
10回中8回成功した。
成功した確率
すなわちP(X=1)は
\(\displaystyle P(X=1)=\frac{8}{10}=0.8\)
このようにベルヌーイ分布は
結果の観察から求めることが
出来るんですね!
これをpythonに実装していきます。
import numpy as np
import matplotlib.pyplot as plt
# ベルヌーイ分布
# fail:0,sucsess:1
prob_data = np.array([])
data = np.array([0,0,1,1,1,1,1,1,1,1])
for i in np.unique(data):
P = len(data[data==i])/len(data)
print(i,"が出る確率",P)
prob_data = np.append(prob_data,P)
print(prob_data)
plt.bar([0,1],prob_data,align = 'center')
plt.xticks([0,1],['fail','sucsess'])
plt.grid(True)
二項分布
成功確率を p失敗確率を 1−p とすると、
試行回数を n回 のベルヌーイ試行を行った際に
n 回の試行のうち特定の x 回で成功し
残りの n−x 回で失敗する確率を計算するのが二項分布です。
\(P(X=x)=nC_x・P^x・(1-P)^{n-x}\)
期待値
\(E[X]=np\)
分散
\(V[X]=np(1-P)\)
二項分布はベルヌーイ分布を
拡張したものなんですね!
コインを投げたとき50%で
表と裏のどちらかが出る事象
を利用して二項分布の解説を
していきます。
【例題3】コイン投げ
コインを10回投げたとき3回表が出る確率を
二項分布を利用して求めよ
コインを10回投げたとき3回表が出る事象の数
\(10C_3\)より
\(=120\)
表が出る回数は3回
\(x=3\)
表が出る確率Pは
\(\displaystyle P=\frac{1}{2}\)
二項分布の公式より
\(\displaystyle P(X=3)=10C_3・(\frac {1}{2})^3・(\frac {1}{2})^7\)
\(=0.117\)
Pythonで二項分布のコードを実装する
Pythonで二項分布のコードを実装後
コインの表が出る回数を確率変数とし
確率変数Xを0から1ずつstepさせ
\(P(X=1),P(2)…P(10)\)の値と
結果をplotせよ
from scipy.stats import binom
import matplotlib.pyplot as plt
import numpy as np
# パラメータの設定
p = 0.5 # 成功確率
n = 10 # 試行回数
# 二項分布
x = np.arange(0, n+1)
pmf = binom.pmf(x, n, p)
# 結果の表示
print(f'試行回数: {n}, 成功確率: {p}')
print(f'確率密度関数 (PMF): {pmf}')
# グラフの描画
plt.bar(x, pmf, align='center', alpha=0.5)
plt.plot(x, pmf, marker='o', linestyle='-', color='blue', label='PMF Line')
plt.title('Binomial Distribution PMF')
plt.xlabel('X')
plt.ylabel('Density')
plt.xticks(x, x)
plt.show()
print('確率密度関数の総和',sum(pmf))
出力結果の値は
事象 | 確率密度関数 | 値 |
表が一回も出ない | \(P(X=0)\) | 0.00097656 |
表が1回出る | \(P(X=1)\) | 0.00976563 |
表が2回出る | \(P(X=2)\) | 0.04394531 |
表が3回出る | \(P(X=3)\) | 0.1171875 |
表が4回出る | \(P(X=4)\) | 0.20507812 |
表が5回出る | \(P(X=5)\) | 0.24609375 |
表が6回出る | \(P(X=6)\) | 0.20507812 |
表が7回出る | \(P(X=7)\) | 0.1171875 |
表が8回出る | \(P(X=8)\) | 0.04394531 |
表が9回出る | \(P(X=9)\) | 0.00976563 |
表が10回出る | \(P(X=10)\) | 0.00097656 |
グラフの出力結果は
確率が50%なので左右対称
になってますね!面白い!
確率的に10回コインを振った時
5回表が出る確率が
一番高いんですね!
期待値は公式より\(E(x)=np=5\)
なのであってそうですね!
おまけ
せっかくコードを作って
もうちょっと遊びたい気分なので
p# 成功確率 n # 試行回数
を変化させて遊んでいきます!
ロットの抜き取り検査
不良品率5%のロットから20個のsample
を抜き取った時
2個の不良品が含まれる確率を求めよ
不良率P=0.05,試行回数n=20より
コードのPとnを値を変更すると
\(P(x=2)=5.95821478e-02\)
グラフは
参考文献
まとめ
以上が離散分布のベルヌーイ分布,二項分布について解説した後
pythonで実装しました。本当はポアソンと幾何分布の説明も
したかったんですけどあれも入れたい、これも入れたいと
記事の詰め込み癖が止まらない…
ご視聴ありがとうございました!