Rによるデータ分析

Rによる連関係数分析

連関係数 を計算して、相関の大きいものだけをネットワークグラフで抽出する方法です。

変数の類似度の分析 です。

相関係数 のように、量的変数の類似度の分析では、線形の関係しか見ていませんが、 質的変数の類似度の分析をベースにした方法を使うと、量的変数の非線形の関係も見ることができるようになります。 数値の情報が粗くなる弱点はありますが、探索的データ分析では、あまり気にしなくて良いと思います。

連関係数+ネットワークグラフ

基本的に質的変数を扱う方法ですが、量的変数は 1次元クラスタリング の方法で、質的変数に変換するコードが入っているので、 質的・量的が混合していたり、量的変数だけでも使えるようにしてあります。

library(igraph) #ライブラリを読み込み
library(vcd)
#ライブラリを読み込み
setwd("C:/Rtest")
# 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T)
# データを読み込み
Data1 <- Data
# 1次元クラスタリングの出力先を作る
n <- ncol(Data1)
# データの列数を数える
for (i in 1:n) {
# ループの始まり。データの列数を数えて同じ回数繰り返す
if (class(Data1[,i]) == "numeric") {
# 条件分岐の始まり
Data1[,i] <- droplevels(cut(Data1[,i], breaks = 5,include.lowest = TRUE))
# 5分割する場合。量的データは、質的データに変換する。
}
# if文の処理の終わり
}
# ループの終わり
GM2 <- matrix(0,nrow=n,ncol=n)
# 出力先を作る
for (i in 1:(n-1)) {
# ループの始まり
for (j in (i+1):n) {
# ループの始まり
cross<-xtabs(~Data1[,i]+Data1[,j],data=Data1)
# 分割表の作成
res<-assocstats(cross)
# 連関分析
cramer_v<-res$cramer
# クラメールの連関係数の抽出
GM2[i,j] <- cramer_v
# クラメールの連関係数の書き込み
GM2[j,i] <- cramer_v
# クラメールの連関係数の書き込み
}
# ループの終わり
}
# ループの終わり
rownames(GM2)<-colnames(Data1)
# 行名をつける
colnames(GM2)<-colnames(Data1)
# 列名をつける
GM2[GM2<0.8] <- 0
# 相関係数の絶対値が0.8未満の場合は0にする(非表示にするため)
GM3 <- GM2*10
# 一番大きな値が10になるように修正(パスの太さを指定するため)
GM4 <- graph.adjacency(GM3,weighted=T, mode = "undirected")
# グラフ用のデータを作成
plot(GM4, edge.width=E(GM4)$weight)
# グラフを作成

cramer



参考文献

祐子 武田 氏の記事
質的変数の総当たりの組み合わせから、連関係数を求める方法は、このページを参考にさせていただきました。
https://qiita.com/ytakeda/items/058e83ebdd721f87ceb4




Tweet データサイエンス教室