【統計の初歩の初歩】平均・偏差・分散(コードつき)

統計のことについて少し勉強はしたものの,説明しろと言われると何も説明できないなーと思い,少し復習がてら記事を書いてみる.

統計とか機械学習とか興味あったりするんだけど触れる機会もないのでね.初歩初歩から少しづつ時間あるときにでも殴り書きしていきます.

コードもちょいちょい書いていますが,Javaベースで書いていきます.

特に実行などはせず直接書いちゃってるのでもし参考にする方いたら間違っているかもしれないのでよろしくです.

まずは多変量統計から.

平均とは何か

まあわからない人もいないとは思うけれど,一応書いておきます。

変量x平均値とは変量の値の総和をデータ数で割ったもの.

データ\(X = \{x_1,x_2,…,x_n \} \)に対しての平均は\(\overline{x}\)とすると,以下のように表すことができる。

$$ \overline{x} = \frac{x_1+x_2+…+x_n}{n} = \frac{1}{n} \sum^n_{i=1}x_i$$


float ave(float[] X){
	int n = X.length ;
	int sum = 0 ;
	for(int i = 0 ; i < n ; i++){
		sum += x[i] ;
	}
	return sum/n ;
}

偏差,偏差平方和とは何か

偏差とは,平均値からの差を表すもので偏差 = \_(x_i – \overline{x} \)となる.いわゆる『ばらつき』ってやつ.

仮に自分のテストの点数が80点。平均点が70点の場合は、10となる。これを偏差と呼ぶ。

でもこれじゃあ偏差を全て足し合わせるとプラスとマイナスが相殺しあって、値は0になってしまいますよーということで、それぞれの偏差を2乗する。

これを偏差平方和と呼ぶ.偏差平方和をQとすると,以下の式になる.

$$ Q = (x_1 – \overline{x})^2 + (x_2 – \overline{x})^2 + … + (x_n – \overline{x})^2 $$

Qが大きければ大きいほど,ばらつきが大きいデータとなる.


float deviationSum(float ave, float[] X){
	float sum = 0 ;
	for(int i = 0 ; i < X.length ; i++){
		sum += X[i] - ave ;
	}
	return sum ;
}

分散とは何か

偏差平方和がばらつきを示すことはわかったけれど、データ数に比例して大きくなるの当たり前じゃん?ってなるかと思います。きっと。

データ数10個のデータの偏差平方和とデータ数100万個の偏差平方和だとほぼほぼ100万個の偏差平方和の方が大きくなる。

そこで、ばらつきの平均を取ったらデータ数に関係なく、ばらつきが見れますよねってことでデータ数nでわる。

それが分散.表記は一般的に\(s^2\)。

$$ s^2 = \frac{Q}{n} = \frac{(x_1 – \overline{x})^2 + (x_2 – \overline{x})^2 + … + (x_n – \overline{x})^2}{n} $$

分散の表記法が\(s^2\)と書きましたが、変量\(e^2\)の分散を表現しようとしたら、\(s^2_{e_x}\)となり、読みにくいので、

varianceのVを使って\(V(x)\)や,\(V(e_x)\)と表すらしい。まあ関数として考えれば当たり前の表記ですね

コードは偏差平方和をデータ数nで割っているだけなので省略。

標準偏差とは何か

分散が今のままだと2乗されたまんまなので、平方を取ろうということ。

例えば体重のデータがあったとして、分散が87キロとか言われても「え?」となってしまうので、単位を戻してあげよう的なイメージ。

標準偏差をsとすると、以下の式になる

$$s = \sqrt{s^2} =\sqrt{V(x)} $$

こちらもコードは省略。

 

以上!