統計検定3級の問題といてみた。点数ひくかったので、復習中。
データの用意
>>> import numpy as np >>> a = np.random.randint(0, 100, (100,))
平均
全部の数字を足し合わせて、数字の数で割った値.
>>> a.mean() 46.100000000000001 >>> np.sum(a) / len(a) 46.100000000000001
分散
各数値と平均値との距離のこと。データの散らばり具合を確認することができる。
全部の数字から平均で引いて2乗して足し合わせる. なんで2乗する必要があるの? -> 引いたときに負の値になる場合があるので、足し合わせた場合0になる場合があるから2乗して負の値を正の値にする。
>>> a.var() # numpyだったら簡単に求められる 1007.15 >>> # これを普通に計算すると下記 >>> np.sum((a - a.mean())**2) / len(a) 1007.15
標準偏差
分散でデータの散らばり具合確認できたけど、分散がxxです!って言われても2乗しているからピンとこない。単位を元の数値と一緒にしたいので、分散の平方根を取る。これが標準偏差。
>>> a.std() 31.735626667831848 >>> np.sqrt(np.sum((a - a.mean())**2) / len(a)) 31.735626667831848
偏差値
ランダムで出した値を100人のクラスのテストの結果だったとする。自分がこのテストを解いたところ60点だった。
これを解くと、下のような結果になる。
>>> 10 * (60 - a.mean()) / a.std() + 50 54.379935567520853
というわけで、偏差値は54.3となった。もし平均点と同じの場合は偏差値は50となる。偏差値が50なら平均ってこと(って理解でいいよね?)