見出し画像

【統計ソフトR】相関係数の可視化と検定

この記事では、統計ソフトRを使ってデータの相関係数を求め、それが統計的に有意なのか検定し、相関行列図を作ります。相関係数算出と検定が一気にできて、しかも色付きの図で視覚的にもわかりやすくなる方法があるので紹介します。


Rには、分析の練習やデモができるサンプルデータがたくさん用意されています。今回は「trees」というデータを使うことにします。これには31本の木の太さ、高さ、容積の数値が入っています。
まずはデータを読み込んでください。

data(trees)

これで読み込まれます。
なお、今回は関係ないですがExcelのCSVファイルを読み込むには、「ファイル」タブから作業ディレクトリを使いたいファイルが入っている場所に変更してから、

trees<-read.csv("ファイル名.csv")

と入力します。


相関係数を求める前に、やっておきたいのが散布図を見ることです。相関係数が0またはかなり低くても、データの間に曲線的な関係が存在するかもしれないし、極論外れ値があるせいで相関係数が変な値になってしまっているかもしれないからです。

散布図は

plot(trees)

で簡単に描けます。

画像5

「Girth」と「Volume」の相関がかなり高そうですね。他のものはこれだけでは相関係数が有意なのかは断言できません…


さて、相関係数を求めるだけなら

cor(trees)

と入力すればすぐに出せます。

画像3

そしてその相関係数が有意なのかどうかはcor.test関数で検定可能です。
例えば「Girth」と「Height」の間に有意な相関があるのかどうかは

cor.test(x=trees$Girth,y=trees$Height,method="pearson")

と入力すれば下のような文字列が返ってきて、p値がわかります。
今回はp=0.002…とあるので、p<0.01で相関係数が有意です。

画像4


でもRはもっとすごいことをやってくれます。各変数間の相関係数を一気に求めて、相関の強さによって色の濃さを変えた綺麗な表を作って、p<0.01で有意なのか検定まで済ませる有能コードがこれです。

install.packages("corrplot") #パッケージのインストール
library(corrplot) #パッケージの呼び出し
c<-cor(trees) #「c」に相関行列を入れます
p<-cor.mtest(trees) #「p」にp値一覧を入れます
round(c,2) #「c」の中の数値を小数点以下3桁で四捨五入する
corrplot(c,method="color",addCoef.col=TRUE,p.mat=p$p,sig.level=0.01)

これでこんな図が出てきました。各変数間の相関係数が書いてあり、絶対値が大きいほど濃い色になっています。なお、p<0.01で検定もされていて、数値にバツ印が付いていないということは相関係数は全て有意でしたよということを意味します。

画像1

「trees」のデータだとこの図の有能性がちょっとよくわからないですね。こちらは僕が別のデータを使って同じコードを走らせた結果の図ですが、相関が正に強いほど青色が濃くなり、負に強いほど橙色が濃くなり、t検定で有意でなかった相関係数にバツ印が付いています。

画像2

これは本当に便利です。みなさんも使ってみてくださいね。


今回はこれだけ。相関係数の算出と検定でした。

この記事が気に入ったらサポートをしてみませんか?