確率変数の分散についてわかりやすく解説。定義や意味など

2人の射手が的を狙って5発ずつ撃ったとします。どちらも平均すれば中心に当たっている——つまり「平均値」は同じです。でも一方は中心の周りに小さくまとまり、もう一方は的のあちこちに散らばっている。この「どれだけ散らばっているか」を平均値はまったく教えてくれません。平均が同じでも中身がまるで違うことは、現実にいくらでもあります。

確率変数における期待値と分散は、機械学習や統計学を学ぶ上で最も基本的な2つの量です。期待値が分布の「中心がどこか」を表すのに対し、分散はその中心の周りにどれだけ散らばっているかを表します。期待値だけでは「平均すると真ん中」としか言えませんが、分散まで分かれば「真ん中の周りに、これくらいの幅でばらついている」と言えるようになります。

この分散という量は、驚くほど広い場面で顔を出します。たとえば機械学習では、モデルの予測誤差を「バイアス(偏り)」と「バリアンス(分散)」に分解して過学習を診断します。金融では資産のリスクを収益率の分散(あるいはその平方根である標準偏差)で測ります。品質管理では製品ばらつきを分散で監視し、信号処理ではノイズの大きさを分散で表します。分散を正しく理解しておくと、これらすべての土台ができます。

なお注意してほしいのは、ここで扱う分散はあくまで確率変数の分散だということです。背後に確率分布を考えない単純なデータ列の分散(標本分散)とは、似ているようで立場が違います。このあたりがごっちゃになっている人は多いので、本記事では両者の関係も最後にきちんと整理します。

本記事の内容

  • 分散の直感的な意味(ばらつきの尺度)と数学的定義
  • 計算公式 $V[X] = E[X^2] – E[X]^2$ の導出
  • $V[aX+b]$ や独立和 $V[X+Y]$ の性質
  • 標準偏差・不偏分散・チェビシェフ不等式
  • 離散・連続の計算例と Python 実装

同じ期待値でも散らばりが異なる3つの正規分布を重ねた図。分散が大きいほど横に広がる

上の図は、これから学ぶことの核心を一枚にまとめたものです。3つの分布はどれも期待値が $E[X]=0$ で同じですが、散らばり方がまったく違います。緑は中心に鋭くまとまり、紫は大きく広がっています。期待値(赤い破線)だけ見れば3つは区別できません。この「期待値では捉えられない散らばり」を一つの数値にしたのが分散です。それが具体的にどんな量なのか、これから順番に明らかにしていきましょう。

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

分散の定義には期待値 $E[\cdot]$ が何度も登場します。期待値が「確率で重み付けした平均」であることに不安がある人は、先に上の記事に目を通しておくとスムーズです。

確率変数における分散の言葉の意味や解釈

定義式に入る前に、これから導入する「分散」という量が直感的に何を表すのかを押さえておきましょう。冒頭の射手の例を思い出してください。的の中心が期待値、5発の弾痕が確率変数の取りうる値(標本値)に対応します。弾痕が中心の近くに集まっていれば散らばりは小さく、的全体に散っていれば散らばりは大きい。この「中心からの散らばり具合」を一つの数値で表したものが分散です。

もう少し噛み砕くと、分散は確率変数 $X$ の取りうる値が、期待値の周りにどの程度ばらついているかを測る統計量です。あとで出てくる定義式をじっくり眺めると、この直感がそのまま数式になっていることが分かります。散らばりが大きいほど分散は大きく、すべての値が期待値ぴったりに集中していれば(散らばりゼロなら)分散は $0$ になります。

ここで一つ自然な疑問が生まれます。「散らばり」を測るなら、単純に「期待値からのずれ」を平均すればいいのでは? 実はそれではうまくいきません。なぜダメで、どう工夫するのか——それが分散の定義そのものに直結しています。次に定義を見ていきましょう。

なぜ「ずれの平均」ではなく「ずれの二乗の平均」なのか

