Chapter 3 統計学の基礎の復習
平均値の計算など、心理統計の基礎を復習する。また、R で平均値などの基礎統計量を計算する方法についても解説する。
- 変数の区別
- 基本統計
- 代表値(平均、中央値)
- 散布度(分散、標準偏差、分位数)
- 共分散、相関
- 代表値(平均、中央値)
3.1 尺度水準
まず、統計学における変数の種類の区別について確認する。変数の種類は大きく分けて、数値である量的変数とカテゴリーを意味するカテゴリカル変数(質的変数)の2つに区別できる。
3.1.1 量的変数
数値として扱う変数。計算することができる。量的変数は更に、間隔尺度と比率尺度に区別される。
間隔尺度
データの間隔に意味があるもの。ゼロが何もない状態を意味するものでないもの。例えば、摂氏温度など(0℃以下も-1℃があるように、ゼロは何もない状態を意味しない)。差には意味があるが、比率については意味を持たない。例えば、「10℃と20℃の差は10℃である」とはいえるが、「20℃は10℃の2倍の熱さである」とは言えない。
3.1.2 カテゴリカル変数(質的変数)
分類や種類などを意味するデータ。数量化して計算することはできない。
カテゴリカル変数も更に、いくつかに分類される。ここでは、名義尺度と順序尺度の区別を挙げる。
順序尺度
「優、良、可、不可」といった成績、「1. 賛成、2. どちらでもない、3. 反対」といった尺度など。心理学ではよくリッカート尺度(*)で態度などを測定するが、これも順序尺度である。
*「1:そう思わない、2: 思わない、3: どちらでもない, 4: そう思う、5: 強くそう思う」といったように、自分の態度に当てはまる数字を選ばせて態度の強さを測定する方法。
順序尺度には順序関係があるが、間隔は定義されない。例えば、成績には優 > 良 > 可という順序関係があるが、優と良の間と良と可の間の幅は等しいといった定義はできない。また、良+可=優といった計算もできない。つまり、順序尺度は順序関係はあるがカテゴリカル変数である。
3.2 基本統計量
以下では、Rにもともと入っているiris
データをサンプルデータとして使いながら、平均値や中央値などの代表値や分散や標準偏差などの散布度について復習する。
iris
と入力して実行すると、データの中身を確認できるが、これだとデータ全てが出力されて見やすくない。head()
を使うとデータの変数を含めた上部数行を表示してくれる。また、str()
を使うと、簡略化したデータの構成を表示してくれる。これらの関数は今後もよく出てくるのでここで覚えておこう。
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
## 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
3.2.1 代表値
データの代表となる値のこと。平均や中央値などがよく用いられる。
平均値(mean)
\(n\)個の数値\(X_{1}, X_{2}, \cdots, X_{n}\)からなるデータの平均値\(\bar{X}\)は、以下の数式で求める。
\[ \bar{X} = \frac{1}{n}\sum_{k=1}^{n}X_{k}\\ \]
Rで平均値を求めるには、mean()
関数を使う。カッコの中に、平均値を求めたいデータをベクトルの形式で入れる。
データフレームの場合は、「データ名$変数名」でベクトルを指定する。これはよく使う表記なので覚えておこう。
## [1] 5.843333
データに欠損値が含まれている場合は、計算できない。オプションとしてna.rm = TRUE
を指定すれば、欠損値を除いて平均値を算出してくれる。
## [1] NA
## [1] 3
3.2.2 散布度
データの散らばり具合を示す値のこと。分散、標準偏差などが知られる。
分散(variance)
分散(\(\sigma^2\))は、以下の式で定義される。すなわち、各変数が平均値から離れている程度を表現したものである。
\[ \sigma^2 = \frac{1}{n-1}\sum_{k=1}^{n}(X_{k}-\bar{X})^2\\ \]
Rで分散を求める際には、var()
関数を使う。
## [1] 0.6856935
3.2.3 要約統計量
以上のように、R には代表値や散布度を求めるための関数が標準で入っているが、これらをまとめて計算してくれるsummary()
もある。
summary()
に変数を入れると、最小値、最大値、平均、四分位数をまとめて算出してくれる。
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.300 5.100 5.800 5.843 6.400 7.900
3.2.4 グループごとの集計
グループごとに統計量を集計する場合は、tapply
関数を使う。tapply()
に、最初に統計量を求めたい変数のベクトル、グループを意味するベクトル、求めたい統計量を入れる。
例えば、サンプルデータのiris
には、種を意味するSpecies
が入っている。種ごとに平均や標準偏差などを求める場合には、以下のようにプログラムを書く。
## setosa versicolor virginica
## 5.006 5.936 6.588
## setosa versicolor virginica
## 5.0 5.9 6.5
## setosa versicolor virginica
## 0.3524897 0.5161711 0.6358796
## setosa versicolor virginica
## 50 50 50
3.3 相関(correlation)
2変数間の関連のことを相関という。相関の強さは相関係数で示される。
変数\(x\)と変数\(y\)の相関係数(\(r\))は、以下の式で求められる。
\[ r = \frac{\sigma_{xy}}{\sigma_{x}\sigma_{y}} \]
\(\sigma_{xy}\)はxとyの共分散(covariance)で、\(\sigma_{xy} = \sum^n_{i=1}(x_{i}-\bar{x})(y_{i}-\bar{y})\)である(\(\bar{x}\)はxの平均)。\(\sigma_{x}\)と\(\sigma_{y}\)はxとyそれぞれの標準偏差である。
相関係数は\(-1\)から\(1\)までの範囲をとり得る。相関係数の絶対値が大きいほど、相関関係が強いことを意味する。相関係数\(r\)が \(r > 0\)のときは「正の相関」、つまり一方の変数の量が増えればもう一方の変数も増える関係にあることを意味する。\(r < 0\)のときは「負の相関」、つまり一方が増えればもう一方が減るという関係にあることを意味する。
Rで相関係数を求めるには、cor()
が使える。カッコの中に、相関係数を求めたい2つの変数を入れれば良い。また、cor.test()
を使うと、相関係数の検定などより詳細な結果を示してくれる。
## [1] -0.1175698
##
## Pearson's product-moment correlation
##
## data: iris$Sepal.Length and iris$Sepal.Width
## t = -1.4403, df = 148, p-value = 0.1519
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.27269325 0.04351158
## sample estimates:
## cor
## -0.1175698
なお、共分散はcov()
で求められる。
## [1] -0.042434
補足:
単に「相関係数」というと、一般的には「ピアソンの積率相関係数」のことを指す場合が多い。上で示した例も、ピアソンの積率相関係数を求めている。以降の章でも、特に断りがない限り「相関係数」は積率相関係数を指すものとする。
相関係数にもいくつか種類があり、例えばスピアマンの順位相関係数がある。順位相関係数は、変数を順位に変換した上で(大きい順から1, 2, …と順位を振る)その順位を使って相関係数を求めたものである。データに極端な値(外れ値)がある場合やデータ数が少ない場合は、外れ値を調整してくれる順位相関係数の方が望ましい。
cor()
及びcor.test()
のオプションで、method =
で相関係数の算出法を指定することができる。
## [1] -0.1667777
何も指定しなければ、デフォルトでピアソンの積率相関係数を計算してくれる。