ヘロログ
統計学

正規分布

正規分布(normal distribution)は、統計学において最も重要な連続型確率分布である。ガウス分布(Gaussian distribution)とも呼ばれ、その特徴的な釣鐘型の形状から「ベルカーブ」とも呼ばれる。

正規分布が重要である理由は主に二つある。一つは、自然界や社会の多くの現象が正規分布に従うことである。身長、体重、テストの得点、測定誤差、株価の対数収益率など、多くのデータが正規分布で近似できる。

もう一つは、中心極限定理の存在である。中心極限定理により、独立同一分布に従う確率変数の和(または平均)は、元の分布の形状によらず、サンプルサイズが大きくなると正規分布に近づく。この性質により、推定や検定の理論において正規分布は中心的な役割を果たす。

定義

実数 \mu と正の実数 \sigma > 0 に対して、確率変数 X が以下の確率密度関数をもつとき、X は平均 \mu、分散 \sigma^2正規分布に従うという。この分布を N(\mu, \sigma^2) と表記する。

正規分布の確率密度関数
f(x) = \dfrac{1}{\sqrt{2\pi}\sigma} \exp\left( -\dfrac{(x - \mu)^2}{2\sigma^2} \right), \quad -\infty < x < \infty

ここで \mu は分布の中心(平均)を表し、\sigma は分布の広がり(標準偏差)を表す。確率密度関数は x = \mu で最大値をとり、\mu から離れるにつれて急速に減少する。

確率密度関数のグラフ

正規分布の確率密度関数は、平均 \mu を中心とした左右対称な釣鐘型の曲線である。以下は異なる標準偏差をもつ正規分布の比較である。いずれも平均 \mu = 10 で共通している。

f(x) 0.08 0.06 0.04 0.02 0 x -30 -20 -10 0 10 20 30 40 50 σ = 5 σ = 10 σ = 15 μ = 10
図1: 異なる標準偏差をもつ正規分布(平均μ=10は共通)

標準偏差 \sigma が小さいほど分布は尖った形状になり、\sigma が大きいほど平らで広がった形状になる。いずれの場合も、曲線の下の面積(積分値)は1に等しい。

標準正規分布

平均 \mu = 0、分散 \sigma^2 = 1 の正規分布 N(0, 1)標準正規分布(standard normal distribution)という。

標準正規分布の確率密度関数と累積分布関数には、それぞれ特別な記号が用いられる。

標準正規分布の確率密度関数と累積分布関数
\begin{aligned} \varphi(z) &= \dfrac{1}{\sqrt{2\pi}} e^{-\frac{z^2}{2}} \\[8pt] \Phi(z) &= P(Z \leq z) = \int_{-\infty}^{z} \varphi(t) \, dt \end{aligned}

標準正規分布の確率は正規分布表を用いて求めることができる。代表的な値として以下がある。

  • \Phi(0) = 0.5
  • \Phi(1) \approx 0.8413
  • \Phi(1.96) \approx 0.975
  • \Phi(2) \approx 0.9772

標準化

任意の正規分布 N(\mu, \sigma^2) に従う確率変数 X は、以下の変換により標準正規分布に従う確率変数 Z に変換できる。この操作を標準化という。

標準化
Z = \dfrac{X - \mu}{\sigma} \sim N(0, 1)

標準化を用いると、任意の正規分布の確率を標準正規分布の累積分布関数 \Phi で表すことができる。

P(X \leq x) = P\left( \dfrac{X - \mu}{\sigma} \leq \dfrac{x - \mu}{\sigma} \right) = \Phi\left( \dfrac{x - \mu}{\sigma} \right)
ポイント

正規分布の確率計算は、標準化によって標準正規分布に帰着させる。X \sim N(\mu, \sigma^2) のとき

P(a \leq X \leq b) = \Phi\left( \dfrac{b - \mu}{\sigma} \right) - \Phi\left( \dfrac{a - \mu}{\sigma} \right)

期待値と分散

正規分布 N(\mu, \sigma^2) のパラメータ \mu\sigma^2 は、それぞれ期待値と分散に一致する。

期待値と分散
E[X] = \mu, \quad V[X] = \sigma^2

【期待値の導出】 標準正規分布の期待値が0であることを示す。\varphi(z) は偶関数、z は奇関数なので、被積分関数 z \cdot \varphi(z) は奇関数となる。

E[Z] = \int_{-\infty}^{\infty} z \cdot \varphi(z) \, dz = 0

一般の X \sim N(\mu, \sigma^2) については、X = \mu + \sigma Z と表せるので、E[X] = \mu + \sigma E[Z] = \mu となる。

【分散の導出】 標準正規分布の分散を計算する。部分積分を用いて