散らばりを測りたいなら、各値 $x_i$ が期待値 $\mu = E[X]$ からどれだけ離れているか、つまり偏差 $x_i – \mu$ を考えるのが自然です。ところが、この偏差をそのまま平均すると困ったことが起きます。期待値の定義により、偏差の期待値は必ず $0$ になってしまうのです。

$$ \begin{equation} E[X – \mu] = E[X] – \mu = \mu – \mu = 0 \end{equation} $$

これは偶然ではありません。期待値は「ちょうど真ん中」なので、プラス側のずれとマイナス側のずれが完全に打ち消し合います。つまり、偏差をそのまま平均しても、散らばりの情報は消えてしまうのです。

そこで、ずれの符号を消す工夫が必要になります。第一感は「絶対値 $|X – \mu|$ を取る」ですが、絶対値は数学的に扱いにくい(微分しにくい、分解しにくい)という弱点があります。代わりに二乗 $(X – \mu)^2$ を取れば、符号は消えて、しかも滑らかで扱いやすい。さらに二乗には「大きなずれをより強く罰する」という性質があり、外れ値の影響を強調できます。この「偏差の二乗の期待値」こそが分散です。

二乗を使うという選択にはきちんと理由があったわけです。それでは、この考え方を正式な定義として書き下しましょう。

確率変数における分散の定義

確率変数 $X$ における分散は、分散の英語表記 variance の頭文字をとって $V[X]$ や $\mathrm{Var}(X)$ と書かれます(本記事では主に $V[X]$ を使います)。前節の議論「偏差の二乗の期待値」をそのまま式にすると、定義は次のようになります。

$$ \begin{equation} V[X] = E\!\left[(X – E[X])^2\right] \end{equation} $$

これが最もシンプルな形です。ここで $E[X]$ は確率変数 $X$ の期待値です。$E[X] = \mu$ とおくと、上式は

$$ \begin{equation} V[X] = E\!\left[(X – \mu)^2\right] \end{equation} $$

とも書けます。読み下すと「期待値 $\mu$ からのずれを二乗し、その期待値(確率で重み付けした平均)を取る」となります。前節で組み立てた直感がそのまま式になっていることが見て取れるはずです。

確率変数の各値と期待値とのずれ(偏差)を矢印で示し、その二乗を確率で重み付けする様子の図

上の図は、離散確率変数を例に定義の中身を分解したものです。各棒が確率変数の取りうる値とその確率を、赤い破線が期待値 $\mu$ を表します。オレンジの両矢印が各値の偏差 $x_i – \mu$ です。分散はこの偏差を二乗し、確率 $p_i$ で重み付けして足し合わせた量です。期待値から遠い値ほど(しかも二乗されるので)大きく寄与することが、図からも感じ取れます。

定義式を眺めただけでは、どんな計算になるのかピンと来ないかもしれません。そこで、$X$ が離散確率変数の場合と連続確率変数の場合に分けて、具体的な計算式を見てみましょう。

離散確率変数における分散の定義式

離散確率変数では、取りうる値とその確率が次のように与えられているとします。

$X$ $x_1$ $x_2$ $x_3$ $x_4$ $\dots$ $x_{n-1}$ $x_{n}$
$P(X)$ $p_1$ $p_2$ $p_3$ $p_4$ $\dots$ $p_{n-1}$ $p_{n}$

期待値の定義 $E[g(X)] = \sum_i g(x_i)\,p_i$ で $g(X) = (X – \mu)^2$ とすれば、分散はそのまま次のように書けます。

$$ \begin{equation} V[X] = \sum_{i=1}^n (x_i – \mu)^2\, p_i \end{equation} $$

ここで $\mu = E[X] = \sum_i x_i p_i$ です。式の意味は明快で、「各値の偏差の二乗 $(x_i – \mu)^2$ を、その値が出る確率 $p_i$ で重み付けして合計する」だけです。自分が扱っている確率変数が離散的なら、分散はこの形になることを必ず覚えておきましょう。

連続的な確率変数では、和が積分に置き換わります。次に見てみましょう。

連続確率変数における分散の定義式

