健康診断で「あなたの身長は上位15%です」と言われたとき、その背後では正規分布が静かに働いています。テストの偏差値、工場の製品ばらつき、観測機器のノイズ——身の回りの「ばらつくもの」の多くが、平均のまわりに左右対称な釣鐘型の山を描きます。この山こそが正規分布(ガウス分布)です。
正規分布は、統計学と機械学習の分野で最も登場頻度の高い確率分布です。その理由は単に「現実によく合う」だけではありません。たくさんの小さなランダム要因が足し合わさると、元がどんな分布であっても結果は正規分布に近づく——という中心極限定理が背後にあるからです。だからこそ、測定誤差・株価変動・遺伝的形質など、原因が多数重なる現象は自然と正規分布に従います。
この分布を理解すると、応用の扉が一気に開きます。たとえば、最小二乗法による回帰(誤差が正規分布だと仮定すると最尤推定と一致する)、カルマンフィルタ(状態と観測を正規分布で表す)、ガウス過程回帰、変分オートエンコーダ(VAE)の潜在変数——いずれも正規分布が心臓部にあります。逆に言えば、正規分布を曖昧なままにしておくと、これらの手法の「なぜ動くのか」が永遠に霧の中に留まってしまうのです。
本記事の内容
- 正規分布がなぜここまで遍在するのか、その直感
- 確率密度関数の定義と、各項が何を意味するか
- 標準化と標準正規分布、68-95-99.7則
- 平均・分散がパラメータ通りになることの導出(省略なし)
- 中心極限定理・再生性・モーメント母関数といった深い性質
- 多変量正規分布への入口
- Pythonによる実装・可視化と、最尤推定・正規性検定の実践
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
正規分布がなぜここまで利用されているか
正規分布は、ご存知のように一つの山をもつ確率密度関数です。富士山のような、左右対称でなめらかな釣鐘型をしています。下の図は、平均 $\mu$ と標準偏差 $\sigma$ を変えたときに形がどう動くかを示したものです。

