基本統計量とヒストグラム
基本統計量の中でも特に重要なのが代表値とデータの散らばり(散布度)である。
- 代表値…分布上の位置を表す
-
- 平均値…比例・間隔尺度・
順序尺度・名義尺度
- 中央値…比例・間隔尺度・順序尺度・
名義尺度
- 最頻値…比例・間隔尺度・順序尺度・名義尺度
- 最大値…比例・間隔尺度・順序尺度・
名義尺度
- 最小値…比例・間隔尺度・順序尺度・
名義尺度
- 散布度
-
- 範囲…最大値 - 最小値
- 分散…個々の値と平均値との偏差平方の平均
- 標準偏差…sqrt(分散)
この中では比例・間隔尺度における「最頻値」が厄介。順序尺度・名義尺度の時は単純に同じ値の数を数えれば最頻値が求められるが、比例・間隔尺度においてはそれではあまり実用にならない(Excelのmode関数)。一定の区切り幅の中で度数の高い区間から求める方が実用的である。
このような最頻値を求めるためにはまずは度数分布表を作ることが先決である。
度数分布表とヒストグラム
連続数を変数として度数分布表を作る時には、その変数を任意の区切り幅でカテゴリ―化するのが一般的である。今回は身長を5cm区切りで設定する。この区切りを「ビン」と呼ぶ。
このcutがビンとなる。cutには以下のような数値が入っている。
身長データxをこのcutで区切って度数分布表とヒストグラムを作成する。Rでは先にヒストグラムを作成するのが簡単。
- hist(x,cut,right,col)
-
戻り値はリスト型
- x=ベクトルデータ
- cut=区切り(ビン)
- right=TRUE…「より大きい、以下」,FALSE…「以上、未満」のデータを同じ区切りとする
- col=色
ExcelやSPSSでヒストグラムを作ると「right=TRUE」相当のものが出来る。それで構わないが、直感的な見やすさは「right=FALSE」の方であろう。
hist$countsの中に度数データが入っている。
この度数データベクトルをmatrix(表)型にして、行ラベルに区切り(ビン)のラベルを指定する。ただし終端(185)は不要なので除去する。
| freq |
140.00 | 0 |
145.00 | 3 |
150.00 | 35 |
155.00 | 41 |
160.00 | 30 |
165.00 | 11 |
170.00 | 1 |
175.00 | 0 |
180.00 | 1 |
統計量
以下、統計量を求めていく。Excelの関数とほぼ同等。
最頻値(mode)は度数分布表よりもっとも度数の高い「26」(max(hist$counts))が含まれる区切り「155,160」の中央値となる。hist$midsが区切りの中央値データである。
度数と区切り中央値との対応
hist$counts | 0 | 2 | 18 | 26 | 17 | 7 | 1 | 0 | 1 |
hist$mids | 142.5 | 147.5 | 152.5 | 157.5 | 162.5 | 167.5 | 172.5 | 177.5 | 182.5 |
一般的な統計ソフト(除Excel)で普通に「分散」を求めると「不偏分散」が求められる。Rにおいてもvar()で求められるのは不偏分散(u2)である。記述統計においては定義通りの分散(標本分散)が本来。この分散はExcelではVAR.P関数で求められるものである。Rでは残念ながらそのような関数はない(はず)ので分散の定義から計算する。
分散
身長データ(x)から身長の平均値(mean(x))を減算したものの二乗和(偏差平方和)を求め、それをデータの大きさ(N)で除算する。
不偏分散
一般的な統計ソフトでは自身で計算しない限り不偏分散しか算出されない。記述統計の中ではそれは正確ではない。しかしそれはさほど問題ではない。
一般的に分散は値が大きい方が分析者にとって不利である(有意な結果が得られづらくなる)。不偏分散は定義通りの分散よりも値が大きくなる。それは*分析ゲーム*における胴元(分析者)がハンデを背負っているだけであり、分散を不偏分散で代用することはゲームのフェアさを損なわない。
※不偏分散を求めるvar関数はmatrixデータに対して用いると共分散行列を求める(sumやmeanとは異なる動きをする)。標準偏差を求めるsdはsum,meanと同じ動きをするので、そういう計算をしたい時にはsdで求めた値を2乗する。
グループ別基本統計量と箱ひげ図
カテゴリごとにグループ化されているデータを視覚化して比較したい時には度数分布表よりも箱ひげ図が便利である。
グループ化変数を設定し、それを基準に身長データを分割して、基本統計量を求める。
ある変数をグループに分割して計算したい時にはtapply関数を用いる。
- tapply(x,group,function)
-
- x=間隔・比例尺度のベクトルデータ
- group=グループ化変数(カテゴリ変数)
- function=関数定義または関数名
箱ひげ図はboxplot関数。引数はグループごとに分割された間隔・比例尺度データである。
- boxplot(var1,var2,…,col)
-
グループごとのデータ分割にはsplit関数を用いている。split関数の戻り値にはグループごとにラベルがつくので便利。
- split(x,group)
-
- x=間隔・比例尺度のベクトルデータ
- group=グループ化変数(カテゴリ変数)