【R】-基本統計- 分散・標準偏差

スポンサーリンク

はじめに

こんにちは!ひらちんです!Rを使った統計について自分の勉強も兼ねて記事にしています。

今回は、分散と標準偏差の計算についてです!

スポンサーリンク

分散

統計では超重要な指標の分散(不偏分散)は、 var関数 で計算出来ます。

分散は、データのばらつきを表す指標で、値(x)から平均xの平均(xバー)を引いたものを2乗して足し合わせたもの(偏差平方和)をデータ数で割ったものになります。

ですが、分散には計算方法が2種類あって、母集団すべてのデータを対象としている場合(母分散という)は、単純にそのデータ数(n)で割れば良いのですが、標本(サンプル)から母集団の分散の推定値を計算する場合は、「データ数-1」で割る不偏分散を利用します。

※ややこしい話ですが、サンプルだけどサンプル全体の分散を計算している場合はデータ数(n)で割って、標本分散を計算している場合もあります。

Rの var関数では不偏分散を計算することになります。

つまり、偏差平方和をn-1で割ってるぞってことです。

【偏差平方和

【母分散】

【不偏分散】

数式で言うとこんな感じですね。

記号は、「σ^2」が母分散、「s^2」が不偏分散としていますが、本やサイトによっては「s^2」が標本分散、「u^2」が不偏分散となっている場合もありますので、きちんと文脈でどちらなのか確認したほうが良いと思います(^o^)


ちなみにExcelだと、それぞれの関数が用意されていますね。

母分散(nで割ってる) =VAR.P(データの範囲)
不偏分散(n-1で割ってる) =VAR.S(データの範囲)

サンプルで計算する

もう少し具体的にデータを使って確認しましょう!

例えば、こんなデータがあったとします。

名前身長
Aさん171cm
Bさん177cm
Cさん169cm
Dさん165cm
Eさん172cm
Fさん174cm
Gさん188cm
Hさん190cm
Iさん175cm
Jさん169cm

まずは、これを母集団全体とみなして母分散を計算します。

平均(xバー) = (171+177+169+165+172+174+188+190+175+169)/10 = 175

データ数は10なので10で割ります。

偏差平方和 = (171-175)^2 + (177-175)^2 + (169-175)^2 + (165-175)^2 + (172-175)^2 + (174-175)^2 + (188-175)^2 + (190-175)^2 + (175-175)^2 + (169-175)^2 = 596

母分散は、偏差平方和をデータ数で割ります。

母分散 = 596 ÷ 10 = 59.6

こうなりますね。

次に、母集団から抽出したサンプルとみなして、母集団の分散の推定値の不偏分散を計算します。

不偏分散は、偏差平方和をデータ数-1で割ります。

不偏分散 = 596 ÷ (10-1) = 66.222

こうなります。

Rでの不偏分散の計算 var関数

では、先程のデータをRで計算してみましょう!

Rで不偏分散を計算するには、 var関数を使うんでしたね。

先程のサンプルと同じデータのベクトルを作ります。

x <- c(171, 177, 169, 165, 172, 174, 188, 190, 175, 169)

こいつを、 var関数の引数に入れるだけ

var(x)

さっき計算したのと同じになりましたね(^o^)

スポンサーリンク

標準偏差

分散は、値xからxの平均(xバー)を引いたものを2乗して足し合わせていましたね。

2乗しちゃってるので、感覚値がつかみにくいですよね?

例えば、身長だと通常cmが単位ですが、分散になるとcm^2が単位となります。

標準偏差は、この単位を元に戻して上げた指標になります。

つまり、分散の平方根を取ってるだけです。

Rでの標準偏差は、 sd関数を使って計算出来ます。

もちろん、 var関数で出した分散の平方根を計算する方法でも計算出来ます。

Rで平方根を計算するのは、 sqrt関数です。

つまり、

sqrt(var(データのベクトル))
sd(データのベクトル)

2通りで計算出来ます。

では、先程のサンプルデータで計算してみましょう!

名前身長
Aさん171cm
Bさん177cm
Cさん169cm
Dさん165cm
Eさん172cm
Fさん174cm
Gさん188cm
Hさん190cm
Iさん175cm
Jさん169cm

データのベクトルはこれでしたね

x <- c(171, 177, 169, 165, 172, 174, 188, 190, 175, 169)

こいつを、 var関数を挟んで計算すると

sqrt(var(x))

直接標準偏差を計算する、 sd関数に入れると

sd(x)

となりますね。

では、実行してみます。

同じ結果になりました(^o^)

まとめ

今回は、Rで分散と標準偏差について勉強しました!

引き続き頑張ります!

コメント

タイトルとURLをコピーしました