この図を見ると、正規分布の二つのパラメータの役割がはっきりします。平均 $\mu$ は山の「位置」を左右に動かし(青と緑は同じ幅で位置だけ違う)、標準偏差 $\sigma$ は山の「幅」を決めます(緑と赤は同じ位置で幅だけ違う)。$\sigma$ が大きいほど山は低く広くなり、小さいほど鋭く尖ります。たった二つの数字で、無数のデータの「中心」と「散らばり」を表現できるのが正規分布の最大の強みです。
では、なぜこの分布がこれほど広く使われるのでしょうか。理由は大きく三つあります。
第一に、経験則として現実のばらつきがよく正規分布で表せることです。現実世界の確率的な揺らぎや、工場における製品のばらつきは、わりと正規分布で表現できます。
第二に、単峰性(山が一つだけ)で扱いやすいことです。山が一つに集中しているので、「中心はどこか」「どのくらいばらついているか」を平均と分散だけで言い切れます。
第三に、そして最も本質的なのが、中心極限定理です。たくさんの独立な要因の和は、元の分布が何であれ正規分布に近づきます。身長は遺伝・栄養・環境など無数の要因の足し算なので、自然と正規分布になる——というわけです。この性質については後の章で詳しく扱います。
正規分布の重要性が見えてきたところで、次はその正体である確率密度関数の定義を、一つずつ意味を確かめながら見ていきましょう。
正規分布の確率密度関数の定義
定義式に入る前に、正規分布が「何をしたい関数なのか」を一文で予告しておきます。平均 $\mu$ から離れるほど急速に小さくなり、$\mu$ で最大、全体の面積がちょうど1になるような、左右対称の山を作りたい——これが正規分布です。
この要求を数式にしたのが、次の確率密度関数(PDF: Probability Density Function)です。
$$ \begin{equation} \mathcal{N}(x \mid \mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left\{ -\frac{(x-\mu)^2}{2\sigma^2} \right\} \end{equation} $$
一見ごつい式ですが、二つの部分に分けると意味がよく分かります。
まず核心は指数関数の中身 $-\dfrac{(x-\mu)^2}{2\sigma^2}$ です。$(x-\mu)^2$ は「平均からの距離の2乗」で、$x$ が $\mu$ から離れるほど大きくなります。これにマイナスを付けて $\exp$ に入れるので、平均から離れるほど値が急激に(指数関数的に)小さくなるわけです。割り算の $\sigma^2$ は「どのくらいの距離を『遠い』とみなすか」のものさしで、$\sigma$ が大きいほど離れても値が落ちにくくなり、山が広がります。
もう一つの前の係数 $\dfrac{1}{\sqrt{2\pi\sigma^2}}$ は規格化定数です。これは「曲線の下の面積をちょうど1にする」ためだけに存在します。確率密度関数は積分すると1(全事象の確率の合計は1)でなければならないので、指数関数部分を全区間で積分した値で割り戻しているのです。この $\sqrt{2\pi}$ がどこから来るかは、ガウス関数の記事で扱うガウス積分 $\int_{-\infty}^{\infty} e^{-x^2}\,dx = \sqrt{\pi}$ に由来します。
具体例で慣れておきましょう。日本人の平均身長を正規分布で表すとします。平均身長が171cm、その分散が $36\,(\text{cm}^2)$(標準偏差6cm)だとすると、各パラメータは $\mu = 171,\ \sigma^2 = 36$ となり、身長 $h$ の分布は次のように書けます。
$$ h \sim \mathcal{N}(171, 36) $$
記号 $\sim$ は「〜という分布に従う」という意味です。本来であれば日本人は1億人以上いるので、全員の身長を正確に示そうとすると1億点のデータが必要です。しかし正規分布を使えば、平均と分散というたった2つの数字で、膨大なデータの分布を近似できるのです。これがモデル化の威力です。
なお、この正規分布の裾野は $-\infty$ から $+\infty$ まで無限に広がっています。理屈の上では「身長がマイナス」や「身長が10m」の確率もわずかにゼロではありません。実際の身長がマイナスになることはありませんが、正規分布によるモデル化ではこうした「現実にはあり得ない裾」を許してしまいます。これはモデル化に伴う誤差であり、正規分布を使う以上は致し方ない前提として留意しておきましょう。冒頭で「正規分布は現実をよく模す」と述べましたが、モデル化したことでこうした非現実的な領域が生じるのは、確率モデル全般によくあることです。
ここまでで「任意の $\mu, \sigma$ の正規分布」を定義しました。しかし、$\mu$ と $\sigma$ の組み合わせは無限にあります。これらを一つの「基準」に揃えられたら便利です。それが次に扱う標準化です。
標準正規分布と標準化
身長171cmの人と、テストで75点を取った人。どちらが「集団の中で上位か」を比べるには、単位もばらつきも違うので直接は比較できません。そこで、「平均から標準偏差いくつ分離れているか」という共通のものさしに変換するのが標準化です。
標準化は、確率変数 $X \sim \mathcal{N}(\mu, \sigma^2)$ に対して次の変換を施します。
$$ Z = \frac{X – \mu}{\sigma} $$
意味はシンプルです。まず $X – \mu$ で「平均からのずれ」を測り、それを $\sigma$ で割って「標準偏差を単位とした距離」に直します。$Z = 1$ なら「平均より1標準偏差だけ大きい」、$Z = -2$ なら「平均より2標準偏差小さい」という具合です。
この変換後の $Z$ は、平均0・分散1の正規分布、すなわち標準正規分布 $\mathcal{N}(0, 1)$ に従います。
$$ Z \sim \mathcal{N}(0, 1), \qquad \phi(z) = \frac{1}{\sqrt{2\pi}} \exp\left( -\frac{z^2}{2} \right) $$
なぜ標準化で平均0・分散1になるかは、期待値と分散の性質から確かめられます。$E[X] = \mu,\ \mathrm{Var}[X] = \sigma^2$ のとき、期待値の線形性より
$$ E[Z] = E\left[\frac{X-\mu}{\sigma}\right] = \frac{1}{\sigma}\big(E[X] – \mu\big) = \frac{\mu – \mu}{\sigma} = 0 $$
となります。分散についても、定数倍は2乗で外に出るという性質 $\mathrm{Var}[aX+b] = a^2 \mathrm{Var}[X]$ を使うと
$$ \mathrm{Var}[Z] = \mathrm{Var}\left[\frac{X-\mu}{\sigma}\right] = \frac{1}{\sigma^2}\mathrm{Var}[X] = \frac{\sigma^2}{\sigma^2} = 1 $$
と確かめられます。下の図は、身長の分布(左)を標準化すると、誰もが知る標準正規分布(右)にぴったり重なる様子を示しています。

この図のポイントは、どんな $\mu, \sigma$ の正規分布も、標準化すれば全く同じ形 $\mathcal{N}(0,1)$ になることです。左の図で「平均より1σ大きい点」(緑の破線)は、右の図では必ず $z=1$ に対応します。だからこそ、標準正規分布の数表($z$ 表)一枚があれば、あらゆる正規分布の確率を計算できるのです。これは正規分布を扱ううえで極めて実用的な性質です。
標準化によって「平均から $k$ 標準偏差」という共通言語が手に入りました。すると次に気になるのは「±1σ、±2σ、±3σ の範囲にはどのくらいの確率が入るのか」です。これが有名な経験則につながります。
68-95-99.7則
標準化のおかげで、すべての正規分布は「平均から標準偏差いくつ分」という共通の尺度で語れるようになりました。では、平均から ±1σ、±2σ、±3σ の範囲に、データはどのくらいの割合で収まるのでしょうか。実はこの答えはどんな正規分布でも一定です。
| 範囲 | 含まれる確率 |
|---|---|
| $\mu \pm 1\sigma$ | 約 68.27% |
| $\mu \pm 2\sigma$ | 約 95.45% |
| $\mu \pm 3\sigma$ | 約 99.73% |
これを覚えやすく丸めたのが68-95-99.7則(経験則、empirical rule)です。下の図は、標準正規分布の上にこの三つの帯を重ねたものです。

この図から、正規分布の「ばらつきの感覚」がつかめます。データのほぼ7割が平均±1σに、95%が±2σに、そして99.7%が±3σに収まります。逆に言えば、平均から3σ以上離れた値は1000回に3回程度しか起きない、つまり極めて稀な「外れ値」だと判断できます。製造業の品質管理で「3σ管理」「6σ(シックスシグマ)」という言葉が使われるのは、まさにこの確率に基づいています。
数式で確認すると、±1σの確率は標準正規分布の累積分布関数 $\Phi$ を使って
$$ P(\mu – \sigma \leq X \leq \mu + \sigma) = \Phi(1) – \Phi(-1) \approx 0.8413 – 0.1587 = 0.6827 $$
と計算できます。ここで $\Phi(z) = P(Z \leq z)$ は標準正規分布の累積分布関数で、解析的な初等関数では書けませんが、誤差関数 $\mathrm{erf}$ を使って $\Phi(z) = \frac{1}{2}\left[1 + \mathrm{erf}(z/\sqrt{2})\right]$ と表されます。
この68-95-99.7則は「平均と分散がパラメータ通りなら」成り立つ話でした。では本当に、定義式の $\mu, \sigma^2$ がそのまま期待値と分散になっているのでしょうか。次の章で、それを導出によって確かめます。
平均と分散の導出
正規分布 $\mathcal{N}(x \mid \mu, \sigma^2)$ という名前は「平均が $\mu$、分散が $\sigma^2$」であることを暗に主張しています。ここでは、それが本当に成り立つことを期待値と分散の定義から導きます。ゴールは $E[X] = \mu$ と $\mathrm{Var}[X] = \sigma^2$ を示すことです。
期待値が $\mu$ になること
期待値の定義は $E[X] = \displaystyle\int_{-\infty}^{\infty} x\, p(x)\, dx$ です。これに正規分布のPDFを代入します。
$$ E[X] = \int_{-\infty}^{\infty} x \cdot \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left\{ -\frac{(x-\mu)^2}{2\sigma^2} \right\} dx $$
このまま積分するのは大変なので、変数変換 $t = \dfrac{x-\mu}{\sigma}$ を導入します。すると $x = \sigma t + \mu$、$dx = \sigma\, dt$ となり、積分範囲は変わりません。代入すると、
$$ E[X] = \int_{-\infty}^{\infty} (\sigma t + \mu) \cdot \frac{1}{\sqrt{2\pi\sigma^2}} e^{-t^2/2} \cdot \sigma\, dt $$
ここで $\sqrt{2\pi\sigma^2} = \sigma\sqrt{2\pi}$ なので、係数の $\sigma$ が約分されて整理できます。
$$ E[X] = \frac{1}{\sqrt{2\pi}} \int_{-\infty}^{\infty} (\sigma t + \mu)\, e^{-t^2/2}\, dt $$
積分を二つの項に分けます。
$$ E[X] = \underbrace{\frac{\sigma}{\sqrt{2\pi}} \int_{-\infty}^{\infty} t\, e^{-t^2/2}\, dt}_{(\text{第1項})} + \underbrace{\frac{\mu}{\sqrt{2\pi}} \int_{-\infty}^{\infty} e^{-t^2/2}\, dt}_{(\text{第2項})} $$
第1項の被積分関数 $t\, e^{-t^2/2}$ は奇関数です($t$ を $-t$ に変えると符号が反転する)。奇関数を左右対称な区間 $(-\infty, \infty)$ で積分すると、正の部分と負の部分が打ち消し合ってゼロになります。よって第1項は消えます。第2項のガウス積分は $\int_{-\infty}^{\infty} e^{-t^2/2}\, dt = \sqrt{2\pi}$ なので、
$$ E[X] = 0 + \frac{\mu}{\sqrt{2\pi}} \cdot \sqrt{2\pi} = \mu $$
確かに期待値が $\mu$ になりました。直感的にも、正規分布は $\mu$ を中心に左右対称なので、重心(期待値)が $\mu$ にあるのは自然です。
分散が $\sigma^2$ になること
次に分散です。定義は $\mathrm{Var}[X] = E[(X – \mu)^2]$ で、$E[X] = \mu$ がわかったのでこれを使います。
$$ \mathrm{Var}[X] = \int_{-\infty}^{\infty} (x-\mu)^2 \cdot \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left\{ -\frac{(x-\mu)^2}{2\sigma^2} \right\} dx $$
同じ変数変換 $t = \dfrac{x-\mu}{\sigma}$ を使うと、$(x-\mu)^2 = \sigma^2 t^2$、$dx = \sigma\, dt$ です。代入して係数を整理すると、
$$ \mathrm{Var}[X] = \frac{\sigma^2}{\sqrt{2\pi}} \int_{-\infty}^{\infty} t^2\, e^{-t^2/2}\, dt $$
残った積分 $\int_{-\infty}^{\infty} t^2 e^{-t^2/2}\, dt$ を部分積分で処理します。$u = t$、$dv = t\, e^{-t^2/2}\, dt$ とおくと、$v = -e^{-t^2/2}$ です(合成関数の微分から確認できます)。部分積分の公式 $\int u\, dv = [uv] – \int v\, du$ を適用すると、
$$ \int_{-\infty}^{\infty} t^2 e^{-t^2/2}\, dt = \left[ -t\, e^{-t^2/2} \right]_{-\infty}^{\infty} + \int_{-\infty}^{\infty} e^{-t^2/2}\, dt $$
第1項の境界値は、$t \to \pm\infty$ で $e^{-t^2/2}$ が $t$ よりはるかに速くゼロに収束するため、ゼロになります。第2項はガウス積分 $\sqrt{2\pi}$ です。したがって、
$$ \int_{-\infty}^{\infty} t^2 e^{-t^2/2}\, dt = 0 + \sqrt{2\pi} = \sqrt{2\pi} $$
これを戻すと、
$$ \mathrm{Var}[X] = \frac{\sigma^2}{\sqrt{2\pi}} \cdot \sqrt{2\pi} = \sigma^2 $$
分散も確かに $\sigma^2$ になりました。導出を通じて、正規分布の二つのパラメータが文字通り平均と分散を表していることが確認できました。
パラメータの意味がはっきりしたところで、次は冒頭で予告した「なぜ正規分布が遍在するのか」の核心、中心極限定理に踏み込みます。
中心極限定理との関係
身長も、テストの点も、観測誤差も、なぜ判で押したように正規分布になるのでしょうか。その答えが中心極限定理(Central Limit Theorem, CLT)です。これは確率論で最も美しい結果の一つで、正規分布が「自然界の標準語」になっている根本理由を説明します。
中心極限定理を直感的に言えば、こうなります。「元の分布が何であろうと、独立な確率変数をたくさん足して平均をとると、その結果は正規分布に近づく」。身長は遺伝子・栄養・運動・睡眠など無数の小さな要因の足し算です。各要因がどんな分布でも、それらが大量に重なると合計は正規分布になる——だから身長は正規分布になるのです。
厳密に述べると、平均 $\mu$、分散 $\sigma^2$(有限)をもつ独立同分布な確率変数 $X_1, X_2, \dots, X_n$ の標本平均を $\bar{X}_n = \frac{1}{n}\sum_{i=1}^n X_i$ とすると、標準化した量は $n \to \infty$ で標準正規分布に分布収束します。
$$ \frac{\bar{X}_n – \mu}{\sigma / \sqrt{n}} \xrightarrow{d} \mathcal{N}(0, 1) $$
ここで $\sigma/\sqrt{n}$ は標本平均の標準偏差(標準誤差)で、サンプル数 $n$ を増やすほど小さくなります。つまり標本平均は真の平均 $\mu$ のまわりに、$1/\sqrt{n}$ のスピードで集中していきます。
下の図は、$[0,1]$ 上の一様分布(正規分布とは似ても似つかない平らな分布)から $n$ 個取り出して平均をとる実験です。

この図は中心極限定理の威力を端的に示しています。$n=1$ では元の一様分布のまま平らですが、$n=2$ で早くも三角形(山)になり、$n=5$ ではかなり釣鐘型に近づき、$n=30$ ではほぼ完璧に正規分布(赤線)と重なります。元の分布が一様分布という「正規分布の対極」のような形でも、平均をとるだけで正規分布が現れる——この普遍性こそが、正規分布があらゆる場面に顔を出す理由なのです。
中心極限定理は「和をとると正規分布に近づく」と教えてくれました。では、最初から正規分布に従うものを足したらどうなるでしょうか。これが次の再生性の話です。
正規分布の再生性
中心極限定理は「いろいろな分布の和が正規分布に近づく」という話でした。一方で、もともと正規分布に従うものどうしを足すと、近づくどころか、ぴったり正規分布になるという性質があります。これを正規分布の再生性(reproductive property)と呼びます。
具体的に述べます。独立な二つの確率変数 $X \sim \mathcal{N}(\mu_1, \sigma_1^2)$ と $Y \sim \mathcal{N}(\mu_2, \sigma_2^2)$ があるとき、その和 $X + Y$ もまた正規分布に従い、
$$ X + Y \sim \mathcal{N}(\mu_1 + \mu_2,\ \sigma_1^2 + \sigma_2^2) $$
となります。平均は平均どうしの和、分散は分散どうしの和です(独立なので共分散の項が出ません)。下の図はこれをシミュレーションで確かめたものです。

この図では、$X \sim \mathcal{N}(2, 1)$ と $Y \sim \mathcal{N}(-1, 2.25)$ の和をヒストグラム(灰色)にし、理論上の $\mathcal{N}(1, 3.25)$(赤の破線)と重ねています。ヒストグラムが理論曲線にぴったり一致しており、和が確かに正規分布になっていることがわかります。平均は $2 + (-1) = 1$、分散は $1 + 2.25 = 3.25$ と、足し算だけで決まっています。
再生性が重要なのは、正規分布の世界に閉じて計算ができるからです。たとえばカルマンフィルタでは「予測 = 状態の正規分布 + ノイズの正規分布」「更新 = 二つの正規分布の積」といった操作を繰り返しますが、再生性のおかげで結果が常に正規分布のまま保たれ、平均と分散の更新式だけで全てを追えます。もし和が別の分布になってしまうと、計算が手に負えなくなります。
なぜ和が正規分布になるのか——これをエレガントに証明する道具が、次に扱うモーメント母関数です。
モーメント母関数
再生性や、期待値・分散の計算を一気に片付けてくれる便利な道具がモーメント母関数(Moment Generating Function, MGF)です。これは確率分布を一本の関数に「符号化」したもので、微分すれば各種モーメント(期待値・分散など)が取り出せ、掛け算すれば独立な和の分布がわかる、という万能ツールです。
モーメント母関数は次で定義されます。
$$ M_X(t) = E[e^{tX}] $$
正規分布 $X \sim \mathcal{N}(\mu, \sigma^2)$ のMGFを計算してみましょう。定義に従って積分します。
$$ M_X(t) = \int_{-\infty}^{\infty} e^{tx} \cdot \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left\{ -\frac{(x-\mu)^2}{2\sigma^2} \right\} dx $$
指数部分をまとめ、$x$ について平方完成するのがポイントです。指数の中身は
$$ tx – \frac{(x-\mu)^2}{2\sigma^2} = -\frac{1}{2\sigma^2}\left[ (x-\mu)^2 – 2\sigma^2 t x \right] $$
ここで $x$ に関する2次式を平方完成します。$(x – \mu)^2 – 2\sigma^2 t x = \big(x – (\mu + \sigma^2 t)\big)^2 – 2\sigma^2 t \mu – \sigma^4 t^2$ と変形できます(展開して確認できます)。これを戻すと、指数の中身は
$$ -\frac{\big(x – (\mu + \sigma^2 t)\big)^2}{2\sigma^2} + \mu t + \frac{\sigma^2 t^2}{2} $$
となります。第1項は中心が $\mu + \sigma^2 t$ にずれた正規分布の指数部分そのものなので、規格化定数 $\frac{1}{\sqrt{2\pi\sigma^2}}$ と合わせて積分すると1になります。残りの $x$ に依存しない項 $\mu t + \frac{\sigma^2 t^2}{2}$ は積分の外に出せます。したがって、
$$ \boxed{\, M_X(t) = \exp\left( \mu t + \frac{\sigma^2 t^2}{2} \right) \,} $$
という簡潔な形になりました。このMGFから、期待値と分散を機械的に取り出せます。$M_X'(0) = E[X]$、$M_X”(0) = E[X^2]$ という性質を使うと、
$$ M_X'(t) = (\mu + \sigma^2 t)\, M_X(t), \qquad M_X'(0) = \mu \cdot 1 = \mu = E[X] $$
と、先ほど積分で苦労して求めた期待値が一瞬で出ます。分散も2階微分から同様に $\sigma^2$ が得られます。
さらに、MGFは再生性の証明も一発で片付けます。独立な $X, Y$ に対して $M_{X+Y}(t) = M_X(t)\, M_Y(t)$ が成り立つので、
$$ M_{X+Y}(t) = \exp\left( \mu_1 t + \frac{\sigma_1^2 t^2}{2} \right) \exp\left( \mu_2 t + \frac{\sigma_2^2 t^2}{2} \right) = \exp\left( (\mu_1+\mu_2) t + \frac{(\sigma_1^2+\sigma_2^2) t^2}{2} \right) $$
この結果は、平均 $\mu_1+\mu_2$、分散 $\sigma_1^2+\sigma_2^2$ の正規分布のMGFそのものです。MGFが分布を一意に決めることから、$X+Y \sim \mathcal{N}(\mu_1+\mu_2,\ \sigma_1^2+\sigma_2^2)$ が証明されました。前章の再生性が、わずか数行で示せたわけです。
ここまでは1変数の正規分布を扱ってきました。しかし機械学習では、複数の変数が同時に正規分布に従う「多変量正規分布」が主役になります。最後にその入口を覗いておきましょう。
多変量正規分布への入口
ここまでは1次元(スカラー)の正規分布を見てきました。しかし現実のデータは、身長と体重、株価と出来高のように複数の変数が絡み合っています。これらを同時に扱うのが多変量正規分布(multivariate normal distribution)です。
$d$ 次元のベクトル $\boldsymbol{x} = (x_1, \dots, x_d)^\top$ に対する多変量正規分布は、次の確率密度関数で定義されます。
$$ \mathcal{N}(\boldsymbol{x} \mid \boldsymbol{\mu}, \boldsymbol{\Sigma}) = \frac{1}{(2\pi)^{d/2} |\boldsymbol{\Sigma}|^{1/2}} \exp\left\{ -\frac{1}{2} (\boldsymbol{x} – \boldsymbol{\mu})^\top \boldsymbol{\Sigma}^{-1} (\boldsymbol{x} – \boldsymbol{\mu}) \right\} $$
1次元の式と見比べると、対応関係がよく見えます。平均 $\mu$ が平均ベクトル $\boldsymbol{\mu}$ に、分散 $\sigma^2$ が共分散行列 $\boldsymbol{\Sigma}$ に置き換わっています。指数の中身 $\frac{(x-\mu)^2}{\sigma^2}$ は、行列を使った $(\boldsymbol{x}-\boldsymbol{\mu})^\top \boldsymbol{\Sigma}^{-1} (\boldsymbol{x}-\boldsymbol{\mu})$(マハラノビス距離の2乗)に一般化されています。割り算が逆行列 $\boldsymbol{\Sigma}^{-1}$ に、規格化の $\sigma$ が行列式 $|\boldsymbol{\Sigma}|^{1/2}$ になっているのが対応点です。
共分散行列 $\boldsymbol{\Sigma}$ の非対角成分が、変数どうしの相関を表します。下の図は2次元正規分布の等高線を、相関 $\rho$ を変えて描いたものです。

この図から、相関が等高線の形を決めることがわかります。$\rho=0$(無相関)では等高線が軸に揃った円に近く、$x_1$ と $x_2$ が独立に動きます。$\rho=0.7$(正の相関)では等高線が右上がりに傾き、「$x_1$ が大きいと $x_2$ も大きい」傾向を表します。$\rho=-0.7$(負の相関)では逆に右下がりです。サンプル点(赤)も等高線の傾きに沿って分布しており、共分散行列がデータの「広がる方向」を支配していることが見て取れます。
多変量正規分布は、主成分分析(PCA)・ガウス過程・カルマンフィルタ・混合ガウスモデルなど、機械学習の多くの手法の土台です。本記事では入口の紹介に留めますが、1次元の正規分布をしっかり理解しておけば、その自然な拡張としてスムーズに学べます。
理論を一通り押さえたので、次はPythonで実際に正規分布を扱い、これまでの結果を数値とグラフで確かめましょう。
Pythonでの実装
ここからは、これまで導いた性質をPythonで確かめます。まず正規分布のPDFを自前で実装し、SciPyの結果と一致するか、そして面積が1になるかを検証します。
import numpy as np
from scipy import stats
def normal_pdf(x, mu, sigma):
"""正規分布の確率密度関数(定義式そのまま)"""
coef = 1.0 / np.sqrt(2 * np.pi * sigma**2)
return coef * np.exp(-(x - mu)**2 / (2 * sigma**2))
mu, sigma = 171.0, 6.0 # 身長の例(cm)
x = np.linspace(mu - 5*sigma, mu + 5*sigma, 100000)
# 自前の実装と SciPy を比較
y_mine = normal_pdf(x, mu, sigma)
y_scipy = stats.norm.pdf(x, loc=mu, scale=sigma)
print("自前とSciPyの最大差:", np.max(np.abs(y_mine - y_scipy)))
# 曲線の下の面積が 1 になるか(数値積分)
area = np.trapezoid(y_mine, x)
print("PDFの積分(面積):", area)
このコードを実行すると、自前の実装とSciPyの差は 1e-18 程度(浮動小数点の丸め誤差レベル)で、両者が完全に一致することが確認できます。また面積(積分値)はほぼ 1.0 になり、定義式の前にある規格化定数 $\frac{1}{\sqrt{2\pi\sigma^2}}$ が確かに「全体の面積を1にする」役割を果たしていることが数値的に裏付けられます。
68-95-99.7則を数値で確認
次に、68-95-99.7則が本当に成り立つかを、累積分布関数を使って確かめます。
import numpy as np
from scipy import stats
# 標準正規分布で ±kσ に入る確率を計算
for k in [1, 2, 3]:
prob = stats.norm.cdf(k) - stats.norm.cdf(-k)
print(f"±{k}σ に入る確率: {prob*100:.4f}%")
# 乱数でも確認(大数の法則)
rng = np.random.default_rng(0)
samples = rng.normal(0, 1, 1_000_000)
for k in [1, 2, 3]:
ratio = np.mean(np.abs(samples) <= k)
print(f"±{k}σ の標本割合: {ratio*100:.4f}%")
出力は、理論値が順に約 68.27%、95.45%、99.73% となり、暗記した68-95-99.7則と一致します。さらに100万個の乱数で実測した割合も、ほぼ同じ値(小数点以下わずかなずれ)に収まります。これは大数の法則により、サンプルを増やすほど標本割合が理論確率に近づくことを示しています。理論と実測の両面から、この経験則の正しさが確認できました。
下の図は、累積分布関数(CDF)が確率密度関数(PDF)を左から積分したものであることを視覚化したものです。

この図の上段(PDF)で塗りつぶした面積が、下段(CDF)の縦軸の値に対応します。たとえば $x=1$ までの面積 $0.841$ が、CDFでは $F(1)=0.841$ という1点の高さになっています。「面積を求める」という確率の計算が、CDFを使えば「曲線の値を読む」だけで済む——これがCDFの便利さです。
分位点(パーセント点)を求める
CDFの逆操作、すなわち「上側 $\alpha$% を与える $z$ 値」を求めるのが分位点関数(パーセント点関数、ppf)です。統計的検定の棄却域や信頼区間の計算で多用されます。
import numpy as np
from scipy import stats
# 上側確率 α に対応する z 値(片側)
for alpha in [0.10, 0.05, 0.025, 0.01]:
z = stats.norm.ppf(1 - alpha)
print(f"上側 {alpha*100:.1f}% 点 z = {z:.4f}")
# 95% 信頼区間の両側の z 値
z_lower = stats.norm.ppf(0.025)
z_upper = stats.norm.ppf(0.975)
print(f"95%区間の z = [{z_lower:.4f}, {z_upper:.4f}]")
実行すると、上側5%点が z = 1.6449、上側2.5%点が z = 1.9600 と出力されます。後者の 1.96 は「95%信頼区間といえば1.96σ」という統計学で頻出する値です。両側95%区間は $[-1.96, 1.96]$ となり、68-95-99.7則の「±2σで約95%」と整合しています(より正確には2σではなく1.96σ)。

この図は、塗りつぶした上側の面積(確率 $\alpha$)と、その境界となる $z$ 値の対応を示しています。たとえば上側5%(緑)の境界は $z=1.645$、上側1%(赤)の境界は $z=2.326$ です。分位点関数は「面積から境界の位置を逆引きする」操作であり、仮説検定で「この値より外なら有意」と判断する際の臨界値を与えてくれます。
最尤推定でパラメータを推定する
実データから正規分布の $\mu, \sigma$ を推定するのが最尤推定(MLE)です。正規分布の場合、最尤推定値は標本平均と標本標準偏差に一致するという美しい結果が知られています。これをデータと対数尤度の地形で確かめます。
import numpy as np
rng = np.random.default_rng(3)
true_mu, true_sigma = 2.0, 1.5
data = rng.normal(true_mu, true_sigma, 200) # 真の分布からサンプル
# 最尤推定値(解析解): 標本平均と標本標準偏差
mle_mu = data.mean()
mle_sigma = data.std(ddof=0) # 1/N で割る(MLE)
print(f"真値: μ={true_mu}, σ={true_sigma}")
print(f"最尤推定: μ={mle_mu:.4f}, σ={mle_sigma:.4f}")
# 対数尤度の値を確認
def log_likelihood(mu, sigma, data):
n = len(data)
return (-0.5 * n * np.log(2 * np.pi) - n * np.log(sigma)
- np.sum((data - mu)**2) / (2 * sigma**2))
print("最尤点の対数尤度:", log_likelihood(mle_mu, mle_sigma, data))
print("真値での対数尤度:", log_likelihood(true_mu, true_sigma, data))
実行すると、最尤推定値は真値 $(\mu=2.0, \sigma=1.5)$ にかなり近い値(例: $\mu \approx 2.0$、$\sigma \approx 1.5$ 付近)になります。また最尤点での対数尤度が真値での対数尤度よりわずかに大きいことも確認できます。これは「最尤推定は手元のデータに最もよく当てはまるパラメータを選ぶ」という定義どおりの挙動です。サンプル数を増やせば、最尤推定値は真値にさらに近づきます。
下の図は、$\mu, \sigma$ を動かしたときの対数尤度の「地形」を等高線で描いたものです。

この図では、対数尤度が最も高くなる「山頂」(赤い星)が最尤推定値で、真値(白丸)のすぐ近くにあります。最尤推定とは、この地形を登って頂上を探す作業だと視覚的に理解できます。地形が滑らかな単峰なので、正規分布の最尤推定は迷わず解にたどり着けます。これが、正規分布が扱いやすいと言われる理由の一つです。
正規性をQ-Qプロットで確認する
実データが「本当に正規分布に従うか」を視覚的に判定する道具がQ-Qプロットです。データの分位点と理論分位点を散布図にし、点が直線に乗れば正規分布、外れれば非正規と判断します。
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
rng = np.random.default_rng(5)
normal_data = rng.normal(0, 1, 500) # 正規分布データ
exp_data = rng.exponential(1.0, 500) # 指数分布データ(非正規)
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
stats.probplot(normal_data, dist="norm", plot=axes[0])
axes[0].set_title("正規分布データ — 点が直線に乗る")
stats.probplot(exp_data, dist="norm", plot=axes[1])
axes[1].set_title("指数分布データ — 端で直線から外れる")
for ax in axes:
ax.set_xlabel("理論分位点(標準正規)")
ax.set_ylabel("標本分位点")
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

このグラフから、正規性の有無が一目でわかります。左の正規分布データは、点がほぼ完全に赤い直線(理論線)に乗っています。一方、右の指数分布データは中央付近は直線に近いものの、両端(特に上側)で大きく上に反り返り、直線から外れています。これは指数分布が右に長い裾を持つ非対称な分布だからです。Q-Qプロットは、ヒストグラムよりも裾の挙動に敏感で、正規性の検定(シャピロ・ウィルク検定など)の前段としてよく使われます。
これで、正規分布の定義から推定・検定の実践までを一通り扱いました。最後に要点を整理しましょう。
まとめ
本記事では、正規分布について定義から多変量への拡張まで、導出とPython実装を交えて解説しました。
- 定義: 正規分布 $\mathcal{N}(x \mid \mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\{-\frac{(x-\mu)^2}{2\sigma^2}\}$ は、$\mu$ で山の位置、$\sigma$ で山の幅を決め、面積が1になる左右対称の釣鐘型である。
- 標準化と68-95-99.7則: $Z=(X-\mu)/\sigma$ でどんな正規分布も $\mathcal{N}(0,1)$ に揃う。±1σ・±2σ・±3σ に約68%・95%・99.7%が入る。
- 平均と分散の導出: 変数変換と部分積分により、定義式のパラメータが文字通り $E[X]=\mu$、$\mathrm{Var}[X]=\sigma^2$ になることを示した。
- 中心極限定理: 元の分布が何であれ、独立な変数の和(平均)は正規分布に近づく。これが正規分布の遍在の根本理由である。
- 再生性とMGF: 独立な正規分布の和もまた正規分布($\mathcal{N}(\mu_1+\mu_2, \sigma_1^2+\sigma_2^2)$)。モーメント母関数 $M_X(t)=\exp(\mu t + \frac{\sigma^2 t^2}{2})$ がこれをエレガントに証明する。
- 多変量正規分布: 平均ベクトル $\boldsymbol{\mu}$ と共分散行列 $\boldsymbol{\Sigma}$ に一般化され、相関が等高線の傾きを決める。PCAやカルマンフィルタの土台となる。
正規分布は、統計的検定・回帰分析・ベイズ推定・カルマンフィルタ・ガウス過程・生成モデルなど、確率を扱うほぼ全ての分野への入口です。ここで身につけた直感と導出は、より高度なトピックを学ぶ際の強固な足場になります。
次のステップとして、以下の記事も参考にしてください。