相関係数とは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で、四角の中の影を削除しました。
コメント
文字が重なって図が見にくい場合はどうしたらいいですか?
よろしければ教えてください。