確率変数が連続の場合、確率は確率密度関数 $f(x)$ で表されます。離散の和 $\sum_i (\cdot)\, p_i$ を積分 $\int (\cdot)\, f(x)\,dx$ に置き換えると、分散の定義式は次のようになります。

$$ \begin{equation} V[X] = \int_{-\infty}^{\infty} (x – \mu)^2\, f(x)\, dx \end{equation} $$

ここで $f(x)$ は確率密度関数、$\mu = E[X] = \int_{-\infty}^{\infty} x\, f(x)\, dx$ です。離散の場合とまったく同じ「偏差の二乗を確率(密度)で重み付け平均する」という構造で、ただ和が積分になっただけだと分かります。

参考書では(2)のような抽象的な定義だけが与えられて頭が混乱しがちですが、自分の扱う確率変数が離散か連続かをはっきりさせ、(5)式や(6)式のイメージに落とし込めば、分散はぐっと身近になります。

ところで、定義式 $E[(X-\mu)^2]$ を毎回そのまま計算するのは少し面倒です。偏差を一つひとつ求めてから二乗して足す——もっと楽な計算法はないのでしょうか。実は、定義を展開すると非常に便利な公式が出てきます。次に導出しましょう。

計算公式 V[X] = E[X²] − E[X]² の導出

ここでのゴールは、定義式 $V[X] = E[(X-\mu)^2]$ から、計算に便利な公式

$$ \begin{equation} V[X] = E[X^2] – (E[X])^2 \end{equation} $$

を導くことです。この公式があれば、$E[X^2]$(二乗の期待値)と $E[X]$(期待値)の2つを別々に計算するだけで分散が求まり、偏差をいちいち計算する必要がなくなります。

出発点は定義式です。中身の二乗を展開します。$\mu = E[X]$ は定数であることに注意してください。

$$ \begin{equation} V[X] = E\!\left[(X – \mu)^2\right] = E\!\left[X^2 – 2\mu X + \mu^2\right] \end{equation} $$

次に、期待値の線形性を使います。期待値は「和は和、定数倍は外に出せる」、すなわち $E[aU + bV] = aE[U] + bE[V]$ が成り立ちます。これを使って3つの項に分けると、

$$ \begin{equation} V[X] = E[X^2] – 2\mu\, E[X] + \mu^2 \end{equation} $$

となります。ここで $\mu$ や $\mu^2$ は定数なので期待値の外に出せ、定数の期待値 $E[\mu^2] = \mu^2$ である点を使いました。

ここで $E[X] = \mu$ そのものなので、第2項は $-2\mu \cdot \mu = -2\mu^2$ となります。代入すると、

$$ \begin{equation} V[X] = E[X^2] – 2\mu^2 + \mu^2 = E[X^2] – \mu^2 \end{equation} $$

最後に $\mu = E[X]$ を戻せば、目的の公式が得られます。

$$ \begin{equation} V[X] = E[X^2] – (E[X])^2 \end{equation} $$

導出はこれで完了です。「分散 = 二乗の期待値 − 期待値の二乗」という、覚えやすく使いやすい形にまとまりました。手計算でも、コードでも、この形を使う場面が圧倒的に多くなります。

E[X²] から E[X]² を引くと分散になることを示すブロック図。具体的な数値も付記

上の図は、ある離散分布についてこの公式が実際に成り立つ様子を示したものです。$E[X^2] = 27.85$ から $E[X]^2 = \mu^2 = 20.70$ を引くと、分散 $V[X] = 7.15$ が得られます。後ほど Python でこの値が定義式から計算した分散と一致することを確認します。なお $E[X^2] \geq (E[X])^2$ が常に成り立つ(分散は非負なので)ことも、この図の関係から読み取れます。

公式が手に入ったので、次は分散を変換したときの振る舞い——確率変数を定数倍したり平行移動したりすると分散がどう変わるか——を調べましょう。これは実用上とても重要な性質です。

分散の性質:V[aX+b] と V[X+Y]

確率変数を $aX + b$ のように一次変換することは頻繁にあります(単位変換、標準化など)。このとき分散がどう変わるかを押さえておくと、計算が一気に楽になります。

定数倍と平行移動:V[aX+b] = a²V[X]

