レッスン2 / 2問目

『標準偏差と分散』

このレッスンでは標準偏差と分散を求める関数について学習していきます。標準偏差と分散を求めるには以下の関数を使用します。

関数説明
np.var分散
np.std標準偏差

これらについて下記内容を見ていきます。

  1. 分散とは
  2. 標準偏差とは
  3. np.var
  4. np.std

では順番に見ていきましょう。

分散とは

まずは分散についてです。分散とはデータの散らばり度合を表すための指標です。例えば以下のように、あるクラスにおいてテストを行った際の生徒ごとの点数のデータがあったとします。

75 70 65 60 55

分散を求めるにはまずこのデータの平均を求めます。 (75 + 70 + 65 + 60 + 55) ÷ 5 を計算するとするとこのデータの平均値は65点であることがわかります。

この平均値65点から点数が離れたデータが多いほど散らばり度合が大きいということになります。逆に平均値65点に近いデータが多ければ散らばり度合が小さいということになります。

つまり分散とはあるデータにおける平均値から見た各データの散らばり度合であるといえます。

例えば以下のデータは点数が60点台に集中しているため分散が小さいといえます。

68 66 65 64 62

一方以下のデータは点数が90点台から30点台の範囲で散らばっているため上記よりも分散が大きいといえます。

92 85 65 45 38

分散を使うメリット

ではここからは分散を使うとどのようなことがわかるのかを見ていきましょう。

統計において身近で最もよく使われるのは平均です。テストの点数においても「平均点」という単語が存在するぐらい平均は標準的な指標です。
しかし、平均だけではそのデータの中身を上手く把握できない場合があります。例えば上記で示したテストの点数のデータがそれに該当します。
実はこれらのデータは全く異なる内容であるにも関わらず平均は同じ値となります。以下は先ほどのテストの点数のデータです。

テストの点数が60点台に集中している場合のデータ

68 66 65 64 62 (68 + 66 + 65 + 64 + 62) ÷ 5 = 65

テストの点数が90点台から30点台の範囲で散らばっているデータ

92 85 65 45 38 (92 + 85 + 65 + 45 + 38) ÷ 5 = 65

このようにデータの平均だけでは数値がどのように散布しているのかまでは把握することができませんが、分散を使うとデータの詳細をさらに把握することができます。
例えば上記の例では一方は平均的な学力の生徒が多いが、一方では学力の高い生徒と学力の低い生徒が混在するクラスであるということがわかります。

分散の計算方法

ではここからは分散の計算方法について見ていきましょう。分散は以下の手順で計算することができます。

1. (各データ - 平均値)² を全て足した数を求める。
2. 1で求めた数値をデータの個数で除算する。

では上記で見た「テストの点数が90点台から30点台の範囲で散らばっているデータ」の分散を求めてみましょう。

92 85 65 45 38

このデータの平均値は65点です。まずは「(各データ - 平均値)² を全て足した数」を求めます。

92-65 2 + 85-65 2 + 65-65 2 + 45-65 2 + 38-65 2 =2258

この式を計算すると合計は2,258となります。

この2258をデータの個数で割ると分散を求めることができます。

2258÷5=451.6

分散は451.6となります。

なぜ2乗するのか

上記の分散を求める計算において以下の部分でなぜ2乗する必要があるのかを説明します。

92-65 2 + 85-65 2 + 65-65 2 + 45-65 2 + 38-65 2 =2258

結論から言うと、二乗しなかった場合には平均から見た各値との誤差がプラス方向とマイナス方向で相殺されてしまうためです。つまり負数を整数に変換するために二乗しているといわけです。

例えば上記の式を二乗しなかった場合を見てみましょう。

92-65 + 85-65 + 65-65 + 45-65 + 38-65 =0

計算結果は0になりました。このように二乗しなかった場合には合計の値が相殺されてしまい、ばらつき度合を求めることができません。
そのため2乗することにより値を整数に揃えて計算しているというわけです。

標準偏差とは

ここまでは分散について説明しましたが、標準偏差については分散と同じ指標であるとお考えください。
分散の平方根が標準偏差となります。

標準偏差=分散

これまで見てきた分散は二乗した値であったため実際のばらつきの値よりもかなり大きな数値となっていました。これを二乗する前の値に直して、わかりやすくしたものが標準偏差です。

上記で求めた分散は451.6でしたが、これを標準偏差にすると21となります。

451.6=21

451.6よりも21の方がどれぐらいのばらつき度合があるのか直感的にわかりやすくなったと思います。

var

ではここからはNumPyの関数を使って分散と標準偏差を求める方法を見ていきましょう。

まずは分散ですが、分散を求めるにはnp.var()を使います。以下は先ほどの分散の例題をNumPyで実装したものになります。np.var()の引数に配列を渡すと分散が求まります。

  1. arr = np.array([92,85,65,45,38])
  2. var = np.var(arr)
  3. print(var)
451.6    # 分散

このようにNumPyの関数を使えば簡単に配列の分散を求めることができます。ちなみにvarはvariance(分散)の略です。

std

では次は標準偏差です。

  1. arr = np.array([92,85,65,45,38])
  2. std = np.std(arr)
  3. print(std)
21.250882334623192    # 標準偏差

標準偏差もNumPyの関数を使うことで簡単に求めることができました。
ちなみにstdは standard deviation(標準偏差)の略です。

まとめ

ではこのレッスンの内容を以下にまとめます。

  • 標準偏差・分散はデータのばらつき度合を表す指標である
  • 分散の平方根が標準偏差となる
  • 分散はnp.varで求めることができる
  • 標準偏差はnp.stdで求めることができる

では演習課題にチャレンジしましょう。

Lesson1

配列arrの分散を出力してください。

Lesson2

配列arrの標準偏差を出力してください。

Last updated:2019/12/29

551.2
23.477648945326703
  1. import numpy as np

  2. arr = np.array([92,84,66,42,31])

  3. # 1 配列arrの分散を出力してください。

  4. var = np.var(arr)
  5. print(var)

  6. # 2 配列arrの標準偏差を出力してください。

  7. std = np.std(arr)
  8. print(std)
main.py
設定
g
n
i
d
a
o
L