はじめに
こんにちは!ひらちんです!Rを使った統計について自分の勉強も兼ねて記事にしています。
今回は、データの複数列のそれぞれの相関を一気に比較する方法を紹介します!
相関とは
相関とは2つのデータの一方が変化したら、もう一方も変化するというような関係のことを言うんでしたね!
その強さや関係(正か負か)について数値で表したものが相関係数でした!
上記の記事では、1組ずつの相関係数を出す方法を紹介しましたが、実際のデータは列がいくつもあって、どの組み合わせが相関があるのか複数試す必要があります。
いちいち1組ずつ計算するのは面倒です。
はい、もちろんRでは複数の相関を一気に計算出来る方法があるのでご安心下さい(^^)
複数の相関を一度に計算する方法
複数の相関を一度に計算する場合も cor関数を利用します。
cor関数は、1組の場合は下記のように引数にxとyを指定します。
cor(x, y)
この引数をmatrixにすることで一気に計算することが出来ます。
実行サンプル
ggplot2パッケージの中のeconomicsデータを使ってやってみましょう!
まずはパッケージを読み込んで中身を確認します。
require(ggplot2)
head(economics)
date、pce、pop、psavert、uempmed、unemployという列がありますね。
では、続けて以下のコードを実行してみます。
cor(economics[,c(2,4:6)])
引数のところに、economicsデータの2行目と4行目から6行目を指定しています。
※数値の列のみ扱うことが出来ます
require(ggplot2)
head(economics)
cor(economics[,c(2,4:6)])
実行しましょう。
> cor(economics[,c(2,4:6)]) pce psavert uempmed unemploy pce 1.0000000 -0.7928546 0.7269616 0.6145176 psavert -0.7928546 1.0000000 -0.3251377 -0.3093769 uempmed 0.7269616 -0.3251377 1.0000000 0.8693097 unemploy 0.6145176 -0.3093769 0.8693097 1.0000000
cor関数の引数に指定した列の全ての組み合わせの相関係数を計算することが出来ました。
散布図
数値だけじゃ分かり難いので、散布図も描いてみましょう!
ggplot2をベースに作られているGGallyパッケージの ggpairs関数を使います。
GGallyパッケージをインストールした後、次のコードを実行します。
ggpairs(data=economics, columns = c(2, 4:6), axisLabels = “internal”)
ここでは、全ての引数を指定していませんが、以下が引数の内容です。
引数名 | 説明 |
---|---|
data | 散布図行列の対象となるデータフレームを指定します。 |
columns | 散布図行列に表示する列のインデックスまたは列名のベクトルを指定します。例えば、c(2, 4:6) のように指定します。 |
mapping | エステティックを指定するための引数です。ggplot2::aes 関数の引数を指定します。例えば、mapping = ggplot2::aes(color = variable) のように指定します。 |
title | 散布図行列のタイトルを指定します。 |
upper | 上三角行列の表示方法を指定します。デフォルトでは、連続変数には空白(blank)が表示されます。 |
lower | 下三角行列の表示方法を指定します。デフォルトでは、連続変数には平滑化曲線(smooth)が表示されます。 |
diag | 対角要素の表示方法を指定します。デフォルトでは、連続変数には密度プロット(density)が表示されます。 |
axisLabels | 軸ラベルの表示方法を指定します。デフォルトでは、内部(internal)ラベルが使用されます。 |
labelSize | ラベルのサイズを指定します。 |
全体のコードは次のような形です。
require(ggplot2)
require(GGally)
ggpairs(data=economics, columns = c(2, 4:6), axisLabels = "internal")
実行すると図のような形で、それぞれの散布図が描写されます。
数値だけで見るよりも、それぞれのデータがどのような関係になっているのかが分かり易いですね(^o^)
まとめ
今回は、複数列の相関係数を一度に比較する方法について勉強しました!
コメント