読者です 読者をやめる 読者になる 読者になる

変数間の相関係数の大きいペアを抽出する

 多変量データから相関行列を求め、相関係数の大きいペアを抽出する方法を以下にメモしておきます。*1 分析データは、定番のirisです。

# irisデータからSpeciesの情報を削除
iris2 <- iris[, -5]
# 相関行列の作成
x <- cor(iris2)
# データ形式の変換
library(reshape2)
y <- melt(x)
# 相関係数の絶対値の大きい順に並び換え
y2 <- y[order(abs(y$value), decreasing = TRUE), ]
# 同一変数の相関を削除
y3 <- y2[(nrow(x) + 1) : nrow(y2), ]
# 重複するペアを削除
y3[seq(1, nrow(y3), by = 2), ]

 上記のスクリプトを実行すると、以下のような結果が表示されます。

           Var1         Var2      value
12  Petal.Width Petal.Length  0.9628654
3  Petal.Length Sepal.Length  0.8717538
4   Petal.Width Sepal.Length  0.8179411
7  Petal.Length  Sepal.Width -0.4284401

*1:恐らく、他にもいろいろなやり方があると思います。特に、もっとスマートに「重複するペアを削除」する方法がありそうです。