SSブログ

【統計の質問】名義変数(カテゴリカルデータ)の相関分析 [データサイエンス、統計モデル]

統計の講師をしていて、なるほど!と思う質問を受けることがあります。
せっかくなので、その中からピックアップして紹介できればと思います。

【質問】
カテゴリカルデータの場合、相関係数や相関分析に対応するものはあるか?

【回答】
カテゴリカルデータですと、ポリコリック相関係数が有名。
順序尺度にも使えます。

### ポリコリック相関 ###
install.packages("polycor")
library(polycor)

# 強い正の相関の例
x <- c("A","B","A","B","A","B","A","B","A","B")
y <- c("A","B","A","B","A","B","A","B","B","B")
polychor(x, y, ML=TRUE) # ML=TRUE で最尤推定

# 強い負の相関の例
x <- c("A","B","A","B","A","B","A","B","A","B")
y <- c("B","A","B","A","B","A","B","A","A","A")
polychor(x, y, ML=TRUE)

# 相関がない例
x <- c("A","B","A","B","A","B","A","B","A","B")
y <- c("A","B","A","B","A","A","B","A","B","A")
polychor(x, y, ML=TRUE)

基本的には、ポリコリック相関だけで問題ないのですが、バイナリデータに特化した、テトラコリックというのもあります。
テトラコリックは、"psych"というライブラリに入っています。


### テトラコリック相関 ###
install.packages("psych")
library(psych)

# 正の相関
dat <- matrix(c(80,20,10,90),2,2)
tetrachoric(dat) # 相関係数 0.9

# 相関なし
dat <- matrix(c(50,50,50,50),2,2)
tetrachoric(dat) # 相関係数 0.0

# 負の相関
dat <- matrix(c(20,80,90,10),2,2)
tetrachoric(dat) # 相関係数 -0.9


### ポリコリック相関とテトラコリック相関の比較 ###
x <- c(1,0,1,0,1,0,1,0,1,0)
y <- c(0,1,0,1,0,1,0,0,1,0)

x <- as.factor(x)
y <- as.factor(y)

polychor(x, y, ML=TRUE) # 相関係数は、-0.61

# tetrachoricは、そのままだと、エラーになります。
tetrachoric(x, y) # エラー

# tetrachoricを使う場合は、テーブルにしておく
dat <- table(x, y)
tetrachoric(dat) # 相関係数は、-0.61

# polychorは、テーブル形式でも可能
polychor(dat) # 相関係数は、-0.61

nice!(7)  コメント(0) 
共通テーマ:学問