今回は通信・放送産業動態調査のデータをつかってデータどうしの相関係数をみてみようと思います。
まずは、いままでと同じく、read.csv関数でデータを読み込み、head関数ではじめの6行を表示し、summary関数で最小値・最大値・平均値・中央値、第1分位値、第3分位値を表示します。
相関係数は、cor関数で計算できます。
まずは、cor(data)と入力してみましょう。
R言語のcor関数は、このようにデータフレームに適用すると、簡単に相関マトリックスを作成してくれます。
もう少し見やすくしましょう。必要な列は全体(4列目)、電気通信(5列目),
放送(6列目)、民放(7列目)、ケーブルテレビ(8列目)、TOPIX_CHG(10列目)なので、data[ , c(4, 5, 6, 7, 8, 10)]と必要な列を指定してcor関数を適用します。
cor(data[ , c(4, 5, 6, 7, 8, 10)])と入力します。
だいぶスッキリしましたが、小数点以下の数が多すぎますね。round関数で小数点以下3桁までの表示にしましょう。
round(cor(data[ , c(4, 5, 6, 7, 8, 10)]), 3)と入力します。
スッキリしましたね。全体と電気通信は高相関、ケーブルテレビは他のデータと逆相関だとわかります。
cor関数はデフォルトではPearsonの積率相関を計算しますが、method="kendall"というオプションをつけると、Kendallの順位相関になり、method="spearman"にすると、Spearmanの順位相関になります。一応、method="pearson"として、Pearsonの積率相関になることを書いておいきます。
Kendallの順位相関、Spearmanの順位相関も出してみましょう。
3つの相関マトリックスを見ると、相関係数の値が違っていますが、傾向は全体と電気通信は高相関で、ケーブルテレビは他のデータと逆相関で、同じだとわかります。
こうして計算された相関係数が有意なのかどうかは、cor.test関数でわかります。
例えば、Pearsonの積率相関で一番相関の高いペア、全体と電気通信の相関係数が有意なのかどうかは、cor.test(data$全体, data$電気通信)と入力します。
p-value < 2.2e-16 < 0.05ですから全体と電気通信の相関は有意だとわかります。
それでは、Pearsonの積率相関で一番相関の絶対値が0に近いペア、ケーブルテレビとTOPIX_CHGの相関を検定してみましょう。
p-value = 0.5856 > 0.05 なのでケーブルテレビとTOPIX_CHGは無相関だとわかります。