はじめに
大学の統計の授業で分散はn-1で割ると習いました。(nはデータ点数)
なぜnではなくn-1で割るのでしょうか?
この記事ではn-1で割る理由、実際のデータ解析での考え方、NumPyを使って求めるときにはどうしたらいいかまで解説します。
背景知識
基本的な知識と考え方を整理しておきます。
頻度主義
統計にはいくつかの流儀があり、一般的に知られているのは頻度主義です。
これは、ある事象の確率を求めるときに同じ実験や試行を無限に繰り返し、その事象が起きる長期的な割合(頻度)とします。
コインの表がでる確率を求めるために、何万回もコインを投げるというイメージです。
母集団
今調べている個体やデータの全てを表します。
しかし、ある測定値の母集団を求めるのは現実的には不可能です。
測定をやるほどデータが増えていくからです。
標本集団
調べたい全体(母集団)の中から、調査のために選びだされた一部グループのことです。
例えば、製品を100万個製造しているとして、そのうち100個を測定したのであれば、その100個のデータが標本になります。
分散を求めるという時、何をしたいのか?
分散を求めるという時、知りたいのは母集団の分散である母分散です。
しかし、母集団を直接求めることはできません。
そこで、標本集団(取得したデータ)から母分散を推定しよう、と考えます。
つまり、
取得したデータから素直に分散を求めるのでは不十分で、できるだけ母分散に近い値となるようにしたいのです。

