【R】-基本統計- 複数列の相関係数を一度に比較

スポンサーリンク

はじめに

こんにちは!ひらちんです!Rを使った統計について自分の勉強も兼ねて記事にしています。

今回は、データの複数列のそれぞれの相関を一気に比較する方法を紹介します!

スポンサーリンク

相関とは

相関とは2つのデータの一方が変化したら、もう一方も変化するというような関係のことを言うんでしたね!

その強さや関係(正か負か)について数値で表したものが相関係数でした!

上記の記事では、1組ずつの相関係数を出す方法を紹介しましたが、実際のデータは列がいくつもあって、どの組み合わせが相関があるのか複数試す必要があります。

いちいち1組ずつ計算するのは面倒です。

はい、もちろんRでは複数の相関を一気に計算出来る方法があるのでご安心下さい(^^)

スポンサーリンク

複数の相関を一度に計算する方法

複数の相関を一度に計算する場合も cor関数を利用します。

cor関数は、1組の場合は下記のように引数にxとyを指定します。

cor(x, y)

この引数をmatrixにすることで一気に計算することが出来ます。

matrixとは行と列からなる2次元のデータ構造のことです。各要素は行と列のインデックスを使ってアクセスできます。

構文

matrix(data, nrow, ncol, byrow, dimnames)

  • data: 行列に格納するデータを指定します。一次元のベクトルやリスト形式など、データの形式は柔軟です。
  • nrow: 行数を指定します。
  • ncol: 列数を指定します。
  • byrow (オプション): TRUEに設定すると、データの要素を行方向に埋めていきます。デフォルトでは、列方向に埋めていきます。
  • dimnames (オプション): 行と列の名前を指定するオプションです。
# データを準備
data_vector <- c(1, 2, 3, 4, 5, 6)

# 2行3列の行列を作成
matrix1 <- matrix(data_vector, nrow = 2, ncol = 3)

# 表示
matrix1

上記のコードでは、1から6までの要素を持つベクトルを作成し、その要素を2行3列に格納しています。

結果は次のようになります。

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

行列では、[行番号, 列番号]のようにして個々の要素にアクセスすることもできます。たとえば、matrix1[1, 2]は1行2列の要素を返します(ここでは値3)

実行サンプル

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^)

まとめ

今回は、複数列の相関係数を一度に比較する方法について勉強しました!

コメント

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