平均だけでは分からないこと
次の2つのグループのテストの点数を見てください。どちらも平均点は70点です。
- グループA: 68, 70, 72, 69, 71 (平均70)
- グループB: 20, 100, 50, 90, 90 (平均70)
平均だけを見ると同じ「70点」ですが、グループAは全員が70点前後に集まっているのに対し、グループBは大きくばらついています。これは前のレッスンで散布図の「点のばらつき具合」を見たのと同じ発想で、平均だけでなく、データの散らばり具合(ばらつき)を見ることが重要だということです。
このばらつきを数値で表すための指標が、分散 と 標準偏差 です。
- 分散:データが平均からどれくらい離れているかを表す数値(ばらつきが大きいほど大きな値になる)
- 標準偏差:分散の平方根をとったもの(元のデータと同じ単位で比較しやすい)
次のスライドで、実際にどう計算するのかを見ていきましょう。
分散・標準偏差の計算
分散は、次のような手順で計算します。
- それぞれのデータから、平均を引く(「平均からどれだけ離れているか」を求める)
- その差を2乗する(2乗する理由:プラスとマイナスがそのままだと足し合わせたときに打ち消し合ってしまうため)
- 2乗した差の平均をとる
数式で書くと、次のようになります。
分散=n1i=1∑n(xi−xˉ)2
xˉ(エックスバー)は平均、nはデータの個数を表します。xi の右下の i は「何番目のデータか」を表す番号で、x1 なら1番目のデータです。∑(シグマ)は「全部を足し合わせる」という記号で、∑i=1n は「i を1から n まで1つずつ変えながら、右側の式をすべて足す」と読みます。
例えば、グループAの5人(68, 70, 72, 69, 71、平均70)なら、次の計算になります。
分散=5(68−70)2+(70−70)2+(72−70)2+(69−70)2+(71−70)2=54+0+4+1+1=2
難しく見えるかもしれませんが、やっていることは「平均との差を2乗して、平均する」という、先ほど説明した3ステップそのものです。
標準偏差は、この分散の平方根(√)をとったものです。2乗した影響を戻すことで、元のデータと同じ単位で「だいたいどれくらいばらついているか」を解釈しやすくなります。
Pythonでは、NumPyを使ってどちらも簡単に計算できます。
import numpy as np
scores = np.array([68, 70, 72, 69, 71])
scores.var() # 分散
scores.std() # 標準偏差
この「平均との差を2乗して平均する」という考え方は、実は後の単元で学ぶ損失関数(モデルの予測がどれくらい間違っているかを測る指標)の計算方法と、非常によく似ています。ここで計算の感覚を掴んでおくと、後の理解がスムーズになります。