$a, b$ を定数とするとき、次が成り立ちます。

$$ \begin{equation} V[aX + b] = a^2\, V[X] \end{equation} $$

直感的には「平行移動 $+b$ は分散に影響せず、定数倍 $\times a$ は二乗で効く」ということです。$+b$ で分布全体を横にずらしても、散らばり方そのものは変わりません。一方、$\times a$ で全体を $a$ 倍に引き伸ばせば、散らばりは $|a|$ 倍になり、その二乗 $a^2$ だけ分散が大きくなります。導出してみましょう。$aX + b$ の期待値は $E[aX+b] = aE[X] + b = a\mu + b$ なので、定義式に代入します。

$$ \begin{equation} V[aX+b] = E\!\left[\big((aX + b) – (a\mu + b)\big)^2\right] \end{equation} $$

括弧の中で $+b$ と $-b$ が打ち消し合うことに注目します。ここが「平行移動が効かない」理由です。

$$ \begin{equation} V[aX+b] = E\!\left[(aX – a\mu)^2\right] = E\!\left[a^2 (X – \mu)^2\right] \end{equation} $$

最後に定数 $a^2$ を期待値の外に出せば、

$$ \begin{equation} V[aX+b] = a^2\, E\!\left[(X – \mu)^2\right] = a^2\, V[X] \end{equation} $$

となり、(12)式が示せました。

分布を 2X+4 と変換したとき、平行移動は分散に効かず定数倍が二乗で効くことを示す図

上の図は、分散 $2.25$ をもつ分布 $X$ を $2X + 4$ に変換した様子です。$+4$ で中心は右に移動していますが、これは散らばりに影響しません。一方、$\times 2$ によって散らばりは $2$ 倍に広がり、分散は $2^2 \times 2.25 = 9$ になっています。「定数倍が二乗で効く」という性質が視覚的に確認できます。

独立な確率変数の和:V[X+Y] = V[X] + V[Y]

2つの確率変数 $X, Y$ が独立であれば、和の分散はそれぞれの分散の和になります。

$$ \begin{equation} V[X + Y] = V[X] + V[Y] \end{equation} $$

一般には $V[X+Y] = V[X] + V[Y] + 2\,\mathrm{Cov}(X,Y)$ という形になり、最後の項に共分散 $\mathrm{Cov}(X,Y)$ が現れます。$X, Y$ が独立なら共分散が $0$ になるため、その項が消えて(17)式になります。つまり「独立性が分散の加法性を保証している」わけです。この性質は、たとえば「独立な観測を $n$ 回足したときの分散は $n$ 倍になる」「平均を取ると分散が $1/n$ に縮む」といった統計の基本事実の根っこにあります。

独立な X と Y の和 X+Y の分散が、それぞれの分散の和になることをヒストグラムで確認した図

上の図は、独立な $X$(分散約1)と $Y$(分散約2.25)、およびその和 $X+Y$ のヒストグラムです。和の分散が約 $3.25$ となり、$V[X] + V[Y] \approx 1 + 2.25$ にほぼ一致しています。乱数で生成したサンプルでも加法性がきれいに成り立っていることが分かります。

これらの性質は実務でも頻繁に使います。次は、分散と切っても切れない関係にある「標準偏差」を見ていきましょう。

標準偏差:分散の「使いやすい」相棒

分散には一つだけ不便な点があります。それは単位が二乗になってしまうことです。身長(cm)の分散の単位は cm² になり、「身長のばらつきは 25 cm²」と言われても直感が働きません。そこで、分散の平方根を取って単位を元に戻したものを標準偏差(standard deviation) と呼びます。

$$ \begin{equation} \sigma = \sqrt{V[X]} \end{equation} $$

標準偏差 $\sigma$ は元のデータと同じ単位を持つので、「身長のばらつきは 5 cm 程度」のように直感的に解釈できます。記号として $\sigma$(シグマ)が使われ、分散は $\sigma^2$ と書かれることも多いです。

