📊

【統計検定準1級】幾何分布

2024/07/24に公開

はじめに

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

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

学習書籍について

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


参考書籍について

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


幾何分布

定義は何を確率変数とするかで、2パターンあります。※本質的に大きな変化はありませんが、期待値が変わってしまうので要注意です。

定義1

ベルヌーイ試行において、\bf{はじめて成功の結果が起こるまでに、\textcolor{red}{起こった失敗の結果の数}}を、確率変数Xとする。このとき、Xの確率が

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

であるとき、この確率関数p (1 - p)^{x}を(成功確率pの)幾何分布(geometric distribution)といい、Geo(p)と表す。

定義2

ベルヌーイ試行において、\bf{はじめて成功の結果が起こるまでの、\textcolor{red}{行った試行回数}}を、確率変数Xとする。このとき、Xの確率が

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

であるとき、この確率関数p (1 - p)^{x - 1}を(成功確率pの)幾何分布といい、Geo(p)と表す。
※つまりは成功結果の試行回数1回分を含んでいるため、失敗回数を表現するためにはその1回分を引いてあげないとダメということです。

グラフの描画

定義2のグラフ
コードはこちら

参考資料→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

"""""""""""""""""""""""""""""""""""""""""""""""""""
関数名:Ge(p)
機 能:幾何分布
引 数:成功確率p
戻り値:確率変数と確率関数(X, f)
"""""""""""""""""""""""""""""""""""""""""""""""""""

def Ge(p):
    X = np.arange(1, 30)

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

    return X, f

