crosshyou

主にクロス表(分割表)分析をしようかなと思います。

通信・放送産業動態調査の分析4 - 各データどうしの相関係数(R言語のcor関数)

今回は通信・放送産業動態調査のデータをつかってデータどうしの相関係数をみてみようと思います。

まずは、いままでと同じく、read.csv関数でデータを読み込み、head関数ではじめの6行を表示し、summary関数で最小値・最大値・平均値・中央値、第1分位値、第3分位値を表示します。

f:id:cross_hyou:20180711224342j:plain

相関係数は、cor関数で計算できます。

まずは、cor(data)と入力してみましょう。

f:id:cross_hyou:20180711224822j:plain

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)])と入力します。

f:id:cross_hyou:20180711225439j:plain

だいぶスッキリしましたが、小数点以下の数が多すぎますね。round関数で小数点以下3桁までの表示にしましょう。

round(cor(data[ , c(4, 5, 6, 7, 8, 10)]), 3)と入力します。

f:id:cross_hyou:20180711230145j:plain

スッキリしましたね。全体と電気通信は高相関、ケーブルテレビは他のデータと逆相関だとわかります。

cor関数はデフォルトではPearsonの積率相関を計算しますが、method="kendall"というオプションをつけると、Kendallの順位相関になり、method="spearman"にすると、Spearmanの順位相関になります。一応、method="pearson"として、Pearsonの積率相関になることを書いておいきます。

Kendallの順位相関、Spearmanの順位相関も出してみましょう。

f:id:cross_hyou:20180711232024j:plain

3つの相関マトリックスを見ると、相関係数の値が違っていますが、傾向は全体と電気通信は高相関で、ケーブルテレビは他のデータと逆相関で、同じだとわかります。

こうして計算された相関係数が有意なのかどうかは、cor.test関数でわかります。

例えば、Pearsonの積率相関で一番相関の高いペア、全体と電気通信の相関係数が有意なのかどうかは、cor.test(data$全体, data$電気通信)と入力します。

f:id:cross_hyou:20180711233000j:plain

p-value < 2.2e-16 < 0.05ですから全体と電気通信の相関は有意だとわかります。

それでは、Pearsonの積率相関で一番相関の絶対値が0に近いペア、ケーブルテレビとTOPIX_CHGの相関を検定してみましょう。

f:id:cross_hyou:20180711233622j:plain

p-value = 0.5856 > 0.05 なのでケーブルテレビとTOPIX_CHGは無相関だとわかります。