ITの隊長のブログ

ITの隊長のブログです。Pythonを使って仕事しています。最近は機械学習をさわりはじめたお(^ω^ = ^ω^)

平均と分散と標準偏差

スポンサードリンク

統計検定3級の問題といてみた。点数ひくかったので、復習中。

データの用意

>>> import numpy as np
>>> a = np.random.randint(0, 100, (100,))

平均

全部の数字を足し合わせて、数字の数で割った値.


\displaystyle \overline{x} = \frac{1}{n} \sum_{i=1}^{n} x_{i}

>>> a.mean()
46.100000000000001

>>> np.sum(a) / len(a)
46.100000000000001

分散

各数値と平均値との距離のこと。データの散らばり具合を確認することができる。

全部の数字から平均で引いて2乗して足し合わせる. なんで2乗する必要があるの? -> 引いたときに負の値になる場合があるので、足し合わせた場合0になる場合があるから2乗して負の値を正の値にする。


\displaystyle x = \frac{1}{n} \sum_{i=1}^{n} (x_i - \overline{x})^{2}

>>> a.var()  # numpyだったら簡単に求められる
1007.15

>>> # これを普通に計算すると下記
>>> np.sum((a - a.mean())**2) / len(a)
1007.15

標準偏差

分散でデータの散らばり具合確認できたけど、分散がxxです!って言われても2乗しているからピンとこない。単位を元の数値と一緒にしたいので、分散の平方根を取る。これが標準偏差


\displaystyle s = \sqrt{s^{2}}

>>> a.std()
31.735626667831848

>>> np.sqrt(np.sum((a - a.mean())**2) / len(a))
31.735626667831848

偏差値

ランダムで出した値を100人のクラスのテストの結果だったとする。自分がこのテストを解いたところ60点だった。


\displaystyle T_{i} = 10 \frac{x - \overline{x}}{s} + 50

これを解くと、下のような結果になる。

>>> 10 * (60 - a.mean()) / a.std() + 50
54.379935567520853

というわけで、偏差値は54.3となった。もし平均点と同じの場合は偏差値は50となる。偏差値が50なら平均ってこと(って理解でいいよね?)