標準偏差が便利なのは、特に正規分布で「平均から $k\sigma$ 以内にどれくらいの確率が入るか」が決まっているからです。正規分布なら、$\pm 1\sigma$ に約68%、$\pm 2\sigma$ に約95%、$\pm 3\sigma$ に約99.7%が入ります(いわゆる68–95–99.7則)。

正規分布で平均±1σ・±2σ・±3σの範囲に入る確率(68%・95%・99.7%)を塗り分けた図

上の図は、平均 $50$、標準偏差 $8$ の正規分布で、$\pm 1\sigma, \pm 2\sigma, \pm 3\sigma$ の範囲を塗り分けたものです。中心に近い帯(薄い緑)が約68%、その外側まで含めると約95%、さらに外側まで含めると約99.7%をカバーします。標準偏差が「散らばりの自然なものさし」として機能していることが視覚的に分かります。横軸が元データと同じ単位になっている点にも注目してください。

ところで、これまでは分散の真の値が分かっている前提で話してきました。しかし現実には、確率分布そのものは分からず、手元のデータから分散を「推定」しなければなりません。ここで冒頭で触れた「確率変数の分散」と「データの分散」の違いが効いてきます。次に見ていきましょう。

分散の推定:標本分散と不偏分散

現実のデータ解析では、真の分布 $\mu, \sigma^2$ は分かりません。手元にある $n$ 個のデータ $x_1, \dots, x_n$ から分散を推定します。素直に考えると、まず標本平均 $\bar{x} = \frac{1}{n}\sum_i x_i$ を求め、それを中心に偏差平方を平均すればよさそうです。

$$ \begin{equation} S^2 = \frac{1}{n}\sum_{i=1}^n (x_i – \bar{x})^2 \end{equation} $$

これを標本分散と呼びます。ところがこの推定量には系統的な「目減り」があります。真の平均 $\mu$ ではなく、データ自身から作った $\bar{x}$ の周りで散らばりを測っているため、必ず散らばりを小さく見積もってしまうのです。詳しく計算すると、その期待値は

$$ \begin{equation} E[S^2] = \frac{n-1}{n}\, \sigma^2 \end{equation} $$

となり、真の分散 $\sigma^2$ より $\frac{n-1}{n}$ 倍だけ小さくなります。この偏りを打ち消すには、$n$ ではなく $n-1$ で割ればよく、

$$ \begin{equation} s^2 = \frac{1}{n-1}\sum_{i=1}^n (x_i – \bar{x})^2 \end{equation} $$

とすれば $E[s^2] = \sigma^2$ がぴったり成り立ちます。これを不偏分散(不偏推定量) と呼びます。なぜ $n-1$ なのか(ベッセル補正・自由度)の本格的な導出は別記事にゆずりますが、ここでは「確率変数の分散は理論値、標本分散・不偏分散はデータからの推定値」という立場の違いをしっかり区別しておきましょう。

n で割る標本分散が真の分散を過小評価し、n-1 で割ると補正される様子をヒストグラムで示した図

この図については、Python実装の節で実際に乱数実験を行って確認します。先取りすると、$n$ で割った推定値の平均は真値より小さく、$n-1$ で割った推定値の平均は真値にほぼ一致します。

理論値と推定値の関係が整理できたところで、もう一つ強力な道具を紹介します。分散さえ分かっていれば、分布の形を一切知らなくても「外れ値の確率」を抑え込める——チェビシェフの不等式です。

チェビシェフの不等式:分布の形を知らずに裾を抑える

正規分布なら $\pm 2\sigma$ に約95%が入る、と先ほど述べました。しかし、扱っている分布が正規分布かどうか分からない場合はどうでしょう。実は、どんな分布であっても(期待値と分散さえ存在すれば)、平均から大きく外れる確率を分散だけで上から抑えられます。これがチェビシェフの不等式です。

$$ \begin{equation} P\big(|X – \mu| \geq k\sigma\big) \leq \frac{1}{k^2} \end{equation} $$

