ヘロログ
統計学

t分布

t 分布(t-distribution)は、母分散が未知のときの母平均の推定・検定において中心的な役割を果たす分布である。正規分布と似た釣鐘型の形状をもつが、裾が重い(tail が厚い)という特徴がある。

t 分布はウィリアム・ゴセット(William Gosset)がギネスビール醸造所での品質管理研究で発見し、「Student」というペンネームで発表したことから、スチューデントの t 分布とも呼ばれる。小標本の統計的推測において不可欠な分布であり、t 検定、回帰係数の検定、信頼区間の構成など、統計学の幅広い分野で用いられる。

定義

Z \sim N(0, 1)(標準正規分布)、Y \sim \chi^2(n)(自由度 nカイ二乗分布)とし、ZY が互いに独立のとき、

T = \dfrac{Z}{\sqrt{Y/n}}

が従う分布を自由度 n の t 分布といい、t(n) で表す。

t 分布の確率密度関数
f(t) = \dfrac{\Gamma\left(\dfrac{n+1}{2}\right)}{\sqrt{\pi n}\, \Gamma\left(\dfrac{n}{2}\right)} \left(1 + \dfrac{t^2}{n}\right)^{-\frac{n+1}{2}}, \quad -\infty < t < \infty

ここで \Gamma(\cdot) はガンマ関数である。係数部分はベータ関数を用いて \dfrac{1}{\sqrt{n}B\left(\dfrac{n}{2}, \dfrac{1}{2}\right)} とも表せる。

ポイント

t 分布は原点に関して対称であり、自由度 n が大きくなるにつれて標準正規分布 N(0, 1) に近づく。

グラフ

自由度 n を変えたときの t 分布の確率密度関数を、標準正規分布と比較して示す。

f(t) 0.40 0.35 0.25 0.15 0.05 0 t -5 -4 -3 -2 -1 0 1 2 3 4 5
━━ t(1)
━━ t(2)
━━ t(5)
━━ t(30)
┅┅ N(0,1)
図1: t 分布の確率密度関数(自由度別)と標準正規分布の比較

自由度が小さいとき(n = 1, 2)は中央が低く裾が重い形状になる。自由度 1 の t 分布はコーシー分布と一致する。自由度が大きくなるにつれて標準正規分布に近づき、n = 30 ではほぼ正規分布と重なっている。

期待値と分散

T \sim t(n) の期待値と分散は、自由度によって存在条件が異なる。

期待値と分散
\begin{aligned} E[T] &= 0 \quad (n > 1) \\[5pt] V[T] &= \dfrac{n}{n - 2} \quad (n > 2) \end{aligned}
注意
  • n = 1 のとき、期待値は存在しない(コーシー分布)
  • n = 1, 2 のとき、分散は存在しない

分散 V[T] = \dfrac{n}{n-2}n > 2 で常に 1 より大きく、n \to \infty で 1 に収束する。これは t 分布が正規分布より裾が重いことを反映している。

例えば、n = 5 のとき V[T] = \dfrac{5}{3} \approx 1.67n = 30 のとき V[T] = \dfrac{30}{28} \approx 1.07 となる。

特殊な場合

t 分布は自由度によって特殊な分布と関係する。

自由度と極限
\begin{aligned} &n = 1 \quad \Rightarrow \quad t(1) = \text{コーシー分布} \\[5pt] &n \to \infty \quad \Rightarrow \quad t(n) \to N(0, 1) \end{aligned}

実用上、n \geq 30 では t 分布を標準正規分布で近似することが多い。パーセント点で比較すると、上側 5% 点は t(5) で 2.015、t(30) で 1.697、N(0,1) で 1.645 である。

t 統計量と標本平均

t 分布が統計的推測で重要な理由は、母分散が未知のときの標本平均の標準化が t 分布に従うことにある。

X_1, X_2, \ldots, X_n が正規分布 N(\mu, \sigma^2) からの無作為標本とする。標本平均を \bar{X}、不偏分散を s^2 = \dfrac{1}{n-1}\sum_{i=1}^{n}(X_i - \bar{X})^2 とするとき、

t 統計量
t = \dfrac{\bar{X} - \mu}{\dfrac{s}{\sqrt{n}}} = \dfrac{\sqrt{n}(\bar{X} - \mu)}{s} \sim t(n-1)