\begin{aligned} E[Z^2] &= \int_{-\infty}^{\infty} z^2 \cdot \dfrac{1}{\sqrt{2\pi}} e^{-\frac{z^2}{2}} \, dz \\[5pt] &= \left[ -z \cdot \dfrac{1}{\sqrt{2\pi}} e^{-\frac{z^2}{2}} \right]_{-\infty}^{\infty} + \int_{-\infty}^{\infty} \dfrac{1}{\sqrt{2\pi}} e^{-\frac{z^2}{2}} \, dz = 0 + 1 = 1 \end{aligned}

よって V[Z] = E[Z^2] - (E[Z])^2 = 1 - 0 = 1 となる。一般の X = \mu + \sigma Z については、V[X] = \sigma^2 V[Z] = \sigma^2 となる。

モーメント母関数

正規分布 N(\mu, \sigma^2) のモーメント母関数は次の形をとる。

モーメント母関数
M(t) = E[e^{tX}] = \exp\left( \mu t + \dfrac{\sigma^2 t^2}{2} \right), \quad -\infty < t < \infty

この式は、正規分布の再生性を示す際に重要な役割を果たす。

再生性

正規分布には再生性(reproductive property)がある。独立な正規分布に従う確率変数の和は、再び正規分布に従う。

正規分布の再生性

X_1 \sim N(\mu_1, \sigma_1^2)X_2 \sim N(\mu_2, \sigma_2^2) が独立のとき

X_1 + X_2 \sim N(\mu_1 + \mu_2, \sigma_1^2 + \sigma_2^2)

【証明】 モーメント母関数を用いて示す。X_1X_2 が独立なので

\begin{aligned} M_{X_1+X_2}(t) &= E[e^{t(X_1+X_2)}] = E[e^{tX_1}] E[e^{tX_2}] \\[5pt] &= \exp\left( \mu_1 t + \dfrac{\sigma_1^2 t^2}{2} \right) \exp\left( \mu_2 t + \dfrac{\sigma_2^2 t^2}{2} \right) \\[5pt] &= \exp\left( (\mu_1 + \mu_2) t + \dfrac{(\sigma_1^2 + \sigma_2^2) t^2}{2} \right) \end{aligned}

これは N(\mu_1 + \mu_2, \sigma_1^2 + \sigma_2^2) のモーメント母関数と一致する。

68-95-99.7ルール

正規分布では、平均からの距離を標準偏差の倍数で測ったとき、以下の確率が成り立つ。これを68-95-99.7ルール(または経験則)という。

  • P(\mu - \sigma \leq X \leq \mu + \sigma) \approx 0.6827(約68%)
  • P(\mu - 2\sigma \leq X \leq \mu + 2\sigma) \approx 0.9545(約95%)
  • P(\mu - 3\sigma \leq X \leq \mu + 3\sigma) \approx 0.9973(約99.7%)
-3σ -2σ μ +2σ +3σ 68.27% 95.45% 99.73%
図2: 68-95-99.7ルール(標準正規分布 N(0,1))

簡単な計算例

例1:テストの得点

ある試験の得点 XN(65, 10^2) に従うとする(平均65点、標準偏差10点)。

(1)70点以上をとる確率を求める。

\begin{aligned} P(X \geq 70) &= 1 - P(X < 70) = 1 - \Phi\left( \dfrac{70 - 65}{10} \right) \\[5pt] &= 1 - \Phi(0.5) = 1 - 0.6915 = 0.3085 \end{aligned}

約31%の受験者が70点以上をとる。

(2)50点以上80点以下の確率を求める。

\begin{aligned} P(50 \leq X \leq 80) &= \Phi\left( \dfrac{80 - 65}{10} \right) - \Phi\left( \dfrac{50 - 65}{10} \right) \\[5pt] &= \Phi(1.5) - \Phi(-1.5) \\[5pt] &= 0.9332 - 0.0668 = 0.8664 \end{aligned}

約87%の受験者が50点から80点の間に入る。

例2:偏差値の計算

偏差値は、平均50、標準偏差10に標準化した得点である。得点 x の偏差値は

\text{偏差値} = 50 + 10 \times \dfrac{x - \mu}{\sigma}

例1の試験(\mu = 65, \sigma = 10)で85点をとった場合

\text{偏差値} = 50 + 10 \times \dfrac{85 - 65}{10} = 50 + 20 = 70

練習問題

問1. ある集団の成人男性の身長 XN(170, 6^2) に従うとする。身長が176cm以上である確率を求めよ。

標準化して計算する。

\begin{aligned} P(X \geq 176) &= 1 - \Phi\left( \dfrac{176 - 170}{6} \right) = 1 - \Phi(1) \\[5pt] &= 1 - 0.8413 = 0.1587 \end{aligned}

約15.9%の人が176cm以上である。

