📊

【統計検定準1級】F分布

2024/08/18に公開

はじめに

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

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

学習書籍について

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


参考書籍について

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


F分布

確率変数X_1, X_2は連続型で互いに独立であるとする。
X_1が自由度n_1カイ2乗分布\chi^2 (n_1)に従い、X_2が自由度n_2のカイ2乗分布\chi^2 (n_2)に従うとする。今、統計量T

T = \cfrac{ \ \ \cfrac{ \ \ X_1 \ \ }{n_1} \ \ } {\cfrac{ \ \ X_2 \ \ }{n_2}}

と定め、この確率密度関数f

f(t) = \cfrac{\Gamma (\frac{n_1 + n_2}{2})} {\Gamma (\frac{n_1}{2}) \Gamma (\frac{n_2}{2})} {n_1}^{\frac{n_1}{2}} {n_2}^{\frac{n_2}{2}} \cfrac{t^{\frac{n_1}{2} - 1}} {(n_1 t + n_2)^{\frac{n_1 + n_2}{2}}} \hspace{5mm} (t \geqq 0)

であるとき、この確率密度関数f自由度(n_1, n_2)F分布(F distribution with (n_1, n_2) degrees of freedom)といい、F(n_1, n_2)と表す。ただし、\Gammaガンマ分布のガンマ関数を表し、\Gamma (\frac{n_1}{2}), \Gamma (\frac{n_2}{2}), \Gamma (\frac{n_1 + n_2}{2})はそれぞれ

\Gamma \left( \frac{n_1}{2} \right) = \int_{0}^{\infty} x^{\frac{n_1}{2} - 1} e^{-x} dx
\Gamma \left( \frac{n_2}{2} \right) = \int_{0}^{\infty} x^{\frac{n_2}{2} - 1} e^{-x} dx
\Gamma \left( \frac{n_1 + n_2}{2} \right) = \int_{0}^{\infty} x^{\frac{n_1 + n_2}{2} - 1} e^{-x} dx

である。さらに、F分布をベータ分布のベータ関数\Betaを用いて次のように表すことができる。

\begin{alignat*}{2} f(t) &= \cfrac{1} {\Beta (\frac{n_1}{2}, \frac{n_2}{2})} {n_1}^{\frac{n_1}{2}} {n_2}^{\frac{n_2}{2}} \cfrac{t^{\frac{n_1}{2} - 1}} {\left( n_1 t + n_2 \right)^{\frac{n_1 + n_2}{2}}} \hspace{5mm} (t \geqq 0) \end{alignat*}

ただし、

\Beta \left( \frac{n_1}{2}, \frac{n_2}{2} \right) = \int_{0}^{1} x^{\frac{n_1}{2} - 1} (1 - x)^{\frac{n_2}{2} - 1} dx

である。

グラフの描画

コードはこちら

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

import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib                    # グラフ上での日本語表示
from scipy import stats, integrate
from scipy.optimize import minimize_scalar    # 関数の最小値を求める

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

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

colors = ['#006C4F', '#ee7800', '#3155A6']

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

# 0から20までのサンプルを500個生成
x = np.linspace(0, 6, 500)

for n1, ls, color in zip([3, 5, 10], linestyles, colors):

    # 自由度nのF分布をインスタンス化
    rv = stats.f(n1, 10) # n2は10に固定
    
    ax.plot(x, rv.pdf(x),
            label = f'自由度{n1}のF分布',
            ls    = ls,
            color = color
           )

ax.legend()
plt.show()

F分布の期待値

E[T]T期待値

E[T] = \cfrac{n_2}{n_2 - 2} \hspace{5mm} (n_2 > 2)

F分布の分散

V[T]T分散

V[T] = 2 \left( \cfrac{n_2}{n_2 - 2} \right)^2 \cfrac{n_1 + n_2 - 2}{n_1 (n_2 - 4)} \hspace{5mm} (n_2 > 4)

非心F分布

確率変数X_1, X_2は連続型で互いに独立であるとする。
X_1が自由度n_1非心度\lambda非心カイ2乗分布\chi^2 (n_1, \lambda)に従い、X_2が自由度n_2カイ2乗分布\chi^2 (n_2)に従うとする。
今、確率変数T

T = \cfrac{ \ \ \cfrac{ \ \ X_1 \ \ }{n_1} \ \ } {\cfrac{ \ \ X_2 \ \ }{n_2}}

と定め、この確率密度関数を自由度(n_1, n_2)非心度\lambda非心F分布(noncentral F distribution with (n_1, n_2) degrees of freedom)といい、F(n_1, n_2, \lambda)と表す。

参考資料

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

Discussion