この結果は、母平均 \mu の信頼区間の構成や、\mu = \mu_0仮説検定(t 検定)に用いられる。母分散 \sigma^2 が既知の場合は標準正規分布を用いるが、未知の場合は不偏分散 s^2 で代用するため、t 分布が必要になる。

非心 t 分布

t 分布の定義において、分子の標準正規分布を平均が 0 でない正規分布に置き換えると、非心 t 分布が得られる。

Z \sim N(\lambda, 1)Y \sim \chi^2(n) が独立のとき、

T = \dfrac{Z}{\sqrt{Y/n}}

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

非心 t 分布は、t 検定の検出力(帰無仮説が偽のときに正しく棄却する確率)の計算に用いられる。具体的には、\mu \neq 0 のとき、t 統計量 \dfrac{\sqrt{n}\bar{X}}{s} は自由度 n-1、非心度 \dfrac{\sqrt{n}\mu}{\sigma} の非心 t 分布に従う。

数表

t 分布の上側パーセント点 t_\alpha(n)P(T > t_\alpha) = \alpha となる値)を示す。

n 上側確率 \alpha
0.100.050.0250.010.005
13.0786.31412.70631.82163.657
21.8862.9204.3036.9659.925
31.6382.3533.1824.5415.841
41.5332.1322.7763.7474.604
51.4762.0152.5713.3654.032
61.4401.9432.4473.1433.707
71.4151.8952.3652.9983.499
81.3971.8602.3062.8963.355
91.3831.8332.2622.8213.250
101.3721.8122.2282.7643.169
111.3631.7962.2012.7183.106
121.3561.7822.1792.6813.055
131.3501.7712.1602.6503.012
141.3451.7612.1452.6242.977
151.3411.7532.1312.6022.947
161.3371.7462.1202.5832.921
171.3331.7402.1102.5672.898
181.3301.7342.1012.5522.878
191.3281.7292.0932.5392.861
201.3251.7252.0862.5282.845
211.3231.7212.0802.5182.831
221.3211.7172.0742.5082.819
231.3191.7142.0692.5002.807
241.3181.7112.0642.4922.797
251.3161.7082.0602.4852.787
261.3151.7062.0562.4792.779
271.3141.7032.0522.4732.771
281.3131.7012.0482.4672.763
291.3111.6992.0452.4622.756
301.3101.6972.0422.4572.750
401.3031.6842.0212.4232.704
601.2961.6712.0002.3902.660
1201.2891.6581.9802.3582.617
\infty1.2821.6451.9602.3262.576

例えば、自由度 10 で上側 5% 点は t_{0.05}(10) = 1.812 である。両側 5% 点(上側 2.5%)は t_{0.025}(10) = 2.228 である。n = \infty の行は標準正規分布のパーセント点である。

計算例

自由度 10 の t 分布について計算する。

【期待値と分散】

E[T] = 0, \qquad V[T] = \dfrac{10}{10 - 2} = \dfrac{10}{8} = 1.25

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

\begin{aligned} t_{0.10}(10) &= 1.372 \quad (\text{上側 10\%}) \\ t_{0.05}(10) &= 1.812 \quad (\text{上側 5\%}) \\ t_{0.025}(10) &= 2.228 \quad (\text{上側 2.5\%}) \\ t_{0.01}(10) &= 2.764 \quad (\text{上側 1\%}) \end{aligned}

【確率の計算】 T \sim t(10) のとき、P(|T| > 2) を求める。対称性より

P(|T| > 2) = 2 \times P(T > 2) \approx 2 \times 0.0367 \approx 0.073

練習問題

問1. T \sim t(5) のとき、分散 V[T] を求めよ。
V[T] = \dfrac{n}{n-2} = \dfrac{5}{5-2} = \dfrac{5}{3} \approx 1.67
問2. t(20) の両側 5% 点(P(|T| > t_{\alpha}) = 0.05 となる t_{\alpha})を求めよ。

両側 5% なので、片側では上側 2.5% 点を求める。

t_{0.025}(20) = 2.086

対称性より、両側 5% 点は \pm 2.086 である。

問3. 正規分布 N(\mu, \sigma^2) から大きさ 25 の無作為標本を抽出した。標本平均が \bar{X}、不偏標準偏差が s のとき、\dfrac{\bar{X} - \mu}{s/\sqrt{25}} が従う分布を答えよ。

n = 25 なので

