📊

【統計検定準1級】二項分布

2024/07/21に公開

はじめに

この記事では、統計検定準1級取得に向けて学習したことをまとめていきます。
工学系の数学ではなく数理あるあるの、論述ゴリゴリな解答になっていると思いますのであらかじめご了承ください。
注意:さらに計算過程は数学文化の『省略の美』を無視してエレファントに書いています。

【リンク紹介】
統計検定準1級のまとめ記事一覧
これまで書いたシリーズ記事一覧

学習書籍について

この記事では「統計学実践ワークブック」を中心に、学んだことをまとめていきます。記事を読んで本格的に勉強してみたいなと思った方は、是非ご購入を検討なさってください。


参考書籍について

統計実践ワークブックは、大量の知識項目と問題が収められている反面、計算過程や知識背景が大きく省略されているため、知識体系をきちんと学ぶ参考書として東京大学から出版されている名著「統計学入門」を使っています。
※ワークブックとしては素晴らしい質だと思いますが、どうしてもその内容量とページ数の都合上、問題のない範囲で削除されているということです。人によっては1冊で問題ない方もおられると思いますが、私には無理でした。


二項分布

ベルヌーイ試行において、成功の結果が起こる確率をpとする。そしてn回の試行中に成功の結果が起こる回数を確率変数Xとする。このとき、Xの確率が

\begin{alignat*}{2} P(X = x) &= {}_n C_x \ p^x (1 - p)^{n - x} \hspace{5mm} (x = 0, 1, 2, \cdots, n) \end{alignat*}

であるとき、この確率関数{}_n C_x \ p^x (1 - p)^{n - x}を(成功確率pの)二項分布(binomial distribution)といい、Bin(n, p)と表す。ただし、

{}_n C_x= \cfrac{n!}{x! \times (n - x)!}, \hspace{5mm}{}_n C_0 = 1 \\
r! = r \times (r - 1) \times \cdots \times 2 \times 1, \hspace{5mm}0! = 1

とする。

グラフの描画

コードはこちら

参考資料→Pythonで理解する統計解析の基礎
※参考にはしていますが表記は大分変更しています。

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
from scipy.special import comb # 組み合わせ関数

# 表示桁数を小数点以下第3位に設定
%precision 3

# [Jupyter notebook only]
# グラフ表示を非インタラクティブモード(jupyter notebook内に表示)に設定
# インタラクティブモードだと別ウィンドウで表示される
%matplotlib inline

"""""""""""""""""""""""""""""""""""""""""""""""""""
関数名:Bin(n, p)
機 能:二項分布
引 数:試行回数n、成功確率p
戻り値:確率変数と確率関数(X, f)
"""""""""""""""""""""""""""""""""""""""""""""""""""

def Bin(n, p):
    X = np.arange(n + 1)

    def f(x):
        if x in X:
            return comb(n, x) * (p**x) * ((1 - p)**(n - x))
        else:
            return 0

    return X, f

n = 10         # 試行回数
p = 0.3        # 成功確率
Xf = Bin(n, p) # 確率変数とその確率関数の値

check_prob(Xf)

plot_prob(Xf)
基本関数
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

# 表示桁数を小数点以下第3位に設定
%precision 3

# [Jupyter notebook only]
# グラフ表示を非インタラクティブモード(jupyter notebook内に表示)に設定
# インタラクティブモードだと別ウィンドウで表示される
%matplotlib inline

# グラフの線の種類
linestyles = ['-', '--', ':']

"""""""""""""""""""""""""""""""""""""""""""""""""""
関数名:E(Xf, g = lambda x: x)
機 能:確率変数(確率変数の関数)の期待値を返す
引 数:確率変数と確率関数X(タプル)
       確率変数Xの関数g(初期値:恒等関数)
戻り値:期待値
"""""""""""""""""""""""""""""""""""""""""""""""""""

