Rを使って相関係数を求めてみます。
相関とは「2つの変数間の関係」のことで、相関係数は相関を数値で表したものです。
ここでは、以下のscores1とscores2 ~ 4のそれぞれとの関係性を見ていきます。
scores1 <- c(1:10) # 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 scores2 <- c(1:10) # 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 scores3 <- c(10:1) # 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 scores4 <- <- c(0, 10, 0, 10, 0, 10, 0, 10, 0, 10) # 0, 10, 0, 10, 0, 10, 0, 10, 0, 10
まずはscores1とそれぞれの集合との関係性を散布図を作ってみていきます。
plot(scores1, scores2)
plot(scores1, scores3)
plot(scores1, scores4)
...これだけでもなんとなく関係性が見えてますね。(恣意的に集合を作ったので当然ですが。)
ここで、散布図を作った際にプロットの並びが右上がりになっている傾向(scores1とscores2)があれば正の相関、右下がり(scores1とscores3)になっていれば負の相関があるといい、そういった関係性が見られない場合(scores1とscores4)は無相関であると表現します。
さて、相関係数を求めるためにはまずは2つの集合の共分散を計算する必要があります。
共分散も2変数間の関係の強さを表す値で、次式のように「偏差の積の平均」で表されます。
それでは、scores1とscores2の共分散を計算してみます。
covar_1_2 <- sum((scores1 - mean(scores1)) * (scores2 - mean(scores2))) / length(scores1) covar_1_2 # 8.25
これは定義式をそのまま当てはめて計算しました。
共分散は偏差の積の平均であることを利用して、次のようにしても同じように計算できます。
covar_1_2 <- mean((scores1 - mean(scores1)) * (scores2 - mean(scores2))) covar_1_2 # 8.25
また、Rには共分散を計算するためのcov()という関数が用意されています。
cov(scores1, scores2) # 9.166...
cov()を利用したときの結果が異なっていますが、これは共分散計算時の分母がnではなくn-1になっているからです。
cov(scores1, scores2) * (length(scores1) - 1) / length(scores1) # 8.25
これで同じ値になりました。
共分散の計算もできたので、次は相関係数を求めます。
相関係数は次の式から計算されます。
[tex:r{xy} = \frac{s{xy}}{s{x} * s{y}} = \frac{xとyの共分散}{xの標準偏差 * yの標準偏差}]
cov(scores1, scores2) / (sd(scores1) * sd(scores2)) # 1
となります。
ここで相関係数が正の値であれば正の相関、負の値であれば負の相関があるといえ、相関の強さは値の大きさから導かれます。
- 0 =< r =< 0.2: ほとんど相関はない
- 0.2 < r =< 0.4: 弱い相関がある
- 0.4 < r =< 0.7: 中程度の相関がある
- 0.7 < r =< 1.0: 強い相関がある
従って、scores1とscores2の間には「強い正の相関がある」ということが相関係数から言えそうです。
相関係数についてもRは標準で関数を持っています。
cor(scores1, scores2) # 1
それでは、scores1と他の変数との相関係数も計算してみます。
cor(scores1, scores3) # -1 cor(scores1, scores4) 0.17
この結果から、scores1とscores3の間には「強い負の相関」、scores1とscores4の間には「非常に弱い正の相関 = 無相関」であるということがわかります。
以上が相関係数の計算方法ですが、ここで注意が必要なのは散布図を書いて2変数の関数を図示して確認しておくことです。
外れ値などがあるとそれによって相関係数に影響が出てくる恐れもあるので、まずは図示して確認してみましょう。