Rで相関分析

相関係数

相関係数とは


相関係数の算出

library(openxlsx)

data <- read.xlsx("pone.0226832.s001.xlsx")


# 出力される数値の桁数を制御する

options(digits=3)

# round(result,3)のように丸めるのでもOK


# オプション指定なし

result <- cor(data)

result


# NAがある行を除く

result <- cor(data,use = "complete.obs")

result


# NAがあるときだけ除く

result <- cor(data,use = "pairwise.complete.obs")

result


# 結果がどう変わっているのかを確認してみよう

> result <- cor(data)

> result

                             Kusho Static Circle MMSE   Age Education Vocabulary.score.(100.RAKAN)

Kusho                        1.000  0.834  0.715   NA 0.134     0.177                           NA

Static                       0.834  1.000  0.805   NA 0.271     0.516                           NA

Circle                       0.715  0.805  1.000   NA 0.239     0.347                           NA

MMSE                            NA     NA     NA    1    NA        NA                           NA

Age                          0.134  0.271  0.239   NA 1.000     0.107                           NA

Education                    0.177  0.516  0.347   NA 0.107     1.000                           NA

Vocabulary.score.(100.RAKAN)    NA     NA     NA   NA    NA        NA                            1


> result <- cor(data,use = "complete.obs")

> result

                             Kusho Static Circle    MMSE   Age Education Vocabulary.score.(100.RAKAN)

Kusho                        1.000  0.867  0.816  0.4249 0.622     0.156                       0.4811

Static                       0.867  1.000  0.856  0.6372 0.761     0.534                       0.5219

Circle                       0.816  0.856  1.000  0.3114 0.678     0.388                       0.6849

MMSE                         0.425  0.637  0.311  1.0000 0.176     0.407                      -0.0613

Age                          0.622  0.761  0.678  0.1756 1.000     0.684                       0.7991

Education                    0.156  0.534  0.388  0.4066 0.684     1.000                       0.5152

Vocabulary.score.(100.RAKAN) 0.481  0.522  0.685 -0.0613 0.799     0.515                       1.0000


> result <- cor(data,use = "pairwise.complete.obs")

> result

                             Kusho Static Circle    MMSE    Age Education Vocabulary.score.(100.RAKAN)

Kusho                        1.000  0.834  0.715  0.4362 0.1343     0.177                       0.4811

Static                       0.834  1.000  0.805  0.5237 0.2713     0.516                       0.5219

Circle                       0.715  0.805  1.000  0.2092 0.2390     0.347                       0.6849

MMSE                         0.436  0.524  0.209  1.0000 0.0341     0.281                      -0.0613

Age                          0.134  0.271  0.239  0.0341 1.0000     0.107                       0.7991

Education                    0.177  0.516  0.347  0.2810 0.1066     1.000                       0.5152

Vocabulary.score.(100.RAKAN) 0.481  0.522  0.685 -0.0613 0.7991     0.515                       1.0000


相関係数の検定


相関係数の無相関検定

result <- cor.test(data$Kusho,data$Static)

result


  Pearson's product-moment correlation


data:  data$Kusho and data$Static

t = 7, df = 24, p-value = 1e-07

alternative hypothesis: true correlation is not equal to 0

95 percent confidence interval:

 0.659 0.923

sample estimates:

  cor 

0.834 


結果の値を得る


偏相関分析

偏相関分析とは


ppcorパッケージ



偏相関係数の算出

# とりあえず3つのデータのみを使用する

result <- pcor(data[,1:3])

result


# 普通のcorの結果との違いを確認しよう

> result

$`estimate`

           Kusho    Static    Circle

Kusho  1.0000000 0.6229357 0.1311250

Static 0.6229357 1.0000000 0.5429849

Circle 0.1311250 0.5429849 1.0000000


$p.value

              Kusho       Static      Circle

Kusho  0.0000000000 0.0008808909 0.532124476

Static 0.0008808909 0.0000000000 0.005035315

Circle 0.5321244758 0.0050353148 0.000000000


$statistic

           Kusho   Static    Circle

Kusho  0.0000000 3.818992 0.6343303

Static 3.8189918 0.000000 3.1010273

Circle 0.6343303 3.101027 0.0000000


$n

[1] 26


$gp

[1] 1


$method

[1] "pearson"


結果の値を得る


検定をひとつずつおこなう場合

pcor.test(data[,1], data[,2], data[,3]) 


便利なパッケージ

corrplotパッケージ


# 列名長いので名前変える 

names(data)[7] <-"Vocabulary"


# 相関行列を計算する

result <- cor(data, use = "pairwise.complete.obs")


# corrplotを使用してプロットする

# tl.colはテキストラベルの色。デフォルトだとなぜか赤字で気持ち悪い

corrplot(result, tl.col="black")

psychパッケージ


library(psych)


# numbers は相関係数の値,Fだと色分けだけ

cor.plot(result, numbers=T)

cor.plot(result, numbers=F)


# 散布図

pairs(result)


# 分布とかいろんな情報

pairs.panels(result)


cor.test

pairs

pairs.panels