def E(Xf, g = lambda x: x):
    X = Xf[0]    # 確率変数
    f = Xf[1]    # 確率関数
    
    expection = np.sum([g(x_k) * f(x_k) for x_k in X])
    
    return expection

"""""""""""""""""""""""""""""""""""""""""""""""""""
関数名:V(Xf, g = lambda x: x)
機 能:確率変数(確率変数の関数)の分散を返す
引 数:確率変数と確率関数X(タプル)
       確率変数Xの関数g(初期値:恒等関数)
戻り値:分散
"""""""""""""""""""""""""""""""""""""""""""""""""""

def V(Xf, g = lambda x: x):
    X = Xf[0]    # 確率変数
    f = Xf[1]    # 確率関数
    expection = E(Xf, g)
    
    variance = np.sum([(g(x_k) - expection)**2 * f(x_k) for x_k in X])
    
    return variance

"""""""""""""""""""""""""""""""""""""""""""""""""""
関数名:check_prob(Xf)
機 能:確率変数が確率の性質を満たしているかを確認する
引 数:確率変数と確率関数(タプル)
戻り値:なし
"""""""""""""""""""""""""""""""""""""""""""""""""""

def check_prob(Xf):
    X = Xf[0]    # 確率変数
    f = Xf[1]    # 確率関数
    
    prob = np.array([f(x_k) for x_k in X])
    assert np.all(prob >= 0), '負の確率があります'
    
    prob_sum = np.round(np.sum(prob), 6)
    assert prob_sum == 1, f'確率の和が{prob_sum}になりました'

    print(f'期待値は{E(Xf):.4}')
    print(f'分散は{V(Xf):.4}')

"""""""""""""""""""""""""""""""""""""""""""""""""""
関数名:plot_prob(Xf)
機 能:確率関数と期待値を図示する
引 数:確率変数と確率関数X(タプル)
戻り値:なし
"""""""""""""""""""""""""""""""""""""""""""""""""""

def plot_prob(Xf):
    X = Xf[0]    # 確率変数
    f = Xf[1]    # 確率関数
    prob = np.array([f(x_k) for x_k in X])

    fig = plt.figure(figsize = (10, 6))
    ax  = fig.add_subplot(1, 1, 1)

    # 棒グラフ
    ax.bar(X, prob, label = 'prob', color = '#006C4F')
    
    # 縦線
    ax.vlines(E(Xf), 0, 1, label = 'expection', color = '#ee7800')

    # グラフ設定
    ax.set_xticks(np.append(X, E(Xf))) # x目盛値
#   ax.set_ytickx()                    # y目盛値  
#   ax.set_xlim()                      # x軸の範囲
    ax.set_ylim(0, prob.max() * 1.2)   # y軸の範囲
#   ax.xlabel()                        # x軸ラベル
#   ax.ylabel()                        # y軸ラベル    
    ax.legend()                        # 凡例

    # 描画
    plt.show()

二項分布の期待値

E[X]X期待値

E[X] = np

期待値の証明

(証明)
期待値の定義より、

E[X] = \sum_{i = 0}^{\infty} x_i p(x_i)

と表せる。ただし、p(x_i)確率関数とする。
ここで、x_1 = 1, x_2 = 2, x_3 = 3, \cdotsであることから、

\begin{alignat*}{2} E[X] &= \sum_{i = 0}^{\infty} x_i p(x_i) \\ &= \sum_{i = 0}^{\infty} i \ p(i) \hspace{5mm} \cdots ① \\ \end{alignat*}

と表せる。また、

\begin{alignat*}{2} p(x_i) &= p(i) \\ &= {}_n C_i p^i (1 - p)^{n - i} \hspace{5mm} \cdots ② \\ \end{alignat*}

であるから、①、②より

