尺度水準に適した相関係数とシミュレーション

今回は相関係数の比較をする。

通常、相関係数というとピアソンの積率相関係数のことを指す。 ピアソンの積率相関係数は連続変数と連続変数の関連を調べるために使用されるが、連続変数以外でも下記のような相関係数がある。

  • ピアソンの積率相関係数: 連続変数と連続変数
  • ポリコリック相関係数: 順序変数と順序変数
  • ポリシリアル相関係数: 順序変数と連続変数
  • テトラコリック相関係数: 2値データと2値データ
  • 点双列相関係数: 2値データと連続変数

これらの手法を使うとどの程度、ピアソンの積率相関係数で計算したものと、結果が違ってくるのかをシミュレーションするのが今回の課題だ。

データの作成とリコード

まずはサンプルデータを作成する。こちらで作成したデータだ。

library(mvtnorm)
set.seed(1234) # 乱数シードの固定
N <-1000 # サンプルサイズの指定
Sigma = matrix(c(1,0.54,0.54,1), byrow=TRUE, ncol=2) # c()の中に相関係数を入れる。
mu <- c(45, 65) # 平均値
d1 <- data.frame(rmvnorm(n=N, mean=mu, sigma=Sigma)) # 乱数の作成
d1 <- round(d1) # まるめ(四捨五入で整数値に)
colnames(d1) <- c("Math","Science") # 列名を挿入

このデータをリコードして使用する。分位点でのリコードの方法はこちら。今回はOneRパッケージのbin関数を利用しているが、デフォルトでRにあるcut関数を利用してもよい。

4分位。順序変数に。

library(OneR)
d2 <- bin(d1, nbins = 4, labels = c(1,2,3,4),  method = "content")
library(dplyr)
d2 <- d2 %>% mutate_if(is.factor, as.ordered) # 順序型への変更
d2_num <- d2 %>% mutate_if(is.factor, as.numeric) # 実数型データの作成

2分位(中央値)。Factor型に。

d3 <- bin(d1, nbins = 2, labels = c(1,2),  method = "content")
d3_num <- d3 %>% mutate_if(is.factor, as.numeric)  # 実数型データの作成 

これでd1は連続変数、d2は4分位の整数型の順序変数、d3は2分位の引数型の2値データになった。d2_num、d3_numという実数型の変数を作成したのは、ピアソンの積率相関係数を計算するためである。

ピアソンの積率相関係数

すべてピアソンの積率相関係数で計算する場合は以下のようになる。

ピアソンの積率相関係数

cor(d1$Math, d1$Science) # 連続x連続
cor(d2_num$Math, d2_num$Science) # 順序x順序
cor(d1$Math, d2_num$Science) # 連続x順序
cor(d3_num$Math, d3_num$Science) # 2値x2値
cor(d1$Math, d3_num$Science) # 連続x2値

polycorパッケージを使用した場合

カテゴリカルな相関係数を計算する際には、polycorパッケージを利用する。psychパッケージでも計算できるが、polycorパッケージをマスクしているだけなので、polycorパッケージを利用するのがよいと思う。

library(polycor)
polychor(d2$Math, d2$Science)    # 順序x順序: ポリコリック相関係数
polyserial(d1$Math, d2$Science)  # 連続x順序: ポリシリアル相関係数
polychor(d3$Math, d3$Science)    # 2値x2値: テトラコリック相関係数
polyserial(d1$Math, d3$Science)  # 連続x2値: 点双列相関係数

結果

変数 相関係数 相関係数 ピアソンで計算した場合
連続x連続 ピアソンの積率相関係数 0.5134011 -
順序x順序 ポリコリック相関係数 0.5652811 0.4941776
連続x順序 ポリシリアル相関係数 0.5446512 0.5032072
2値x2値 テトラコリック相関係数 0.5767616 0.3763131
連続x2値 点双列相関係数 0.5599601 0.4246202

もともとのピアソンの積率相関係数より値が高いのが少し気になるが、真値とほぼ同じ結果となっている。
一方、すべて連続変数だと仮定してピアソンで計算すると、真値から離れていることがわかる。
やはり、それぞれの尺度水準に適した相関係数を利用しなければならないようだ。

考察

因子分析関連でこれらの相関係数は利用される。
シミュレーションの結果、ポリコリックとテトラコリックを比較しても大きな違いは見られなかった。2値×2値のテトラコリックでも大きな違いはない。
調査の際に5件法より7件法の方が良い、件数が多い方が良いということを聞くことがあるが、これが明らかな間違いであることがわかる。

通常の因子分析で使用できるデータは連続変数である。相関行列がピアソンの積率相関係数で計算されるからだ。
心理学では順序尺度を連続変数とみなして因子分析をしている。

もちろん手法としては誤りである。ただ7件法くらいになると、相関行列を作る際にピアソンの積率相関係数でも、ポリコリック相関係数でも大きな違いがでないため、許容されているだけである。

5件法より7件法の方が連続変数に近いので、件数が多い方が推奨されるのだと思う。しかし、無駄に件数を増やす必要はなく適切な相関係数を使用すればよいことがシミュレーションからわかる。

回答者にとってみれば、5件法より7件法の方が答えにくい。件数を増やすと回答者に負担が増える。分析者が適切な技法の習得を怠っているために、回答者への負担を増やしてしまっているのではないだろうか。