【初心者でも簡単】分散の求め方をわかりやすく解説|手計算・Excel・Pythonにも対応
「分散は公式だけ覚えたのに計算になるとフリーズする……」
そんな悩みを解決すべく、この記事では高校数学から実務のデータ解析まで役立つ分散の求め方を、つまずきポイントを先回りして解説します。
途中でExcelとPythonを使った時短テクニック、丸め誤差対策やロバスト統計の話題も織り交ぜるので、ぜひ最後までお付き合いください。
分散とは?「ばらつき」を数字で可視化する指標
分散は、データが平均値からどれほど散らばっているかを示す統計量です。各データから平均を引いた偏差を2乗して平均した値で、単位は元データの2乗になります。
この“単位が違う”点が「直感的に捉えにくい」という弱点で、平方根を取った標準偏差がよく使われる理由でもあります。
実際、分散そのものは直接的な比較や現場での説明にはやや不向きですが、標準偏差に変換すれば元データと同じ単位となり、分かりやすい形で“ばらつき”を伝えることができます。
とはいえ理論的な証明や回帰分析の式展開では分散が主役になる場面も多いため、まずは定義をしっかり押さえましょう。
参考:Investopedia
母分散と標本分散(不偏分散)の違い
母分散(population variance, σ²)は母集団全体の真のばらつき、標本分散(unbiased sample variance, s²)は抽出したデータから母分散を推定する量です。
標本分散では除数をn−1にする自由度補正で過小評価を防ぎます。サンプルサイズが大きいほどnとn−1の差は1%未満になり、実務影響は小さくなります。
ExcelではVAR.P
(母分散)とVAR.S
(標本分散)が推奨で、2007以前との互換のためVARP
/VAR
も残っています。
Pythonのnumpy
はddof
を0と1で切り替えるだけです。
項目 | 母分散 σ² | 標本分散 s²(不偏) |
---|---|---|
対象 | 母集団すべて | 抽出した標本 |
除数 | n | n−1 |
Excel推奨関数 | VAR.P | VAR.S |
Excel旧関数 | VARP/VARPA | VAR/VARA |
Python(NumPy) | np.var(a,ddof=0) | np.var(a,ddof=1) |
分散を手計算する4ステップ
公式を丸暗記するより「平均→偏差→偏差²→平均」の流れを体で覚えるとスムーズです。以下の4ステップを紙とペンで試してみましょう。
ステップ1:平均を求める
データの総和をnで割り、平均値を算出します。
ステップ2:偏差を計算する
各データから平均を引き、偏差を一覧にします。
ステップ3:偏差を2乗する
偏差を2乗し、負の値を排除します。
ステップ4:偏差二乗和を平均する
2乗した偏差を合計後、母分散ならn、標本分散ならn−1で割ります。
ミニ計算例:{2,4,6,8}
平均は5、偏差は{-3,-1,1,3}、偏差²は{9,1,1,9}、合計20。母分散=20/4=5、標本分散=20/3≈6.67です。
ショートカット公式:Σx²⁄n − (Σx⁄n)²
母分散ならσ² = Σx²/n − (Σx/n)²
、標本分散ならs² = [Σx² − n(平均)²]/(n−1)
で計算できます。
値のスケールが極端に異なると(Σx)²が桁あふれし丸め誤差が大きくなるため、①平均を引いてから2乗和を取るか、②逐次計算アルゴリズム(Welford法など)を使うと安全です。
Welford法で逐次計算(プログラマ向け)
新しい値xᵢを読み込むたびに平均と二乗和を更新する再帰式で、1パス&定常メモリで不偏分散まで求められます。ストリーム処理やIoTセンサーのリアルタイム集計に重宝します。
【Welford法のPython実装例】
def welford_variance(data):
n = 0
mean = 0
M2 = 0
for x in data:
n += 1
delta = x - mean
mean += delta / n
delta2 = x - mean
M2 += delta * delta2
return M2 / (n - 1) if n > 1 else 0
※for文でストリーミングデータにも対応できます。
Excelで分散を一瞬で出す方法
Excelでは母分散なら=VAR.P(範囲)
、標本分散なら=VAR.S(範囲)
と入力すれば完了。Excel 2010以降推奨で、2007以前との互換でVARP
/VAR
が残ります。
さらに分析ツールキットを使えば分散・標準偏差・中央値などをまとめて出力可能。Windows版は[ファイル]→[オプション]→[アドイン]→[Excelアドイン]で「分析ツール」を有効化し、[データ]タブの[データ分析]から呼び出します。Office for Macは[ツール]→[Excelアドイン]で同様にONにできます。
Python×NumPyで分散を高速計算
大量データはコードで自動化するのがベスト。NumPyならnp.var(a,ddof=1,dtype=np.float64)
と書けば不偏分散が得られ、dtype=float64
を明示するとオーバーフローを抑制できます。
PandasもSeries/DataFrameに.var(ddof=1)
メソッドを備え、統計列や複数の列(DataFrame)を一括計算できます。
たとえば、df.var(ddof=1)
とすれば、全カラムの分散を一度に求められるため、実務やビッグデータの分析でも役立ちます。
Jupyter Notebookでmatplotlib
と併用すればグラフ付きレポートも一発です。
分散を使った応用例と注意点
株式リスク管理では分散が大きい銘柄は変動が激しく、共分散行列で資産間の相関を考慮するとポートフォリオ全体のリスク最小化が可能です。
製造業の「シックスシグマ」では工程能力指数(Cp,Cpk)をチェックする際に標準偏差を用います。
ただし外れ値が多いと分散は急増するため、IQR(四分位範囲)や中央値と併用するのがロバストな解析です。
この「ロバスト(robust)」という言葉は“外れ値に強い”という意味で、外れ値が混ざっても指標が大きく変化しない性質を指します。
実際のデータ分析では、分散や標準偏差だけでなくロバストな指標も一緒に確認することで、より正確な傾向把握ができます。
例えばデータ{5,5,5,5,50}は外れ値50で母分散504、生データのIQRは0→45と比較的穏やかです。
よくある質問(FAQ)
- 分散がゼロになるのはどんなとき?
-
すべてのデータが同じ値の場合です。ばらつきが存在しないため、偏差も0になります。
- 分散と標準偏差、どちらを報告すれば良い?
-
単位を合わせて直感的に伝えたい場面では標準偏差が便利です。理論検証や分散分析など式展開では分散が主役になることが多いです。
- 負の分散はあり得る?
-
ありません。偏差を2乗しているため、理論上マイナスにはなりません。
学習リンク集
まとめ:分散は“ばらつき”を掴む第一歩
分散は「平均からの距離を2乗して平均する」だけと理解できれば計算自体はシンプルです。
手計算4ステップで基礎を固め、ExcelやPythonの関数、Welford法のようなアルゴリズムを活用すれば、大量データでも安全かつ高速に結果が得られます。
リスク評価や品質管理の現場で、標準偏差や共分散と合わせて使いこなしてみてください。