\begin{alignat*}{2} E[X] &= \sum_{i = 0}^{\infty} i p(i) \\ &= \sum_{i = 0}^{\infty} i \ {}_n C_i \ p^i (1 - p)^{n - i} \\ &= \sum_{i = 1}^{\infty} i \ {}_n C_i \ p^i (1 - p)^{n - i} \\ &(\because i = 0 のとき 第0項の値は0である) \\ &= \sum_{i = 1}^{\infty} i \cdot \cfrac{{\color{blue} n!}}{i! \cdot (n - i)!} \cdot p^i (1 - p)^{n - i} \hspace{5mm} \cdots ③ \\ &= {\color{blue} n}\sum_{i = 1}^{\infty} {\color{red} i} \cdot \cfrac{{\color{blue} (n - 1)!}}{{\color{red} i!} \cdot (n - i)!} \cdot p^i (1 - p)^{n - i} \\ &= n \sum_{i = 1}^{\infty} {\color{red} i} \cdot \cfrac{(n - 1)!}{{\color{red} i!} \cdot (n - i)!} \cdot p^i (1 - p)^{n - i} \\ &= n \sum_{i = 1}^{\infty} \cfrac{(n - 1)!}{{\color{red} (i - 1)!} \cdot (n - i)!} \cdot {\color{green} p^i} (1 - p)^{n - i} \\ &= n {\color{green} p} \sum_{i = 1}^{\infty} \cfrac{(n - 1)!}{(i - 1)! \cdot {\color{red} (n - i)}!} \cdot {\color{green} p^{i - 1}} (1 - p)^{\color{red} n - i} \\ &= np \sum_{i = 1}^{\infty} \cfrac{(n - 1)!}{(i - 1)! \cdot {\color{red} (n - i - 1 + 1)}!} \cdot p^{i - 1} (1 - p)^{\color{red} n - i - 1 + 1} \\ &= np \sum_{i = 1}^{\infty} \cfrac{(n - 1)!}{(i - 1)! \cdot ({\color{red} (n - 1) - (i - 1)})!} \cdot p^{i - 1} (1 - p)^{\color{red} (n - 1) - (i - 1)} \\ &= np \sum_{i = 1}^{\infty} {}_{n - 1} C_{i - 1} \ p^{i - 1} (1 - p)^{(n - 1) - (i - 1)} \\ \end{alignat*}

ここで、\displaystyle\sum_{i = 1}^{\infty} {}_{n - 1} C_{i - 1} \ p^{i - 1} (1 - p)^{(n - 1) - (i - 1)}は、(n - 1)回のベルヌーイ試行における成功の結果が起こる回数を確率変数(I - 1)としたときの確率関数である。よって、

\sum_{i = 1}^{\infty} {}_{n - 1} C_{i - 1} \ p^{i - 1} (1 - p)^{(n - 1) - (i - 1)} = 1

が成り立つため、

\begin{alignat*}{2} E[X] &= np \sum_{i = 1}^{\infty} {}_{n - 1} C_{i - 1} \ p^{i - 1} (1 - p)^{n - i} \\ &= np \cdot 1 \\ &= np \end{alignat*}

が成り立つ。

(証明終)

二項分布の分散

V[X]X分散

V[X] = np(1 - p)

分散の証明

(証明)
分散を期待値で表すと以下のようになる。

V[X] = E[X^2] - (E[X])^2

E[X]は明らかであるので、E[X^2]を求める。期待値の定義と、x_iの取りうる値により