意味は「平均から $k$ 標準偏差以上離れる確率は、たかだか $\frac{1}{k^2}$ である」ということです。たとえば $k=2$ なら $\frac{1}{4} = 0.25$、$k=3$ なら $\frac{1}{9} \approx 0.11$ です。つまり、分布の形を一切仮定しなくても「平均から $2\sigma$ 以上離れるのは多くても25%」と保証できます。分散という一つの数値だけで、これだけのことが言えるのは驚くべきことです。

チェビシェフ不等式の上界 1/k² と、正規分布での実際の裾確率を比較した図

上の図は、チェビシェフの上界 $\frac{1}{k^2}$(赤)と、参考として正規分布での実際の裾確率(青破線)を比較したものです。チェビシェフの上界は常に実際の値より上にあり、確かに「上から抑えている」ことが分かります。一方で正規分布のように形が分かっている場合は、はるかにタイトな(小さい)確率が得られます。チェビシェフは「形を知らなくても使える保険」、正規分布の評価は「形を知っているときの精密な評価」と理解するとよいでしょう。

この不等式が成り立つのは、分散が「平均から離れた値ほど二乗で重く効く」という構造を持っているからです(マルコフの不等式を $(X-\mu)^2$ に適用すると導けます)。理論はここまでにして、これらをすべて Python で確認しましょう。

具体例:手計算で分散を求める

実装に入る前に、小さな離散分布で手計算してみます。次の確率変数 $X$ を考えます。

$x_i$ 1 2 4 7 9
$p_i$ 0.10 0.25 0.30 0.20 0.15

まず期待値を求めます。

$$ \begin{aligned} \mu = E[X] &= 1(0.10) + 2(0.25) + 4(0.30) + 7(0.20) + 9(0.15) \\ &= 0.10 + 0.50 + 1.20 + 1.40 + 1.35 = 4.55 \end{aligned} $$

次に二乗の期待値を求めます。

$$ \begin{aligned} E[X^2] &= 1(0.10) + 4(0.25) + 16(0.30) + 49(0.20) + 81(0.15) \\ &= 0.10 + 1.00 + 4.80 + 9.80 + 12.15 = 27.85 \end{aligned} $$

計算公式に代入すると、

$$ V[X] = E[X^2] – (E[X])^2 = 27.85 – 4.55^2 = 27.85 – 20.70 = 7.15 $$

となります。標準偏差は $\sigma = \sqrt{7.15} \approx 2.67$ です。先ほどのブロック図(FIG_011_03)の数値とぴったり一致していることを確認してください。次は、これを定義式からも計算して両者が合うかをコードで検証します。

Pythonでの実装

定義式と計算公式が一致することを確認する

まず、上の手計算の例について、定義式 $\sum (x_i-\mu)^2 p_i$ と計算公式 $E[X^2]-E[X]^2$ の2通りで分散を求め、一致することを確認します。

import numpy as np

# 離散確率変数 X の値と確率
xs = np.array([1, 2, 4, 7, 9], dtype=float)
ps = np.array([0.10, 0.25, 0.30, 0.20, 0.15])

# 期待値 E[X]
mu = np.sum(xs * ps)

# 定義式: V[X] = Σ (x_i - μ)^2 p_i
var_def = np.sum((xs - mu) ** 2 * ps)

# 計算公式: V[X] = E[X^2] - (E[X])^2
ex2 = np.sum(xs ** 2 * ps)
var_formula = ex2 - mu ** 2

print(f"期待値 E[X]      = {mu:.4f}")
print(f"E[X^2]          = {ex2:.4f}")
print(f"分散(定義式)     = {var_def:.4f}")
print(f"分散(計算公式)   = {var_formula:.4f}")
print(f"標準偏差 σ       = {np.sqrt(var_def):.4f}")

実行すると次のような出力になります。

期待値 E[X]      = 4.5500
E[X^2]          = 27.8500
分散(定義式)     = 7.1475
分散(計算公式)   = 7.1475
標準偏差 σ       = 2.6735

定義式と計算公式がともに $7.1475$ となり、完全に一致しました。手計算では丸めて $7.15$ としていましたが、正確には $7.1475$ です。どちらの式を使っても同じ答えになることが確認できたので、以降は計算が楽な計算公式を安心して使えます。