\dfrac{\bar{X} - \mu}{s/\sqrt{25}} = \dfrac{\bar{X} - \mu}{s/5} \sim t(24)

自由度 24 の t 分布に従う。

まとめ

項目 内容
分布名 t 分布(Student's t-distribution)
記号 t(n)
パラメータ n(自由度、正の整数)
定義域 -\infty < t < \infty
確率密度関数 f(t) = \dfrac{\Gamma\left(\frac{n+1}{2}\right)}{\sqrt{\pi n}\,\Gamma\left(\frac{n}{2}\right)} \left(1 + \dfrac{t^2}{n}\right)^{-\frac{n+1}{2}}
期待値 E[T] = 0n > 1
分散 V[T] = \dfrac{n}{n-2}n > 2
特殊な場合 t(1) = コーシー分布、t(\infty) = N(0,1)
t 統計量 \dfrac{\bar{X} - \mu}{s/\sqrt{n}} \sim t(n-1)
応用 母平均の区間推定・検定(t 検定)、回帰係数の検定

Pythonで実装する

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

t_distribution.py
import numpy as np
from scipy import stats

print("=== t 分布 ===")

# 自由度 n = 10
n = 10
t_dist = stats.t(n)

print(f"\n【t({n})の基本統計量】")
print(f"期待値: {t_dist.mean():.1f} (理論値: 0)")
print(f"分散: {t_dist.var():.4f} (理論値: {n/(n-2):.4f})")

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

# 確率の計算
print(f"\n確率の計算:")
print(f"P(T ≤ 1.5) = {t_dist.cdf(1.5):.4f}")
print(f"P(|T| > 2) = {2 * (1 - t_dist.cdf(2)):.4f}")

# 正規分布との比較
print("\n【正規分布への収束】")
z_005 = stats.norm.ppf(0.95)
print(f"N(0,1)の上側5%点: {z_005:.3f}")
for df in [5, 10, 30, 100]:
    t_005 = stats.t(df).ppf(0.95)
    print(f"t({df})の上側5%点: {t_005:.3f}")

# t 統計量のシミュレーション
print("\n【t 統計量のシミュレーション】")
mu, sigma = 50, 10
sample_size = 16
n_sim = 10000

t_stats = []
for _ in range(n_sim):
    sample = np.random.normal(mu, sigma, sample_size)
    x_bar = np.mean(sample)
    s = np.std(sample, ddof=1)
    t_stat = (x_bar - mu) / (s / np.sqrt(sample_size))
    t_stats.append(t_stat)

t_stats = np.array(t_stats)
print(f"t統計量の標本平均: {np.mean(t_stats):.4f} (理論値: 0)")
print(f"t統計量の標本分散: {np.var(t_stats):.4f} (理論値: {(sample_size-1)/(sample_size-3):.4f})")

# 非心 t 分布
print("\n【非心 t 分布】")
n_nc, lambda_nc = 10, 2
nc_t = stats.nct(n_nc, lambda_nc)
print(f"非心t(n={n_nc}, λ={lambda_nc}):")
print(f"  期待値: {nc_t.mean():.4f}")
print(f"  分散: {nc_t.var():.4f}")
=== t 分布 === 【t(10)の基本統計量】 期待値: 0.0 (理論値: 0) 分散: 1.2500 (理論値: 1.2500) 上側パーセント点: t_{0.1}(10) = 1.372 t_{0.05}(10) = 1.812 t_{0.025}(10) = 2.228 t_{0.01}(10) = 2.764 確率の計算: P(T ≤ 1.5) = 0.9177 P(|T| > 2) = 0.0734 【正規分布への収束】 N(0,1)の上側5%点: 1.645 t(5)の上側5%点: 2.015 t(10)の上側5%点: 1.812 t(30)の上側5%点: 1.697 t(100)の上側5%点: 1.660 【t 統計量のシミュレーション】 t統計量の標本平均: 0.0053 (理論値: 0) t統計量の標本分散: 1.1555 (理論値: 1.1538) 【非心 t 分布】 非心t(n=10, λ=2): 期待値: 2.1674 分散: 1.5522

scipy.stats.t で t 分布を扱える。シミュレーションでは、正規母集団から標本を抽出し、t 統計量を計算している。自由度 n-1 = 15 のとき、t 統計量の理論的な分散は \dfrac{15}{13} \approx 1.154 であり、シミュレーション結果と一致している。非心 t 分布は scipy.stats.nct を使用する。