はじめに
最近、機械学習やデータ解析をしているひと達のツイッター界隈で「不偏分散はなぜで割るのか」という問いが話題になっていた。私もこれまでそういうものだという認識でスルーしていたので、今回は厳密にその理由を示したい。
言葉の定義
対象とするサンプルの全体集合を母集団と呼ぶ。例えば対象がCCTの社員の身長であれば全社員の身長が母集団である。母集団の全サンプルから計算された平均値を母平均()、母集団の全サンプルから計算された分散を母分散()と言う。1つのサンプルをで書くことにすれば次式が成り立つ。
ここで、は母集団における平均操作であり、期待値と呼ばれる(後述)。
一般に、母集団に含まれる全サンプルを考えることはできないので、ランダムにサンプルを取り出すことになる。いま、個のサンプルを取り出す場合を考え、各サンプルをと書くことにすると
を定義することができる。が標本平均、が標本分散、が不偏分散(不偏標本分散)である。不偏分散が重要な理由は次式が成り立つためである。
(1)
つまり、不偏分散の期待値をとると母分散になるため、不偏分散は重要なのである。
証明
ここでは式(1)を示す。
ここで期待値内の第2項に
を用いた。さらに計算を進めると
となる。ここで母分散が
で定義されているので
(2)
が成り立つから
を得る。
補足
式(2)の右辺2行目から3行目への変換で、和の二乗を二乗の和に変換している。これが成り立つ理由は以下のとおりである。
ここで
が成り立つので
となる。2項以上の場合も同じである。交差項は常にゼロである。
最後に、期待値では何を計算しているのかについて触れておく。先に述べたように期待値は、母集団の全サンプルに対する平均値である。いまサンプルが確率の割合で実現するとき量の平均値は
で計算される。は確率であるから
が成り立っていることに注意する。今回の説明では、母集団からランダムに取り出したサンプルに番号をつけた()。期待値を計算するときは、次のように個々のサンプル変数が積分変数になる。
すなわち
が成り立つ。
Pythonライブラリの分散
各種Pythonライブラリが提供する分散が、標本分散なのか不偏分散なのかは注意が必要である(下の表を参照)。
まとめ
今回は不偏分散について取り上げ、その期待値が母分散と一致することを示した。また、Pythonの各種ライブラリが提供する分散が、標本分散なのか不偏分散なのか関数名だけからは分からないことにも触れた。
ところで、不偏分散の英語表記はunbiased varianceである。標本分散の期待値は母分散にならない(バイアスがかかっている)が、不偏分散の期待値は母分散になる(バイアスがかかっていない)、という意味のようだ(多分)。