V[aX+b] = a²V[X] を数値で確かめる

次に、一次変換の性質を乱数サンプルで検証します。$X$ を $2X + 4$ に変換し、分散が $4$ 倍($2^2$ 倍)になるかを見ます。

import numpy as np

rng = np.random.default_rng(0)
X = rng.normal(loc=3.0, scale=2.0, size=1_000_000)  # 真の分散 ≒ 4

a, b = 2.0, 4.0
Y = a * X + b

print(f"V[X]        = {X.var():.4f}")
print(f"V[2X+4]     = {Y.var():.4f}")
print(f"a^2 * V[X]  = {a**2 * X.var():.4f}")

出力例:

V[X]        = 3.9989
V[2X+4]     = 15.9955
a^2 * V[X]  = 15.9955

$V[2X+4]$ が $a^2 V[X] = 4 \times 3.9989$ にぴったり一致しました。平行移動 $+4$ がまったく分散に影響していない点も重要です。理論で導いた(12)式が、実データ(乱数)でも正しく成り立つことが確認できました。

独立和の加法性を確かめる

続いて、独立な $X, Y$ について $V[X+Y] = V[X] + V[Y]$ を確認します。

import numpy as np

rng = np.random.default_rng(1)
n = 1_000_000
X = rng.normal(0, 1.0, n)    # 分散 ≒ 1
Y = rng.normal(0, 1.5, n)    # 分散 ≒ 2.25
S = X + Y

print(f"V[X]            = {X.var():.4f}")
print(f"V[Y]            = {Y.var():.4f}")
print(f"V[X] + V[Y]     = {X.var() + Y.var():.4f}")
print(f"V[X+Y]          = {S.var():.4f}")

出力例:

V[X]            = 0.9997
V[Y]            = 2.2495
V[X] + V[Y]     = 3.2492
V[X+Y]          = 3.2480

$V[X+Y] \approx 3.248$ が $V[X] + V[Y] \approx 3.249$ にほぼ一致しています。独立な確率変数では分散が単純に足し算でつながる——(17)式が数値的にも裏付けられました。

標本分散の偏りと不偏分散を確かめる

最後に、$n$ で割る標本分散が真の分散を過小評価し、$n-1$ で割る不偏分散がそれを補正することを、多数回のシミュレーションで確認します。

import numpy as np

rng = np.random.default_rng(7)
true_var = 4.0
sd = np.sqrt(true_var)
n = 5            # 小標本ほど偏りが目立つ
trials = 100_000

biased, unbiased = [], []
for _ in range(trials):
    sample = rng.normal(0.0, sd, n)
    m = sample.mean()
    ss = np.sum((sample - m) ** 2)
    biased.append(ss / n)        # n で割る(標本分散)
    unbiased.append(ss / (n - 1))  # n-1 で割る(不偏分散)

biased = np.array(biased)
unbiased = np.array(unbiased)

print(f"真の分散              = {true_var:.4f}")
print(f"n で割った平均        = {biased.mean():.4f}")
print(f"n-1 で割った平均      = {unbiased.mean():.4f}")
print(f"理論値 (n-1)/n * σ^2 = {(n - 1) / n * true_var:.4f}")
# numpy の ddof 引数でも同じことができる
print(f"np.var(ddof=0) 期待  = 標本分散, np.var(ddof=1) 期待 = 不偏分散")

出力例:

真の分散              = 4.0000
n で割った平均        = 3.2010
n-1 で割った平均      = 4.0013
理論値 (n-1)/n * σ^2 = 3.2000

$n$ で割った推定値の平均は約 $3.20$ で、理論値 $\frac{n-1}{n}\sigma^2 = \frac{4}{5}\times 4 = 3.20$ にぴったり一致しています。つまり標本分散は系統的に真値より小さく出ます。一方、$n-1$ で割った不偏分散の平均は約 $4.00$ で、真の分散をきちんと言い当てています。(20)式・(21)式が示した「偏りと補正」が、シミュレーションで明確に確認できました。なお numpy では np.var(x, ddof=0) が標本分散、np.var(x, ddof=1) が不偏分散に対応します。

