2.10.3 F分布 〜統計検定2級対応・統計学入門まとめ〜

当まとめでは統計検定$2$級の公式テキストの副教材に用いることができるように、統計学入門に関して取り扱います。当記事では「統計検定$2$級対応 統計学基礎」の$2.10.3$節「$F$分布」の内容に基づいて$F$分布の定義や確率密度関数のグラフ化に関して取りまとめました。
統計検定$2$級のテキストとの対応がわかりやすいように、目次を「統計検定$2$級対応 統計学基礎」と対応させました。学びやすさの観点からあえて目次を対応させましたが、当まとめは「統計の森」オリジナルのコンテンツであり、統計検定の公式とは一切関係ないことにご注意ください。

・統計検定$2$級対応・統計学入門まとめ
https://www.hello-statisticians.com/stat_basic

F分布の概要

概要

必要な数学

確率密度関数の図示にあたって、指数関数やベータ関数の理解が必要になります。統計検定$2$級範囲では$F$分布の確率密度関数は出てきませんが、「統計数値表」の形式で使用する必要があるので確率密度関数の式とグラフの描画に関しては抑えておくと良いと思います。

ベータ関数はガンマ関数を用いて表すことができますが、下記でガンマ関数とベータ関数に関する計算について取りまとめました。

F分布

確率変数の対応

$$
\large
\begin{align}
X & \sim \chi^2(m) \\
Y & \sim \chi^2(n)
\end{align}
$$

上記のように$X$と$Y$がそれぞれ自由度$m$と$n$の$\chi^2$分布に従う場合を仮定します。このとき、下記のように$F$を定義します。
$$
\large
\begin{align}
F = \frac{X/m}{Y/n}
\end{align}
$$

上記の式で定めた$F$は自由度$(m,n)$の$F$分布(F-distribution)$F(m,n)$に従い、$F \sim F(m,n)$のように表されます。

確率密度関数

確率密度関数の数式

自由度$m,n$の$F$分布$F(m,n)$の確率変数を$Z$、確率密度関数を$f(z)$とおくと、$f(z)$は下記のように表すことができます。
$$
\large
\begin{align}
f(z) = \frac{z^{\frac{m}{2}-1}}{\displaystyle B \left( \frac{m}{2},\frac{n}{2} \right)} \left( \frac{m}{n} \right)^{\frac{m}{2}} \left( 1+\frac{m}{n}z \right)^{-\frac{m+n}{2}}, \quad z>0
\end{align}
$$

ガンマ関数とベータ関数

ガンマ関数$\Gamma(\alpha)$は下記のように定義されます。
$$
\large
\begin{align}
\Gamma(\alpha) = \int_{0}^{\infty} x^{\alpha-1} e^{-x} dx \quad (1)
\end{align}
$$

このとき、ガンマ関数$\Gamma(\alpha)$に関して以下の式が成立します。
$$
\large
\begin{align}
\Gamma(\alpha+1) &= \alpha \Gamma(\alpha), \quad (2) \\
\Gamma(1) &= 1, \quad (3) \\
\Gamma(n) &= (n-1)!, n \in \mathbb{N}, \quad (4) \\
\Gamma \left( \frac{1}{2} \right) &= \sqrt{\pi}, \quad (5)
\end{align}
$$

また、ベータ関数$B(\alpha,\beta)$は下記のように定義されます。
$$
\large
\begin{align}
B(\alpha,\beta) = \int_{0}^{\infty} x^{\alpha-1} (1-x)^{\beta-1} dx \quad (6)
\end{align}
$$

上記で定義したベータ関数$B(\alpha,\beta)$に関して以下の式が成立します。
$$
\large
\begin{align}
B(\alpha,\beta) &= B(\beta,\alpha), \quad (7) \\
B(\alpha,\beta) &= \frac{\Gamma(\alpha)\Gamma(\beta)}{\Gamma(\alpha+\beta)}, \quad (8) \\
\Gamma(m,n) &= \frac{(m-1)!(n-1)!}{(m+n-1)!}, m,n \in \mathbb{N}, \quad (9)
\end{align}
$$

詳しい導出はそれぞれ下記で取り扱いました。

発展事項①

$F$分布の確率密度関数の導出にあたっては統計検定準$1$級や$1$級で出てくる変数変換などが必要で難しいので当記事では省略しました。詳しくは下記で取り扱いましたので、導出を確認する際は下記などをご確認ください。

確率密度関数の図示

以下では$F(1,1), F(2,1), F(10,1)$の$F$分布の図示を行います。それぞれの分布のベータ関数は前項の式に基づいて下記のように計算できます。
$$
\large
\begin{align}
B \left( \frac{1}{2},\frac{1}{2} \right) &= \frac{\Gamma(1/2)\Gamma(1/2)}{\Gamma(1/2+1/2)} \\
&= \frac{\sqrt{\pi} \times \sqrt{\pi}}{1!} = \pi \\
B \left( \frac{2}{2},\frac{1}{2} \right) &= \frac{\Gamma(1)\Gamma(1/2)}{\Gamma(1+1/2)} \\
&= \frac{\sqrt{\pi}}{\sqrt{\pi}/2} = 2 \\
B \left( \frac{10}{2},\frac{1}{2} \right) &= \frac{\Gamma(5)\Gamma(1/2)}{\Gamma(5+1/2)} \\
&= \frac{3 \cdot 2^8}{9 \cdot 7 \cdot 5 \cdot 3}
\end{align}
$$

上記より、確率密度関数の式に基づいて下記を実行することで$F$分布の確率密度関数を描くことができます。

import numpy as np
import matplotlib.pyplot as plt

z = np.arange(0.01,5.01,0.01)

f_z = {}

f_z[0] = z**(1./2.-1.) * (1./1.)**(10./2.) * (1.+1.*z/1.)**(-(1.+1.)/2.) / np.pi
f_z[1] = z**(2./2.-1.) * (2./1.)**(2./2.) * (1.+2.*z/1.)**(-(2.+1.)/2.) / 2.
f_z[2] = z**(10./2.-1.) * (10./1.)**(10./2.) * (1.+10.*z/1.)**(-(10.+1.)/2.) * 9. * 7. * 5. * 3. / (3.*2.**8)

label_z = {}
label_z[0], label_z[1], label_z[2] = "(m,n) = (1,1)", "(m,n) = (2,1)", "(m,n) = (10,1)"

for i in range(3):
    plt.plot(z,f_z[i],label=label_z[i])

plt.legend()
plt.ylim([0.,2.5])
plt.show()

・実行結果

上図は「統計検定$2$級対応 統計学基礎」の図$2.11$に対応します。

発展事項②

標本分布の確率密度関数から「統計数値表」の作成にあたっては「数値積分」が用いられます。教科書などで取り扱われることは少ないですが、台形の公式などに基づいて近似値の計算ができるので、概要は抑えておくと良いかもしれません。