フリーソフトによるデータ解析・マイニング

Rと基本統計量

 

 

データには、身長、体重、成績などのように量的計測できるデータと性別、血液型などのように性質を表すデータがある。前者を量的データと呼び、後者を質的データ、あるいはカテゴリカルデータと呼ぶ。

統計量(statistic)とは、統計データから計算、要約した数量のことである。基本統計量とは、通常広く使用されている合計、比率、平均、中央値、最頻値、分散、四分位数などを指す。

 

1.      計と比率

1.1 合計

量的データを分析する際には、データを加え合わせる作業が頻繁に行われる。

 


個のデータがあった時、これらのデータの値をすべて加えて合計を求める演算を

で表す。のような書き方もある。

 

例えば、ある販売部門の10人の第一四半期の売上が表1の通りであるとする。

 

1 10人の年売上(単位は百万)

 

10ABC・・・IJの売上をにし、それぞれ識別できるようにするため、ABC、・・・IJの順に添字123、・・・910をつけたものがとする。Aの売上12Bの売上6のように対応関係をつけると、10人の売上の合計は次のようになる。

 

Rではsum関数を用いてデータの合計を求めることができる。

 

>uriage<-c(12,6,13,7,8,11,12,9,10,7)

> sum(uriage)

[1] 95

 

1.2 比率

1A氏の売上は12となっている。この値12が持っている意味は相対的なもので、単純に12の値が大きいか、小さいかは議論できない。この12が相対的に大きいか、小さいかは全体のなかで占める比率、あるいは割合を求めて議論をしなければならない。

ある値が全体のなかで占める比率は、を総数で割って求める。これをΣ記号で表すと次のようになる。

 

比 率:  

百分率: 

 

漢字がわからない人は、は理解できないが、どの国の人でも若干の数学教養をもっていれば、式

 

の意味は簡単に理解できる。このような数式表記は一種の国際言語であるとも言える。上記のAの人のことを例にすると、 A氏の売上の比率は(下記の記号≒は近似を意味する)

 

 

で、これをパーセンテージ(percentage百分率、百分比)で表すと次のとおりになる。

 

 

Rでは、次のように比率の定義とおりに演算を行うことで、簡単に比率と割合を求めることができる。入力した売り上げのデータuriageを用いて説明する。

 

> uriage/sum(uriage)

 [1] 0.12631579 0.06315789 0.13684211 0.07368421 0.08421053 0.11578947

 [7] 0.12631579 0.09473684 0.10526316 0.07368421

 

> 100*(uriage/sum(uriage))

 [1] 12.631579  6.315789 13.684211  7.368421  8.421053 11.578947 12.631579

 [8]  9.473684 10.526316  7.368421

 

パッケージscaの中には比率データをパーセンテージに変換し、%記号を付けたデータを返す関数percentがある。引数dで小数点右の何桁まで出力するかを指定することができる。デフォルトはd=0になっているので、dを指定しない場合、小数点以下は返さない。

 

> library(sca)

> percent(uriage/sum(uriage))

 [1] "13 %" "6 %"  "14 %" "7 %"  "8 %"  "12 %" "13 %" "9 %"  "11 %" "7 %"

> noquote(percent(uriage/sum(uriage)))

 [1] 13 % 6 %  14 % 7 %  8 %  12 % 13 % 9 %  11 % 7 %

> noquote(percent(uriage/sum(uriage),d=1))

 [1] 12.6 % 6.3 %  13.7 % 7.4 %  8.4 %  11.6 % 12.6 % 9.5 %  10.5 % 7.4 %

 

 

2.      中心を表す統計量

 

統計量にはそのデータの中心の位置を表す代表値として平均、中央値、最頻値が多く用いられている。

 

2.1 平均

ここでいうデータの平均(average またはmean)は、データの合計をデータの個数で割った算術平均である。表1のデータを用いて説明することにする。

 

 

このデータから一人当たりの平均売上を考えて見ましょう。一人あたりの平均売上は合計値95を人数10で割ることで求める。

 

 

9.5がこの10個のデータの平均値である。この具体的な計算過程を定義すると次のようになる。

 

*個のデータがあった時、これらのデータの平均値は次の式で求めます。

 

一般的に平均値はの上に横線を引いた(エックスバーと呼ぶ)で表す。を求める式は一見煩雑にみえるが、合計をデータの数で割る単純な算術計算である。

Rでは、算術平均を求める関数meanが用意されている。データuriageを用いてその使用例を示す。

 

> mean(uriage)

[1] 9.5

 