問2. 問1と同じ設定で、身長が164cm以上176cm以下である確率を求めよ。
\begin{aligned} P(164 \leq X \leq 176) &= \Phi\left( \dfrac{176 - 170}{6} \right) - \Phi\left( \dfrac{164 - 170}{6} \right) \\[5pt] &= \Phi(1) - \Phi(-1) \\[5pt] &= 0.8413 - 0.1587 = 0.6827 \end{aligned}

164cmから176cmは平均±1σの範囲であり、68-95-99.7ルールの通り約68%である。

問3. X_1 \sim N(30, 4^2)X_2 \sim N(20, 3^2) が独立のとき、X_1 + X_2 の分布を求めよ。

正規分布の再生性より

\begin{aligned} X_1 + X_2 &\sim N(30 + 20, 4^2 + 3^2) \\[5pt] &= N(50, 25) = N(50, 5^2) \end{aligned}

期待値は50、標準偏差は5の正規分布に従う。

まとめ

項目 内容
分布名 正規分布(normal distribution)、ガウス分布
表記 N(\mu, \sigma^2)
確率密度関数 f(x) = \dfrac{1}{\sqrt{2\pi}\sigma} \exp\left( -\dfrac{(x-\mu)^2}{2\sigma^2} \right)
期待値 E[X] = \mu
分散 V[X] = \sigma^2
モーメント母関数 M(t) = \exp\left( \mu t + \dfrac{\sigma^2 t^2}{2} \right)
再生性 X_1 + X_2 \sim N(\mu_1 + \mu_2, \sigma_1^2 + \sigma_2^2)
応用例 身長・体重、テスト得点、測定誤差、推定・検定

Pythonで実装する

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

normal_distribution.py
import numpy as np
from scipy import stats

# パラメータ設定
mu, sigma = 65, 10  # N(65, 10²)

print("=== 正規分布 N(65, 10²) ===")
dist = stats.norm(loc=mu, scale=sigma)
print(f"期待値: E[X] = {dist.mean()}")
print(f"分散  : V[X] = {dist.var()}")
print(f"標準偏差: σ = {dist.std()}")

# 確率密度関数
print(f"\n確率密度関数:")
print(f"  f(65) = {dist.pdf(65):.6f}")
print(f"  f(75) = {dist.pdf(75):.6f}")

# 累積分布関数(確率計算)
print(f"\n確率計算:")
print(f"  P(X ≤ 70) = {dist.cdf(70):.4f}")
print(f"  P(X ≥ 70) = {1 - dist.cdf(70):.4f}")
print(f"  P(50 ≤ X ≤ 80) = {dist.cdf(80) - dist.cdf(50):.4f}")

# 標準正規分布
print(f"\n=== 標準正規分布 N(0, 1) ===")
std_norm = stats.norm(0, 1)
print(f"  Φ(1.96) = {std_norm.cdf(1.96):.4f}")
print(f"  P(-1.96 ≤ Z ≤ 1.96) = {std_norm.cdf(1.96) - std_norm.cdf(-1.96):.4f}")

# 68-95-99.7ルール
print(f"\n68-95-99.7ルール:")
print(f"  P(μ-σ ≤ X ≤ μ+σ)   = {std_norm.cdf(1) - std_norm.cdf(-1):.4f}")
print(f"  P(μ-2σ ≤ X ≤ μ+2σ) = {std_norm.cdf(2) - std_norm.cdf(-2):.4f}")
print(f"  P(μ-3σ ≤ X ≤ μ+3σ) = {std_norm.cdf(3) - std_norm.cdf(-3):.4f}")

# シミュレーション
np.random.seed(42)
n_samples = 10000
samples = np.random.normal(mu, sigma, size=n_samples)

print(f"\nシミュレーション(n={n_samples}):")
print(f"標本平均: {np.mean(samples):.4f}")
print(f"標本標準偏差: {np.std(samples, ddof=0):.4f}")
=== 正規分布 N(65, 10²) === 期待値: E[X] = 65.0 分散 : V[X] = 100.0 標準偏差: σ = 10.0 確率密度関数: f(65) = 0.039894 f(75) = 0.024197 確率計算: P(X ≤ 70) = 0.6915 P(X ≥ 70) = 0.3085 P(50 ≤ X ≤ 80) = 0.8664 === 標準正規分布 N(0, 1) === Φ(1.96) = 0.9750 P(-1.96 ≤ Z ≤ 1.96) = 0.9500 68-95-99.7ルール: P(μ-σ ≤ X ≤ μ+σ) = 0.6827 P(μ-2σ ≤ X ≤ μ+2σ) = 0.9545 P(μ-3σ ≤ X ≤ μ+3σ) = 0.9973 シミュレーション(n=10000): 標本平均: 64.9786 標本標準偏差: 10.0341

シミュレーション結果が理論値に近い値を示している。正規分布は scipy.stats.norm で簡単に扱うことができる。