ヘロログ
統計学

F分布

F 分布(F-distribution)は、2 つの母分散の比の推定検定において中心的な役割を果たす分布である。分散分析(ANOVA)や回帰分析における F 検定など、統計学の幅広い分野で用いられる。

F 分布は、ロナルド・フィッシャー(Ronald Fisher)の業績を称えて名付けられた。2 つの独立なカイ二乗分布の比として定義され、t 分布の二乗と密接な関係がある。

定義

Y_1 \sim \chi^2(n_1)Y_2 \sim \chi^2(n_2) がそれぞれ自由度 n_1n_2 のカイ二乗分布に従い、互いに独立のとき、

X = \dfrac{Y_1 / n_1}{Y_2 / n_2}

が従う分布を自由度 (n_1, n_2) の F 分布といい、F(n_1, n_2) で表す。n_1第 1 自由度(分子の自由度)、n_2第 2 自由度(分母の自由度)という。

F 分布の確率密度関数
f(x) = \dfrac{1}{B\left(\dfrac{n_1}{2}, \dfrac{n_2}{2}\right)} \left(\dfrac{n_1}{n_2}\right)^{\frac{n_1}{2}} \dfrac{x^{\frac{n_1}{2}-1}}{\left(1 + \dfrac{n_1}{n_2}x\right)^{\frac{n_1+n_2}{2}}}, \quad x > 0

ここで B(\cdot, \cdot) はベータ関数である。F 分布は正の値のみをとり、右に歪んだ形状をもつ。

ポイント

F 分布は 2 つの自由度をもつ。自由度の順序は重要で、F(n_1, n_2)F(n_2, n_1) は異なる分布である。

グラフ

自由度の組み合わせを変えたときの F 分布の確率密度関数を示す。

f(x) 1.0 0.8 0.6 0.4 0.2 0 x 0 1 2 3 4 5
━━ F(1,1)
━━ F(2,1)
━━ F(5,2)
━━ F(10,10)
━━ F(20,20)
図1: F 分布の確率密度関数(自由度別)

自由度が小さいときは原点付近で非常に大きな値をとり、右に強く歪んだ形状になる。両方の自由度が大きくなるにつれて、x = 1 付近にピークをもつ対称に近い形状になる。

期待値と分散

X \sim F(n_1, n_2) の期待値と分散は、第 2 自由度 n_2 によって存在条件が異なる。

期待値と分散
\begin{aligned} E[X] &= \dfrac{n_2}{n_2 - 2} \quad (n_2 > 2) \\[8pt] V[X] &= \dfrac{2n_2^2(n_1 + n_2 - 2)}{n_1(n_2 - 2)^2(n_2 - 4)} \quad (n_2 > 4) \end{aligned}
注意
  • n_2 \leq 2 のとき、期待値は存在しない
  • n_2 \leq 4 のとき、分散は存在しない

期待値 E[X] = \dfrac{n_2}{n_2-2} は第 1 自由度 n_1 に依存せず、n_2 \to \infty で 1 に収束する。

性質

逆数の性質

F 分布には重要な逆数の性質がある。

逆数の性質

X \sim F(n_1, n_2) のとき

\dfrac{1}{X} \sim F(n_2, n_1)

この性質から、F 分布の下側パーセント点は上側パーセント点から計算できる。

F_{\alpha}(n_1, n_2) = \dfrac{1}{F_{1-\alpha}(n_2, n_1)}

ここで F_{\alpha}(n_1, n_2)F(n_1, n_2) の下側 \alpha 点である。

t 分布との関係

t 分布と F 分布には次の関係がある。

t 分布との関係

T \sim t(n) のとき

T^2 \sim F(1, n)

この関係から、t 検定と F 検定(自由度 (1, n))は本質的に同じ検定であることがわかる。

標本分散比との関係

F 分布が統計的推測で重要な理由は、2 つの正規母集団からの標本分散の比が F 分布に従うことにある。

X_1, \ldots, X_{n_1}N(\mu_1, \sigma_1^2) からの無作為標本、Y_1, \ldots, Y_{n_2}N(\mu_2, \sigma_2^2) からの無作為標本で、これらがすべて独立とする。それぞれの不偏分散

s_1^2 = \dfrac{1}{n_1-1}\sum_{i=1}^{n_1}(X_i - \bar{X})^2, \quad s_2^2 = \dfrac{1}{n_2-1}\sum_{j=1}^{n_2}(Y_j - \bar{Y})^2

とすると、次が成り立つ。

標本分散比の分布
\dfrac{s_1^2 / \sigma_1^2}{s_2^2 / \sigma_2^2} \sim F(n_1 - 1, n_2 - 1)

特に \sigma_1^2 = \sigma_2^2(等分散)のとき、\dfrac{s_1^2}{s_2^2} \sim F(n_1 - 1, n_2 - 1) となる。この結果は、2 つの母分散の比の検定(等分散性の検定、F 検定)に用いられる。

