超基本:rで相関分析(相関係数と無相関検定)

 超基本的な分析方法のメモ.

 以前にエクセルから取り込んだデータを使って相関分析をしてみる.
 こんなデータ.

 なお,相関とは「ある変数が増えると別の変数も増える,あるいは減る」という現象が観察されているかを示している.ある変数が原因となってある変数が増えたり減ったりするということを言っているわけではないので注意.相関分析では相関係数を算出する.この係数は0から絶対値の1をとる.1あるいは-1に近いほど相関が高いことになる.ある変数が増えるともう一つの変数が増える場合はプラスの相関(正の相関),ある変数が増えるともう一つの変数は減る場合はマイナスの相関(負の相関)があると言う.ちょっとだけ詳しく言うと相関は共分散を正規化している感じになる.繰り返しだけど因果関係を示しているわけではない.
 相関分析を行う前に,必ず散布図で確認し,データの構造を視覚的に理解する.これはとても大切.なので今回は散布図の描画の方法も載せておく.

> #データをエクセルから読み込み(別にエクセルからでなくてもいいけど)
> dat<-read.delim("clipboard", header = TRUE)
> #確認のため"dat"の中身をみてみる
> dat
      A    B
1  23.5 24.0
2  23.0 23.0
3  25.0 25.5
4  25.5 27.0
5  22.5 24.5
6  24.5 26.0
7  26.0 27.5
8  24.0 26.0
9  25.0 26.5
10 24.0 25.0
> 
> #散布図を描画する.plot()関数で作図できる.dat$Aの意味は"dat"っていう名前のデータののA列のデータっていうこと.
> #x軸にA列のデータ,y軸にB列のデータを並べるなら,先にdat$A,次にdat$Bにする.
> plot(dat$A,dat$B)
> #もしX軸とy軸の上限と下限を指定したいときはplot()の中にxlim = c(,)ylim = c(,)でそれぞれ指定してやる.c(0,30)とかすると0から30の範囲で描画できる.下のコードは,x軸,y軸とも下限が0,上限が28にしてみた例.
> plot(dat$A,dat$B, xlim = c(0,28), ylim = c(0,28))
>
>#さらに,ラベルをつけたい場合xlab = ""ylab = ""でそれぞれの軸のラベルを付けられる.
>#さらにさらに,軸の間隔を指定したい場合は,xlimやylimに加えてxaxp = c(,,)xaxp = c(,,)も入れてやる.
>#下の例はそれぞれのラベル名を"A列"と"B列"とし,y軸の上限下限を20から30とし,yaxpで20から30の間を4分割した目盛りで描画する,ことを指定している.
> plot(dat$A,dat$B, xlab = "A列", ylab = "B列", ylim = c(20,30), yaxp = c(20,30,4))
>
>
>#いよいよ相関分析.cor.test()でできる.A列B列のデータを指定する.それとmethod = ""で相関分析の方法を指定できる.pearsonはパラメトリック,spearmanはノンパラメトリックになる.今回はpearsonを指定.
> cor.test(dat$A,dat$B, method = "pearson")

 Pearson's product-moment correlation

data:  dat$A and dat$B
t = 5.2123, df = 8, p-value = 0.0008101
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.5582306 0.9711342
sample estimates:
      cor 
0.8789326 
>
>#一番したのcorの値が0.8789326が相関係数.今回のデータは結構相関が高い.ちなみにp-value = 0.0008101は無相関検定で得られたp値の結果. 

最後に作図した散布図plot(dat$A,dat$B, xlab = "A列", ylab = "B列", ylim = c(20,30), yaxp = c(20,30,4))の図だけのせておく.以下の通り.

コメント