\begin{alignat*}{2} E[X^2] &= \sum_{i = 0}^{\infty} {x_i}^2 p(x_i) \\ & (p(x_i)は確率関数とする) \\ &= \sum_{i = 0}^{\infty} i^2 \ p(i) \\ &= \sum_{i = 0}^{\infty} i^2 \ {}_n C_i \ p^i (1 - p)^{n - i} \\ &= \sum_{i = 1}^{\infty} i^2 \cdot \cfrac{n!}{i! \cdot (n - i)!} \cdot p^i (1 - p)^{n - i} \\ &= \sum_{i = 1}^{\infty} (i^2 - i + i) \cdot \cfrac{n!}{i! \cdot (n - i)!} \cdot p^i (1 - p)^{n - i} \\ &= \sum_{i = 1}^{\infty} (i(i - 1) + i) \cdot \cfrac{n!}{i! \cdot (n - i)!} \cdot p^i (1 - p)^{n - i} \\ &= \sum_{i = {\color{red} 2}}^{\infty} i{\color{red} (i - 1)} \cdot \cfrac{n!}{i! \cdot (n - i)!} \cdot p^i (1 - p)^{n - i} + {\color{green} \sum_{i = 1}^{\infty} i \cdot \cfrac{n!}{i! \cdot (n - i)!} \cdot p^i (1 - p)^{n - i}} \\ &= \sum_{i = {\color{red} 2}}^{\infty} i{\color{red} (i - 1)} \cdot \cfrac{n!}{i! \cdot (n - i)!} \cdot p^i (1 - p)^{n - i} + {\color{green} np \ (\because ③)} \\ &= \sum_{i = 2}^{\infty} {\color{red} i(i - 1)} \cdot \cfrac{n!}{{\color{red} i!} \cdot (n - i)!} \cdot p^i (1 - p)^{n - i} + np \\ &= \sum_{i = 2}^{\infty} \cfrac{{\color{blue} n!}}{{\color{red} (i - 2)!} \cdot (n - i)!} \cdot p^i (1 - p)^{n - i} + np \\ &= \sum_{i = 2}^{\infty} \cfrac{{\color{blue} n \cdot (n - 1) \cdot (n - 2)!}} {(i - 2)! \cdot (n - i)!} \cdot p^i (1 - p)^{n - i} + np \\ &= {\color{blue} n \cdot (n - 1)} \sum_{i = 2}^{\infty} \cfrac{{\color{blue} (n - 2)!}} {(i - 2)! \cdot {\color{red} (n - i)}!} \cdot p^i (1 - p)^{\color{red} (n - i)} + np \\ &= n(n - 1) \sum_{i = 2}^{\infty} \cfrac{(n - 2)!} {(i - 2)! \cdot {\color{red} (n - i - 2 + 2)}!} \cdot p^i (1 - p)^{\color{red} (n - i - 2 + 2)} + np \\ &= n(n - 1) \sum_{i = 2}^{\infty} \cfrac{(n - 2)!} {(i - 2)! \cdot ({\color{red} (n - 2) - (i - 2)})!} \cdot p^i (1 - p)^{\color{red} (n - 2) - (i - 2)} + np \\ &= n(n - 1) \sum_{i = 2}^{\infty} {}_{n - 2} C_{i - 2} \ {\color{green} p^i} (1 - p)^{\color{red} (n - 2) - (i - 2)} + np \\ &= n(n - 1) {\color{green} p^2} \sum_{i = 2}^{\infty} {}_{n - 2} C_{i - 2} \ {\color{green} p^{i - 2}} (1 - p)^{(n - 2) - (i - 2)} + np \\ \end{alignat*}

ここで、\displaystyle\sum_{i = 2}^{\infty} {}_{n - 2} C_{i - 2} \ p^{i - 2} (1 - p)^{(n - 2) - (i - 2)}は、(n - 2)回のベルヌーイ試行における成功の結果が起こる回数を確率変数(I - 2)としたときの確率関数である。よって、

\sum_{i = 2}^{\infty} {}_{n - 2} C_{i - 2} \ p^{i - 2} (1 - p)^{(n - 2) - (i - 2)} = 1

が成り立つため、

\begin{alignat*}{2} E[X^2] &= n(n - 1) p^2 \sum_{i = 2}^{\infty} {}_{n - 2} C_{i - 2} \ p^{i - 2} (1 - p)^{(n - 2) - (i - 2)} + np \\ &= n(n - 1) p^2 \cdot 1 + np \\ &= n(n - 1) p^2 + np \end{alignat*}