2.2 最頻値(mode

データのなかでもっとも頻繁に現れている値を最頻値、あるいはモード(mode)と呼ぶ。例えば、データ

1

3

5

4

3

 

では、32回現れ、それ以外は1回であるので、最も頻繁に現れている値は3となる。つまり、このデータの最頻値(モード)3である。最頻値は出現頻度が最も高いデータであるので、データの中に必ず最頻値が存在するとは限らない。

Rでは最頻値を求める関数が用意されていないので、他の関数を用いて間接に求めることができる。例えば、ベクトルデータについては関数tableを用いると、各要素の出現頻度が集計される。返された結果からわかるように、32回現れていると集計されている。

 

> table(c(1,5,4,3,3))

1 3 4 5

1 2 1 1

 

2.3 中央値(median

データを大きさの順に並べた場合、中央に位置する値を中央値、あるいはメディアン(median)と呼ぶ。例えば、データ

2

3

5

3

4

があったとしよう。5個のデータを大きさの順に並べると

2

3

3

4

5

ここが中央

となり、中央に位置する値は矢印上の3であるので、このデータセットの中央値は3である。これはデータの数が奇数の場合であるが、データの数が次のように偶数の場合は、中央の両値を足して2で割った値を中央値とする。この例では、(3+4)/2=3.5が中央値となる。

Rでは最頻値(メジアン)を求める関数medianである。

 

2

3

3

4

5

7

ここが中央

 

> median(c(233457))

[1] 3.5

 

3 バラツキの特性値

 データがどのような値を中心としているかはデータの特徴を知る上で重要な情報であるが、データがどの程度散らばっているかという情報も、データの特徴を把握する上で重要である。

3.1 範囲(range)

データの中で最も大きい値を最大(maximum)値と呼び、最も小さい値を最小(minimum)値と呼ぶ。データの範囲は、データの最小値から最大値までの区間を指す。

Rでの最大値、最小値、範囲を求める関数はそれぞれ関数maxminrangeである。次にuriageデータセットを用いた例を示す。

 

> max(uriage)

[1] 13

> min(uriage)

[1] 6

> range(uriage)

[1]  6 13

 

3.2 分散と標準偏差

分散と標準偏差はデータの散らばり(バラツキ)の状況を表す統計量である。分散と標準偏差の定義に関する説明の前に、まず次の表2AB両氏の携帯電話料金のデータをみよう。両氏の6ヶ月間の電話料金の総額および平均は同じである。何が違うであろうか?

 

2 AB両氏の電話料金

1月

2

3

4

5

6

合計

平均

A

7206

6358

9809

8915

7850

8965

49103

8183.833

B

5550

4880

15914

4856

13013

4890

49103

8183.833

 

両氏のデータをそれぞれ散布図で表すと図1のとなる。横軸が月で、縦軸が料金で、図のなかの横線は平均値である。図からわかるようにA氏の月別の料金は平均値の周辺に集中しているが、B氏の月別料金はA氏より散らばっている。

このようにデータが平均値からどの程度散らばっているかでデータの特徴を説明することができる。データが平均値からどの程度散らばっているかを示す量として分散(variance)標準偏差standard deviation)と呼ばれている統計量がある。

 

1 電話料金の散布図

 

個のデータがあった時、これらのデータの分散は次の式で定義されている。

また、標準偏差は分散の正の平方根である。

          

 

Rは分散を求める関数var、標準偏差を求める関数sdがある。次にAB氏の電話料金の分散、標準偏差を求めるコマンドを次示す。それぞれの分散は163745324570507B氏の分散がA氏よりはるかに大きいことがわかる。この結果を散布図と見比べると、バラツキが大きいデータの分散値が大きいことがわかる。この例のように、用いたデータの桁数と比べて分散の値の桁数がかなり大きい。データの桁数が多いと扱うのに不便であるので、場合によっては分散値の正の平方根を用いる。分散値の正の平方根を標準偏差standard deviationと呼ぶ。

 

>Ashi<-c(7206,6358,9809,8915,7850,8965)

>Bshi<-c(5550,4880,15914,4856,13013,4890)

> var(Ashi)

[1] 1637453

> var(Bshi)

[1] 24570507

> sd(Ashi)

[1] 1279.630

> sd(Bshi)

[1] 4956.865

 

注:図1の散布図は次のコマンドで作成することができる。

> plot(1:6,Ash,pch=21,bg=2,col=2,cex=2,ylim=range(Bshi))

> abline(mean(Bshi),0,lw=2,col=3)

> plot(1:6,Bshi,pch=21,bg=2,col=2,cex=2,ylim=range(Bshi))

> abline(mean(Bshi),0,lw=2,col=3)

 

3.3 四分位数(しぶんいすう)

 データを大きさの順にならべて、データを4等分したとき、各等分の境の値を四分位数と呼ぶ。例えば、データ

3

5

6

8

9

11

12

15

16

があるとする。データの数が奇数であるので、中央値は9となる。データ9を含むその左辺、右辺のデータの中央値はそれぞれ612である。その値6912をそれぞれ1四分位数(25%点)2四分位数(50%点)3四分位数(75%点)と呼ぶ。

3

5

6

8

9

11

12

15

16

0%点  25%点

50%点

75% 100%点

 

 また下記の式

で得られた値を四分位偏差と呼ぶ。よって、上記のデータの四分位偏差は

となる。この四分位偏差もデータのバラツキを示す一つの指標である。

Rで四分位数を求める関数はquantileである。四分位偏差は関数IQR2で割ることで、求めることが可能である。

 

> quantile(c(3,5,6,8,9,11,12,15,16))

  0%  25%  50%  75% 100%

   3    6    9   12   16

> IQR(c(3,5,6,8,9,11,12,15,16))

[1] 6