Rで相関行列 ーPearsonの相関係数, corrplotの使い方ー

Rでデータ解析と可視化

相関係数とは2つの変数間における関係の強弱を表現する指標です。

2つの変数間だけでなく、複数の変数の情報から、それぞれの相関係数を全部知りたい、

そういう時には相関行列で可視化を行い、すべてを確認し、議論を行うことができます。

相関については、以前のRで散布図の可視化と考察の記事で少し触れました。

今回は、相関行列の可視化とプレゼンテーションについて記載します。



◆データセットについて

以前のRで散布図の可視化と考察の記事で使用したairqualityのデータセットを使用します。

head(airquality) #1 データセットの中身確認
   Ozone Solar.R Wind Temp Month Day
 1    41     190  7.4   67     5   1
 2    36     118  8.0   72     5   2
 3    12     149 12.6   74     5   3
 4    18     313 11.5   62     5   4
 5    NA      NA 14.3   56     5   5
 6    28      NA 14.9   66     5   6
airquality_cor<-airquality[,c("Ozone", "Solar.R", "Wind", "Temp")] #2 必要な列のみのデータにする(Month, Dayを削除)
head(airquality_cor) #3 出来たデータを確認
   Ozone Solar.R Wind Temp
 1    41     190  7.4   67
 2    36     118  8.0   72
 3    12     149 12.6   74
 4    18     313 11.5   62
 5    NA      NA 14.3   56
 6    28      NA 14.9   66
cor(airquality_cor) #4 相関行列を作成
         Ozone Solar.R       Wind       Temp
 Ozone       1      NA         NA         NA
 Solar.R    NA       1         NA         NA
 Wind       NA      NA  1.0000000 -0.4579879
 Temp       NA      NA -0.4579879  1.0000000

#1でデータセットを確認し、#2で相関関係を知りたい情報のデータのみに整えます。

#3で、Ozone, Solar.R, Wind, Tempの行のみのデータになったか確認しました。

#4で相関係数が全てわかる相関行列を作成しましたが、NA(欠損値)の表示が多く出てしまいました。

#3を確認すると、5行目6行目にOzoneやSolar.RにNA表示されています。このNAを削除します。

airquality_cor_no<- na.omit(airquality_cor) #5 NA欠損値のある行を全て削除
head(airquality_cor_no) #6 NA欠損値のある行削除できているか確認
   Ozone Solar.R Wind Temp
 1    41     190  7.4   67
 2    36     118  8.0   72
 3    12     149 12.6   74
 4    18     313 11.5   62
 7    23     299  8.6   65
 8    19      99 13.8   59
cor(airquality_cor_no) #7 相関行列を作成
              Ozone    Solar.R       Wind       Temp
 Ozone    1.0000000  0.3483417 -0.6124966  0.6985414
 Solar.R  0.3483417  1.0000000 -0.1271835  0.2940876
 Wind    -0.6124966 -0.1271835  1.0000000 -0.4971897
 Temp     0.6985414  0.2940876 -0.4971897  1.0000000

#5にて、na.omit()で、NA欠損値を含む全ての行を削除しました。

#6にて、NA欠損値が削除されたことを確認しました。

#7 cor()で相関行列を作成しました。

なお、デフォルトでpearsonの相関係数で数値を算出されていますので、cor(airquality_cor_no, method=”pearon”)と同じ結果です。

spearmanの順位相関係数にて相関行列を算出したい場合は、cor(airquality_cor_no, method=”spearman”)としてください。

library(corrplot) #8
corrplot(cor(airquality_cor_no)) #9
corrplot(cor(airquality_cor_no), addCoef.col="black") #10

#8にて相関行列を可視化するためにパッケージをよみこみます。

初めて使用される方は、install.packages(corrplot)でインストールしてから、#8を実行して下さい。

#9にてデフォルト設定にて可視化を行います。

図の◯の大きさが正負の相関係数の大きさ(絶対値を反映)と色が正負(正が紺、負が赤)の相関係数の度合いを示しています。

#10  addCoef.col=”black” を加えると、各相関係数が入ります。

紺色が濃くて見えにくいですね。。もう少し色みを調節してみます。




 

corrplot(cor(airquality_cor_no), tl.col="black", addCoef.col="black", col = colorRampPalette(c("#f39800","white", "#4393C3"))(10)) #11
corrplot(cor(airquality_cor_no),method="shade", shade.col=NA, tl.col="black", addCoef.col="black", col = colorRampPalette(c("#f39800","white", "#4393C3"))(10)) #12

#11 紺色を少し青ぽい色にして見やすくしました。

col = colorRampPalette(c(“#f39800″,”white”, “#4393C3”))(10) として、#f39800(山吹ぽい色)~white(白)~#4393C3(青ぽい色)を指定して、(10)分割して表示する、という意味です。

#12については、method=”shade”で形を四角にして、 shade.col=NAで、四角の中の影を削除しました。

お好みに合わせて、図を選択していただければと思います。
◆プレゼンテーション

コメント

  1. daichi より:

    文字が重なって図が見にくい場合はどうしたらいいですか?
    よろしければ教えてください。

タイトルとURLをコピーしました