分布が違えば分散も違う

ここまでで分散の性質を一通り見てきました。最後に、「平均が同じでも分布の形が違えば分散はまるで違う」ことを確認しておきましょう。代表的な3つの連続分布を、平均をそろえて比較します。

平均をそろえた一様分布・正規分布・指数分布の密度を重ね、分散の違いを示した図

上の図は、いずれも平均が $5$ の3つの分布(一様分布 $U(0,10)$、正規分布、指数分布)を重ねたものです。一様分布の分散は $\frac{(b-a)^2}{12} = \frac{100}{12} \approx 8.33$、正規分布はそれに合わせて $8.33$、指数分布は平均の二乗に等しく $25$ です。平均が同じでも、指数分布のように右に長い裾を引く分布は分散が大きくなります。「分散は分布の形そのものを反映する」という事実が、はっきりと見て取れます。

質点と支点で分散を表現した力学的アナロジーの図。分散は平均まわりの慣性モーメント

もう一つ、分散の直感を深める力学的なアナロジーを示します。上の図では、確率変数の各値を「位置」、その確率を「質量」とみなし、平均を「支点」として置いています。このとき分散は、物理でいう慣性モーメント(支点まわりの回転しにくさ)に正確に対応します。質量(確率)が支点から遠くにあるほど、慣性モーメント=分散は大きくなります。「分散は平均まわりの慣性モーメントである」と覚えておくと、$(x-\mu)^2$ という二乗の重みが腑に落ちるはずです。この力学イメージは、期待値(中心)と分散(散らばり)の2つがそろって初めて確率分布の姿をおおまかに描ける、というこれまでの話を一枚に総括しています。

分散の応用先

分散は理論上の概念にとどまらず、さまざまな分野で実際の意思決定に使われます。代表的なものを挙げておきます。

  • 機械学習のバイアス・バリアンス分解 — モデルの予測誤差を「偏り(バイアス)」と「散らばり(バリアンス)」に分けることで、過学習・未学習を診断します。バリアンスが大きいモデルは訓練データに過剰適合しています。
  • 金融のリスク管理 — 資産収益率の分散(標準偏差)を「リスク」として定量化し、ポートフォリオを最適化します。同じ期待リターンなら分散の小さい資産が好まれます。
  • 品質管理(統計的工程管理) — 製品寸法のばらつきを分散・標準偏差で監視し、$\pm 3\sigma$ を管理限界とする管理図で異常を検出します。
  • 信号処理・通信 — ノイズの大きさを分散で表し、信号対雑音比(SNR)の評価に用います。

これらはいずれも「散らばりを一つの数値にまとめて意思決定に使う」という共通の発想に立っています。分散という土台があるからこそ、こうした応用が成り立っているわけです。

まとめ

本記事では、確率変数の分散について、直感から定義・導出・応用まで一通り解説しました。要点は次の通りです。

  • 分散 $V[X] = E[(X-\mu)^2]$ は、期待値の周りの散らばりを偏差の二乗の期待値で測った量である
  • 偏差をそのまま平均すると $0$ になるため、符号を消し外れ値を強調する二乗を使う
  • 計算公式 $V[X] = E[X^2] – (E[X])^2$ を使うと計算が楽になる
  • $V[aX+b] = a^2 V[X]$(平行移動は無効、定数倍は二乗で効く)、独立なら $V[X+Y]=V[X]+V[Y]$
  • 標準偏差 $\sigma = \sqrt{V[X]}$ は元の単位での散らばりを表し、解釈しやすい
  • データから推定するときは偏りを補正する不偏分散($n-1$ で割る)を使う
  • チェビシェフの不等式により、分布の形を知らなくても分散だけで裾確率を抑えられる

分散と期待値は、これから学ぶあらゆる確率分布・統計手法の土台になります。次のステップとして、2つの確率変数の関係を測る共分散、標本平均のばらつきを表す標準誤差、$n-1$ で割る理由の本格的な導出などに進むと、理解がさらに立体的になります。

次に読むべき記事として、以下を参考にしてください。