なぜn-1で割るのか?2段階で説明
理由は2段階で説明します。
第一段階は自由度という言葉を使ったやや感覚的な理解、
第二段階は不偏性に注目して数式を使って説明します。
第一段階だけでも理解する上で事足りることが殆どです。
まず導入する文字の説明をしておきます。
取得したデータはn点あって、その集まりを$x=x_1,x_2,,,x_n $とします。
標本平均は$\overline{x} = \frac{x_1+x_2…+x_n}{n}$で求めます。
第1段:自由度から説明する
標本分散は標本平均との差の2乗を足し合わせる必要があります。
そのため、標本平均を最初に求める必要があります。
ここで重要なのが、標本平均を求めることで、データには1つの制約が生じるということです。
標本平均$\overline{x}$はある一つの値です。
定義から、以下が成り立ちます。
$$
x_1+x_2…+x_n =n\overline{x}
$$
これはデータ点に対して制約を付けていると考えられます。
例えばデータ点が1番目からn-1番目まで分かってしまえば、n点目の値は求められます。
これは実質的にデータ点の自由度がn点でなく、n-1点に減っていると言えます。
つまり標本平均を求めることでデータの自由度が減っているため、分散を求めるときはn-1で割るのです。
このような説明で満足できない方向けに次節で数学的に説明します。
第2段:不偏性から説明する
標本(データ)から求めた分散を標本分散と呼びます。
標本分散は、母分散の推定値で以下の2点が求められます。
- 一致性
データ点を無限に増やした時に、標本分散が母分散に収束することです。
nで割るかn-1で割るかの違いなので、n→∞としたときに一致するのは自明としていいでしょう。 - 不偏性
標本分散の期待値が母分散に一致することです。
n-1で割ると不偏性を満たすことができます。
不偏性の証明
(ここから式が続くため、初回は飛ばしてしまっても良いと思います)
標本分散を$s^2$、母分散を$\sigma^2$、母平均を$\mu$とします。
不偏性を示すには、定義から下記を示せばよいことになります。
$$
E[s^2]=\sigma^2
$$
次の恒等式を考えます。
$$
x_i -\overline{x} = (x_i- \mu)-(\overline{x}-\mu)
$$
2乗して両辺の和を取ります。
$$
\sum_{n=1}^n(x_i-\overline{x})^2 =\sum_{n=1}^n \lbrace(x_i-\mu)-(\overline{x}-\mu)\rbrace^2
$$
$$
=\sum_{i=1}^n(x_i-\mu)^2-2(\overline{x}-\mu)\sum_{i=1}^n(x_i-\mu)+n(\overline{x}-\mu)^2
$$
ここで
$$
\sum_{i=1}^n(x_i-\mu)= n(\overline{x}-\mu)^2
$$
なので
$$
\sum_{i=1}^n (x_i-\overline{x})^2=\sum_{i=1}^n(x_i-\mu)^2+n(\overline{x}-\mu)^2
$$
両辺の期待値を取ります。
$$
E[\sum_{i=1}^n (x_i-\overline{x})^2]=E[\sum_{i=1}^n(x_i-\mu)^2]-nE[(\overline{x}-\mu)^2]
$$
ここで、
$$
E[(x_i-\mu)^2]=\sigma^2
$$
なので両辺の和をとって
$$
E[\sum_{i=1}^n(x_i-\mu)^2]=n\sigma^2
$$
更に、標本平均の分散は
$$
Var(\overline{x})=\frac{\sigma^2}{n}
$$
よって、
$$
E[(\overline{x}-\mu)^2]=\frac{\sigma^2}{n}
$$
以上をまとめて、
$$
E[\sum_{i=1}^n(x_i-\overline{x})^2]= n\sigma^2-n\frac{\sigma^2}{n}
$$
$\sigma^2$を左辺に持ってくると
$$
\sigma^2 = E[\frac{1}{n-1}\sum_{i=1}^n(x_i-\overline{x})^2]
$$
$E$の引数が、不偏性を満たしています。
よって、標本分散$s^2$を下記とすれば不偏性を満たします。
$$
s^2 = \frac{1}{n-1}\sum_{i=1}^n(x_i-\overline{x})^2
$$
数式が長くて振り落とされがちですが、ここでのポイントは母平均と標本平均を区別している点です。
この点を意識すれば、第一段の説明とリンクしていることが理解できるはずです。
実データ解析での扱い
NumPyでの求め方
NumPyのnp.var()で分散を求められます。
import numpy as np
#ダミーデータ
x = np.array([4,6,2,7,8])
#分散
variance = np.var(x)これで求められるのは、nで割った母分散(に相当するもの)です。
標本分散と母分散を切り替えるにはddof引数を使います。
defaultではddof=0で母分散(に相当するもの)が求まり、ddof=1とすれば標本分散が求まります。
#母分散
print(np.var(x,ddof=0))
#標本分散
print(np.var(x,ddof=1))4.64
5.8
確かにn-1で割る標本分散の方が値が大きくなっていますね。
実データ解析での扱い
母分散と標本分散の意味上の違いは前述のとおりですが、値の違いはnで割るかn-1で割るかの違いです。
例えばデータ点が10点であれば、違いは10%ほどになるので無視できないですが、
データ点が100点あれば、その違いは1%程度です。
状況次第ですが、データ点数が100点くらいになってくると母分散と標本分散の違いは考慮しなくていいいケースが殆どです。
母集団のデータが集まるようなケースはかなり稀で、n-1で割ると機械的に覚えてしまって困ることはあまりないと思いますし、データ点数が多い場合はnで割るかn-1で割るかの区別すら不要なのです。
まとめ
本記事では、標本分散をなぜ (n-1) で割るのかについて解説しました。
- 母集団の分散を知りたい場合、取得した標本から母分散を推定する
- 標本平均を使うことでデータには1つの制約が生じ、標本分散の自由度は (n-1) になる
- (n-1) で割った標本分散は、不偏性を満たす
- NumPyでは
np.var()の ddof引数を1と指定することで、不偏分散を求められる
頻度主義的な統計学的で、標本から母分散を推定するために (n-1) で割ることに意味があります。
一方で、データ点数が十分多ければ(n) と(n-1)で割った場合との数値的な差は小さく、無視できるケースが多いです。
あとがき
統計にはいくつか流儀があるという話をしました。その一つにはベイズ統計が挙げられます。
ベイズ統計では母集団を考えませんし、不偏性のような概念はありません。
また、最近流行っている機械学習や深層学習においても不偏性を考えることはまずありません。
頻度主義は同じデータを繰り返し取れることを前提にしていますが、現実の状況ではそうでないことが殆どです。
更に母平均のような統計量は、厳密に定まったただ一つの値が存在すると考えています。現実世界では物事は変化していくので統計量が一つの値で固定されている、と考えるのは理想化が過ぎると感じケースも多々あります。
統計にはそれぞれの流儀や思想があるので、場合に応じていくつかの統計手法から適切な手法を用いる必要があります。本記事で解説した不偏性は流儀、考え方の一つでしかないのです。
参考文献
スタンダードな統計の教科書です。永田先生は他にも教科書を執筆されていますが、どれも記述が簡潔でわかりやすい印象があります。この本も他の統計の教科書よりもとっつきやすいと思います。
このブログではデータ解析の際に、統計でモヤモヤする項目について解説しています。




コメント