非心 F 分布

F 分布の定義において、分子のカイ二乗分布を非心カイ二乗分布に置き換えると、非心 F 分布が得られる。

Y_1 \sim \chi^2(n_1, \lambda)(自由度 n_1、非心度 \lambda の非心カイ二乗分布)、Y_2 \sim \chi^2(n_2) が独立のとき、

X = \dfrac{Y_1/n_1}{Y_2/n_2}

が従う分布を自由度 (n_1, n_2)、非心度 \lambda の非心 F 分布といい、F(n_1, n_2, \lambda) で表す。\lambda = 0 のとき、通常の F 分布 F(n_1, n_2) に一致する。

非心 F 分布は、分散分析や回帰分析における F 検定の検出力の計算に用いられる。また、T \sim t(n, \mu)(非心 t 分布)のとき T^2 \sim F(1, n, \mu^2) となる。

数表

F 分布の上側 5% 点 F_{0.05}(n_1, n_2)P(X > F_{0.05}) = 0.05 となる値)を示す。

n_2 第 1 自由度 n_1
12345678910
56.615.795.415.195.054.954.884.824.774.74
65.995.144.764.534.394.284.214.154.104.06
75.594.744.354.123.973.873.793.733.683.64
85.324.464.073.843.693.583.503.443.393.35
95.124.263.863.633.483.373.293.233.183.14
104.964.103.713.483.333.223.143.073.022.98
124.753.893.493.263.113.002.912.852.802.75
154.543.683.293.062.902.792.712.642.592.54
204.353.493.102.872.712.602.512.452.392.35
304.173.322.922.692.532.422.332.272.212.16
604.003.152.762.532.372.252.172.102.041.99
1203.923.072.682.452.292.182.092.021.961.91

例えば、F_{0.05}(5, 10) = 3.33 である。下側パーセント点は逆数の性質 F_{\alpha}(n_1, n_2) = \dfrac{1}{F_{1-\alpha}(n_2, n_1)} から計算できる。

計算例

自由度 (5, 10) の F 分布について計算する。

【期待値と分散】

\begin{aligned} E[X] &= \dfrac{n_2}{n_2 - 2} = \dfrac{10}{10 - 2} = \dfrac{10}{8} = 1.25 \\[8pt] V[X] &= \dfrac{2 \times 10^2 \times (5 + 10 - 2)}{5 \times (10-2)^2 \times (10-4)} = \dfrac{2 \times 100 \times 13}{5 \times 64 \times 6} \approx 1.35 \end{aligned}

【上側パーセント点】 F(5, 10) の上側パーセント点は数表または統計ソフトから

\begin{aligned} F_{0.10}(5, 10) &= 2.522 \\ F_{0.05}(5, 10) &= 3.326 \\ F_{0.025}(5, 10) &= 4.236 \\ F_{0.01}(5, 10) &= 5.636 \end{aligned}

【確率の計算】 X \sim F(5, 10) のとき、P(X \leq 2) を求める。

P(X \leq 2) \approx 0.836

練習問題

問1. X \sim F(3, 12) のとき、期待値 E[X] を求めよ。
E[X] = \dfrac{n_2}{n_2 - 2} = \dfrac{12}{12 - 2} = \dfrac{12}{10} = 1.2
問2. F(10, 20) の上側 5% 点 F_{0.05}(10, 20) を求めよ(数表参照可)。
F_{0.05}(10, 20) = 2.348
問3. 正規分布 N(\mu_1, \sigma^2) から大きさ 6 の標本、N(\mu_2, \sigma^2) から大きさ 11 の標本を独立に抽出する。各標本の不偏分散を s_1^2s_2^2 とするとき、\dfrac{s_1^2}{s_2^2} が従う分布を答えよ。

両母集団の分散が等しいので

\dfrac{s_1^2}{s_2^2} = \dfrac{s_1^2/\sigma^2}{s_2^2/\sigma^2} \sim F(6-1, 11-1) = F(5, 10)

自由度 (5, 10) の F 分布に従う。

まとめ

項目 内容
分布名 F 分布(F-distribution)
記号 F(n_1, n_2)
パラメータ n_1(第 1 自由度)、n_2(第 2 自由度)
定義域 x > 0
確率密度関数 f(x) = \dfrac{1}{B\left(\frac{n_1}{2}, \frac{n_2}{2}\right)} \left(\dfrac{n_1}{n_2}\right)^{\frac{n_1}{2}} \dfrac{x^{\frac{n_1}{2}-1}}{\left(1 + \frac{n_1}{n_2}x\right)^{\frac{n_1+n_2}{2}}}
期待値 E[X] = \dfrac{n_2}{n_2 - 2}n_2 > 2
分散 V[X] = \dfrac{2n_2^2(n_1+n_2-2)}{n_1(n_2-2)^2(n_2-4)}n_2 > 4
逆数の性質 X \sim F(n_1, n_2) \Rightarrow 1/X \sim F(n_2, n_1)
t 分布との関係 T^2 \sim F(1, n)T \sim t(n) のとき)
標本分散比 \dfrac{s_1^2/\sigma_1^2}{s_2^2/\sigma_2^2} \sim F(n_1-1, n_2-1)
応用 分散比の検定(F 検定)、分散分析、回帰分析