が成り立つ。以上より

\begin{alignat*}{2} V[X] &= E[X^2] - (E[X])^2 \\ &= (n(n - 1) p^2 + np) - (np)^2 \\ &= n^2p^2 - np^2 + np - n^2p^2 \\ &= - np^2 + np \\ &= np(1 - p) \\ \end{alignat*}

(証明終)

二項分布の確率母関数

G(s) = E[s^X]X確率母関数

\begin{alignat*}{2} G(s) &= E[s^X] \\ &= (ps + (1 - p))^n \end{alignat*}

二項分布の正規分布近似

確率変数X_1, X_2, \cdots, X_nは互いに独立で、それぞれ同一のBin(1, p)に従うとする。期待値はp、分散はp(1 - p)である。このとき、

X = X_1 + X_2 + \cdot + X_n

とおくと、XBin(n, p)に従う。このときnが十分に大きいとすると、中心極限定理より、

Z = \cfrac{X - np}{\sqrt{np(1 - p)}}

とおくと、標準正規分布N(0, 1)に従う。つまり

\overline{X} \text{ は正規分布 } N \left( p, \cfrac{p(1 - p)}{n} \right) \text{ に従う。}

例題

(「統計学実践ワークブック」より)
問5.1
ある研究機関では、ウイルスに関する研究を行っている。多くのウイルスを検査し、滅多に現れないウイルスAを発見し、その性質を研究するのがこの期間の仕事である。検査するウイルスの全株数をnとする。n株のウイルスの検査は独立に行われ、いずれの検査においても、ウイルスAの発見率は一定値pであるとする。

[1] n株のウイルスの中にウイルスAが少なくとも1株はみつかる確率\betaを求める式を、pnを用いて示せ。
[2] pの値が0に十分近いとき、\log (1 - p) \approx -pの近似が成り立つ。これを用いて、p = 1/5000, \beta = 0.98のときのnの値を求めよ。ただし、\log (0.02) \approx - 3.9であり、\logは自然対数である。

解答

[1] 確率変数Xを、ウイルスAが見つかる株の数とする(0 \leqq X \leqq n)。すると、Xの確率P(X)n株のウイルスからウイルスAの株がX株見つかる確率)は以下のようになる。

P(X) = {}_n C_{x} p^x (1 - p)^{n - x}

これはXの二項分布である(つまりBin(n, p))。
さて、求める\betaについて、これは「n株のウイルスの中にウイルスAが少なくとも1株は見つかる確率」であるので、

\begin{alignat*}{2} \beta &= P(X \geqq 1) \\ &= 1 - P(X = 0) \\ &= 1 - {}_n C_0 p^0 (1 - p)^{n - 0} \\ &= 1 - 1 \times 1 \times (1 - p)^n \\ &= \underline{1 - (1 - p)^n} \end{alignat*}

[2] p = \cfrac{1}{5000}, \beta = 0.98と[1]より

\begin{alignat*}{2} \beta &= 1 - (1 - p)^n \\ 0.98 &= 1 - (1 - \cfrac{1}{5000})^n \\ (1 - \cfrac{1}{5000})^n &= 0.02 \\ \log (1 - \cfrac{1}{5000})^n &= \log 0.02 \\ n &= \cfrac{\log 0.02}{\log (1 - \cfrac{1}{5000})} \end{alignat*}

ここで、

\log (0.02) \approx - 3.9 \\ \log (1 - \cfrac{1}{5000}) \approx - \cfrac{1}{5000}

であるから、

\begin{alignat*}{2} n &\approx \cfrac{ \ \ 3.9 \ \ }{\frac{1}{5000}} \\ n &\approx \underline{19500} \end{alignat*}

参考資料

\bf{\textcolor{red}{記事が役に立った方は「いいね」を押していただけると、すごく喜びます \ 笑}}
ご協力のほどよろしくお願いします。

Discussion