p = 0.5    # 成功確率
Xf = Ge(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()

幾何分布の期待値

定義1

X\bf{はじめて成功の結果が起こるまでに、\textcolor{red}{起こった失敗の結果の数}}
E[X]X期待値

\begin{alignat*}{2} E[X] &= \cfrac{1 - p}{p} \end{alignat*}

定義2

X\bf{はじめて成功の結果が起こるまでの、\textcolor{red}{行った試行回数}}
E[X]Xの期待値

\begin{alignat*}{2} E[X] &= \cfrac{ \ \ 1 \ \ }{p} \end{alignat*}

期待値の証明

※定義2のときで証明。定義1は定義2と同様にして証明が可能。

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

E[X] = \sum_{i = 1}^{\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 = 1}^{\infty} x_i p(x_i) \\ &= \sum_{i = 1}^{\infty} i \ p(i) \hspace{5mm} \cdots ① \\ \end{alignat*}

と表せる。また、

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

であるから、①、②より

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

となる。ここで、マクローリン展開より

\cfrac{1}{1 - a} = 1 + a + a^2 + \cdots
等式の導出

マクローリン展開

f(x) = f(0) + f^{(1)} (0) (x - 0) + \cdots + \cfrac{f^{(n)} (0)}{n !} (x - 0)^n + \cdots

において、f(x) = \cfrac{1}{1 - x}とすると、

\begin{alignat*}{2} f^{(1)} (x) &= -1 \cdot (1 - x)^\prime \cdot (1 - x)^{-1 - 1} \\ &= -1 \cdot (-1) \cdot (1 - x)^{-2} \\ &= \cfrac{1}{(1 - x)^2} \\ & \\ f^{(2)} (x) &= -2 \cdot (-1) \cdot (1 - x)^{-3} \\ &= \cfrac{2}{(1 - x)^3} \\ &= (1 \cdot 2) \cfrac{1}{(1 - x)^3} & \\ f^{(3)} (x) &= 2 \cfrac{3}{(1 - x)^4} \\ &= (1 \cdot 2 \cdot 3) \cfrac{1}{(1 - x)^4} \end{alignat*}

であることから、

f^{(n)} (x) = n! \cfrac{1}{(1 - x)^{n + 1}}

と推測できる。※数学的帰納法で証明する必要あり
よって、

f^{(n)} (0) = n!

が成り立ち、従ってこれとマクローリン展開より

\begin{alignat*}{2} f(x) &= f(0) + f^{(1)} (0) (x - 0) + \cdots + \cfrac{f^{(n)} (0)}{n!} (x - 0)^n + \cdots \\ \cfrac{1}{1 - x} &= 1 + 1 \cdot x + \cdots + \cfrac{n!}{n!} \cdot x^n + \cdots \\ \cfrac{1}{1 - x} &= 1 + x + \cdots + x^n + \cdots \end{alignat*}

が成り立つ。

【参考にしたサイト】
https://manabitimes.jp/math/1399

が成り立つ。これを両辺aで微分をすると、

\begin{alignat*}{2} \cfrac{d}{da} \cfrac{1}{1 - a} &= \cfrac{d}{da} \left( 1 + a + a^2 + \cdots \right) \\ \cfrac{1}{(1 - a)^2} &= \sum_{k = 1}^{\infty} k a^{k - 1} \\ \end{alignat*}

となる。ここで、a = 1 - p, k = iをそれぞれ代入すると

\cfrac{1}{(1 - (1 - p))^2} = \sum_{i = 1}^{\infty} i \ (1 - p)^{i - 1} \hspace{5mm} \cdots ④ \\

となる。よって、③に④を代入すると、

\begin{alignat*}{2} E[X] &= p \sum_{i = 1}^{\infty} i \ (1 - p)^{i - 1} \\ &= p \times \cfrac{1}{(1 - (1 - p))^2} \\ &= p \times \cfrac{1}{p^2} \\ &= \cfrac{1}{p} \end{alignat*} (証明終)

【参考にしたサイト】
https://avilen.co.jp/personal/knowledge-article/geometric-distribution/

幾何分布の分散

V[X]X分散
※分散は定義1、定義2共通となります。

V[X] = \cfrac{1 - p}{p^2}

分散の証明

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

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

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

\begin{alignat*}{2} E[X^2] &= \sum_{i = 1}^{\infty} {x_i}^2 p(x_i) \\ &= \sum_{i = 1}^{\infty} i^2 \ p(i) \\ &= \sum_{i = 1}^{\infty} i^2 \ p (1 - p)^{i - 1} \\ &= p \sum_{i = 1}^{\infty} i^2 \ (1 - p)^{i - 1} \end{alignat*}

となる。ただし、p(x_i)確率関数とする。ここで、

p \sum_{i = 1}^{\infty} i^2 \ (1 - p)^{i - 1} = \sum_{i = 1}^{\infty} (2i - 1) (1 - p)^{i - 1}
等式の導出
S_n = \sum_{i = 1}^{n} i^2 \ (1 - p)^{i - 1} \hspace{5mm} \cdots (ⅰ)

とおく。また、両辺に1 - pをかけると

(1 - p)S_n = \sum_{i = 1}^{n} i^2 \ (1 - p)^{i} \hspace{5mm} \cdots (ⅱ)

となる。よって(ⅰ) - (ⅱ)より

\begin{alignat*}{2} S_n - (1 - p)X_n &= \sum_{i = 1}^{n} i^2 \ (1 - p)^{i - 1} - \sum_{i = 1}^{n} i^2 \ (1 - p)^{i} \\ p S_n &= \sum_{i = 1}^{n} (i^2 - (i - 1)^2) (1 - p)^{i - 1} - n^2 (1 - p)^n \\ &= \sum_{i = 1}^{n} (i^2 - i^2 + 2i - 1) (1 - p)^{i - 1} - n^2 (1 - p)^n \\ &= \sum_{i = 1}^{n} (2i - 1) (1 - p)^{i - 1} - n^2 (1 - p)^n \\ \end{alignat*}

となる。ここで、

\lim_{n \to \infty} n^2 (1 - p)^n = 0


証明せずにグラフで描いてみました。

より、

\begin{alignat*}{2} \lim_{n \to \infty} p S_n &= \lim_{n \to \infty} \left( \sum_{i = 1}^{n} (2i - 1) (1 - p)^{i - 1} - n^2 (1 - p)^n \right) \\ &= \lim_{n \to \infty} \sum_{i = 1}^{n} (2i - 1) (1 - p)^{i - 1} \\ &= \sum_{i = 1}^{\infty} (2i - 1) (1 - p)^{i - 1} \\ \end{alignat*}

が成り立つので、

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

となる。ここで、\displaystyle\sum_{i = 1}^{\infty} i (1 - p)^{i - 1}について、初項1、公比1-pの無限等比級数であり、

0 < 1 - p < 1

より、この無限等比級数は収束し、

\sum_{i = 1}^{\infty} i (1 - p)^{i - 1} = \cfrac{1}{1 - (1 - p)} \hspace{5mm} \cdots ⑥

である。以上、⑤と④(期待値の証明)、⑥より

\begin{alignat*}{2} E[X^2] &= 2 \cdot \cfrac{1}{p^2} - \cfrac{1}{1 - (1 - p)} \\ &= \cfrac{2}{p^2} - \cfrac{1}{p} \end{alignat*}

である。したがって

\begin{alignat*}{2} V[X] &= E[X^2] - (E[X])^2 \\ &= \left( \cfrac{2}{p^2} - \cfrac{1}{p} \right) - \cfrac{1}{p^2} \\ &= \cfrac{1}{p^2} - \cfrac{1}{p} \\ &= \cfrac{1 - p}{p^2} \end{alignat*} (証明終)

【参考にしたサイト】
https://mathlandscape.com/geometric-distrib-ev/#toc6

幾何分布の確率母関数

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

\begin{alignat*}{2} G(s) &= E[s^X] \\ &= \cfrac{p}{1 - (1 - p)s}, \hspace{5mm} |s| < \cfrac{1}{1 - p} \end{alignat*}

例題

(「統計学実践ワークブック」より)
問5.5
あるお菓子を買うと、4種類のアニメキャラクターのカードのうちの1つが等確率でおまけとして付いてくる。
[1] 無作為復元抽出を仮定できるとき、4種類すべてのカードを揃えるまでに必要な購入回数の期待値を求めよ。
[2] 4種類のカードをすべて集めた後、お菓子を買うのをやめていたが、新しい種類のカード1枚が追加されたため再び購入をはじめた。この場合に、はじめの4種類と追加の1種類の、5種類すべてをそろえるのに必要な購入回数の期待値をxとする。一方、はじめから5種類が発売されていた場合に、5種類すべてを揃えるまでに必要な購入回数の期待値をyとする。購入回数の期待値の差x - yの値を求めよ。ただし、いずれの購入時期においても等確率の無作為復元抽出を仮定してよい。

解答

[1] 今、n種類中すでにk \ (0 \leqq k \leqq n - 1)種類のカードが揃っているとする。このときお菓子を買ってk + 1種類目のカードが出る確率p_k

p_k = \cfrac{n - k}{n} \hspace{5mm} \cdots ①

と表せる。ここで
k種類目のカードが揃った後、k + 1種類目のカードが出るまでに必要な購入回数」をxとすると、
k種類目のカードが揃った後、k + 1種類目のカードがx回目の購入で出る」確率は、

p_k (1 - p_k)^{x - 1}

である(\bf{\textcolor{red}{定義2}})。つまり、このx確率変数X_kとすると、X_kは(成功確率p_kの)幾何分布である(つまりGeo(p_k))。

よって、この期待値E[X_k]は、

\begin{alignat*}{2} E[X_k] &= \cfrac{1}{p_k} \\ &= \cfrac{n}{n - k} \hspace{5mm} \cdots ② \end{alignat*}

である。したがって、「n種類すべてのカードを揃えるまでに必要な購入回数の期待値」は

\begin{alignat*}{2} E \left[ \sum_{k = 0}^{n - 1} X_k \right] &= \sum_{k = 0}^{n - 1} E[X_k] \\ &= \sum_{k = 0}^{n - 1} \cfrac{n}{n - k} \hspace{5mm} \cdots ③ \\ \end{alignat*}

と表せる。ここで、題意よりn = 4であるから、

\begin{alignat*}{2} E \left[ \sum_{k = 0}^{3} X_k \right] &= \sum_{k = 0}^{3} E[X_k] \\ &= \sum_{k = 0}^{3} \cfrac{4}{4 - k} \\ &= \cfrac{4}{4} + \cfrac{4}{3} + \cfrac{4}{2} + \cfrac{4}{1} \\ &= \cfrac{4}{4} + \cfrac{4}{3} + \cfrac{4}{2} + \cfrac{4}{1} \\ &= 4 \cdot \cfrac{ 3 \cdot 2 \cdot 1 + 4 \cdot 2 \cdot 1 + 4 \cdot 3 \cdot 1 + 4 \cdot 3 \cdot 2 } {4 \cdot 3 \cdot 2 \cdot 1} \\ &= \cfrac{3 + 4 + 6 + 12}{3} \\ &= \underline{\cfrac{ \ 25 \ }{3}} \\ \end{alignat*}

[2] まず期待値xについて考える。
「4種類のカードが揃っているとき、5種類目のカードが出る確率は、[1]の①より

\begin{alignat*}{2} p_4 &= \cfrac{5 - 4}{5} \\ &= \cfrac{1}{5} \end{alignat*}

である。よってこの時の期待値は、[1]の②より

\begin{alignat*}{2} E[X_4] &= \cfrac{5}{5 - 4} \\ &= 5 \hspace{5mm} \cdots ④ \end{alignat*}

である。したがって、期待値xは、[1]で求めた値に④を足せばよいので、

\begin{alignat*}{2} x &= E \left[ \sum_{k = 0}^{3} X_k \right] + E[X_4] \\ &= \cfrac{25}{3} + 5 \\ &= \cfrac{ \ 40 \ }{3} \end{alignat*}

次に期待値yについて考える。これは[1]の③の式において、n = 5を適用すれば求めることができる。よって、

\begin{alignat*}{2} y &= E \left[ \sum_{k = 0}^{4} X_k \right] \\ &= \sum_{k = 0}^{4} \cfrac{5}{5 - k} \\ &= \cfrac{5}{5} + \cfrac{5}{4} + \cfrac{5}{3} + \cfrac{5}{2} + \cfrac{5}{1} \\ & (計算過程省略) \\ &= \cfrac{137}{12} \end{alignat*}

以上より、

\begin{alignat*}{2} x - y &= \cfrac{ \ 40 \ }{3} - \cfrac{137}{12} \\ &= \cfrac{160 - 137}{12} \\ &= \underline{\cfrac{ \ 23 \ }{12}} \\ \end{alignat*}

参考資料

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

Discussion