Pythonで実装する

Pythonを使って F 分布の計算やシミュレーションを行う。

f_distribution.py
import numpy as np
from scipy import stats

print("=== F 分布 ===")

# 自由度 (n1, n2) = (5, 10)
n1, n2 = 5, 10
f_dist = stats.f(n1, n2)

print(f"\n【F({n1},{n2})の基本統計量】")
print(f"期待値: {f_dist.mean():.4f} (理論値: {n2/(n2-2):.4f})")
theory_var = 2 * n2**2 * (n1 + n2 - 2) / (n1 * (n2-2)**2 * (n2-4))
print(f"分散: {f_dist.var():.4f} (理論値: {theory_var:.4f})")

# 上側パーセント点
print(f"\n上側パーセント点:")
for alpha in [0.10, 0.05, 0.025, 0.01]:
    q = f_dist.ppf(1 - alpha)
    print(f"  F_{{{alpha}}}({n1},{n2}) = {q:.3f}")

# 確率の計算
print(f"\n確率の計算:")
print(f"P(X ≤ 2) = {f_dist.cdf(2):.4f}")

# 逆数の性質
print(f"\n【逆数の性質】")
f_upper = f_dist.ppf(0.95)
f_lower = 1 / stats.f(n2, n1).ppf(0.95)
print(f"F_{{0.05}}({n1},{n2}) = {f_upper:.3f}")
print(f"F_{{0.95}}({n1},{n2}) = {f_dist.ppf(0.05):.3f}")
print(f"1/F_{{0.05}}({n2},{n1}) = {f_lower:.3f}")

# t分布との関係
print(f"\n【t分布との関係】")
n = 10
t_val = stats.t(n).ppf(0.975)
f_val = stats.f(1, n).ppf(0.95)
print(f"t_{{0.025}}({n})² = {t_val**2:.4f}")
print(f"F_{{0.05}}(1,{n}) = {f_val:.4f}")

# 標本分散比のシミュレーション
print(f"\n【標本分散比のシミュレーション】")
sigma1, sigma2 = 10, 10  # 等分散
n1_samp, n2_samp = 6, 11
n_sim = 10000

f_stats = []
for _ in range(n_sim):
    sample1 = np.random.normal(0, sigma1, n1_samp)
    sample2 = np.random.normal(0, sigma2, n2_samp)
    s1_sq = np.var(sample1, ddof=1)
    s2_sq = np.var(sample2, ddof=1)
    f_stat = s1_sq / s2_sq
    f_stats.append(f_stat)

f_stats = np.array(f_stats)
df1, df2 = n1_samp - 1, n2_samp - 1
print(f"s1²/s2² の標本平均: {np.mean(f_stats):.4f} (理論値: {df2/(df2-2):.4f})")

# 非心F分布
print(f"\n【非心F分布】")
n1_nc, n2_nc, nc = 5, 10, 3
nc_f = stats.ncf(n1_nc, n2_nc, nc)
print(f"非心F({n1_nc},{n2_nc},λ={nc}):")
print(f"  期待値: {nc_f.mean():.4f}")
print(f"  分散: {nc_f.var():.4f}")
=== F 分布 === 【F(5,10)の基本統計量】 期待値: 1.2500 (理論値: 1.2500) 分散: 1.3542 (理論値: 1.3542) 上側パーセント点: F_{0.1}(5,10) = 2.522 F_{0.05}(5,10) = 3.326 F_{0.025}(5,10) = 4.236 F_{0.01}(5,10) = 5.636 確率の計算: P(X ≤ 2) = 0.8358 【逆数の性質】 F_{0.05}(5,10) = 3.326 F_{0.95}(5,10) = 0.211 1/F_{0.05}(10,5) = 0.211 【t分布との関係】 t_{0.025}(10)² = 4.9646 F_{0.05}(1,10) = 4.9646 【標本分散比のシミュレーション】 s1²/s2² の標本平均: 1.2496 (理論値: 1.2500) 【非心F分布】 非心F(5,10,λ=3): 期待値: 2.0000 分散: 3.1667

scipy.stats.f で F 分布を扱える。シミュレーションでは、等分散の正規母集団から標本を抽出し、標本分散の比が F(5, 10) に従うことを確認している。非心 F 分布は scipy.stats.ncf を使用する。