読者です 読者をやめる 読者になる 読者になる

Rを通じて統計学を学ぶ備忘録ブログ

SPSSからRに移行したい私のような人向けのR解説ブログ兼学習用備忘録。

第75回 ポリコリック相関係数・ポリシリアル相関係数

多変量解析

ポリコリック相関係数のp_11~p_00のp_00の式に誤りがありましたので、修正しました。(2016年2月21日)

ポリコリック相関係数・ポリシリアル相関係数

カテゴリ変数の関係をみようとすると、これまではスピアマンの順位相関係数とかケンドールの順位相関係数で見てきたわけなのですが、やはり順位間の情報をすっ飛ばしているので、少なからず厳密なものではありませんでした。

例えば、5件法では、尺度間の間隔がすべて同じという仮定を置いて計算することになりますが、この仮定にそもそも限界があるのではないか?というのも理由の一つです。 

そこで近年、ポリコリック相関係数やポリシリアル相関係数という新しい計算方法で算出される相関係数を利用する流れができつつあります。数学的なことは後にして、簡単に説明すると、以下のようになります。

順序変数×順序変数→ポリコリック相関係数

順序変数×連続変数→ポリシリアル相関係数 

つまり、5件法などでお馴染みのリッカート尺度は、心理的な特性を連続的なものとして捉えてはいるものの、測定上の理由で順序をつけて測定します。そこで、この背景にある「連続的な心理的特徴」を、観測された順序データから推定し、真の相関係数を推定することで算出されるのがポリコリック相関係数やポリシリアル相関係数なのです。

ポリコリック相関係数

まずは2つのカテゴリしか持たない変数XとYを例に考えます。ポリコリックだろうと、ポリシリアルだろうと計算に利用される基本的なアイデアは同じです。2つのカテゴリしか持たない変数X(0,1)とY(0,1)の背景に連続量の変数ZとWが存在し、ある値で2つに分けることで変数XとYのカテゴリが定まると仮定するのです。また、変数ZとWは以下の平均0、分散1の2変量正規分布に従います。また、変数XとYのカテゴリはZとWの値によって決まります。

f:id:teruaki-sugiura:20160214201527p:plain

クロス表をイメージするとわかりやすくなると思います。表の左にXの0、1、表の上にYの0、1のような感じで、X=0、Y=0をn_00のような感じ。その他も同様に。

この2変量正規分布と仮定のもと、XとYの確率は以下のように与えられます。これらの確率はZ, Wの区切りa, bと2変量正規分布のρにより定まることがわかります。

f:id:teruaki-sugiura:20160221000538p:plain

 f:id:teruaki-sugiura:20160221000544p:plain

そして、この性質とクロス表のデータを利用して、以下の尤度関数(多項分布)のa, b, ρのパラメタを最尤法で最大になる値を求めることで、相関係数を計算します。これが「テトラコリック相関係数」です。

f:id:teruaki-sugiura:20160214201558p:plain

3つのカテゴリをもつ順序尺度の場合、基本的な考え方はおなじですが、少し複雑になります。これが「ポリコリック相関係数」です。

f:id:teruaki-sugiura:20160214201609p:plain

ポリシリアル相関係数

ポリシリアル相関係数は順序変数×連続変数の場合の相関係数です。基本的な考えはポリコリック相関係数と同じです。Xを連続変数として、Yをカテゴリ変数と考えます。そして、Yの背景には連続変数Zを仮定します。Zを分ける値をaとします。ポリコリック相関係数と同様にXとZは平均0、分散1の2変量正規分布に従います。

f:id:teruaki-sugiura:20160214201726p:plain

次に、Xを条件付きとしたYの尤度が最大となるように尤度関数を求めます。X=xと条件を付けた場合、以下のようになります。余事象を利用して、P(Y=0|X=x)もみておきましょう。その結果、Yに関する尤度関数を考えることができます。この尤度関数を最大にする区切りaとパラメタρを決定することで、ρが「ポリシリアル相関係数」となります。

f:id:teruaki-sugiura:20160214201739p:plain

3つのカテゴリをもつ順序尺度の場合、基本的な考え方はおなじですが、少し複雑になります。

f:id:teruaki-sugiura:20160214201747p:plain

R実践

Rでは以下の関数で計算できます。polycorパッケージをインストールすることをお忘れなく。

#ポリコリック相関係数
polychor(x, y, ML = TRUE)

#ポリシリアル相関係数
#第1引数は連続変量を指定する
polyserial(x, y, ML = TRUE)

 実際にどの程度近似できているのかシュミレーションしてみましょう。 スピアマンの順位相関係数よりも、ポリコリック相関係数の方がうまく近似できています。

r1 <- rnorm(100, 0 , 1)
r2 <- rnorm(100, 0 , 1)
z <- r1 + r2
w <- r2
#z,wの相関係数は理論的には√2/2(=0.707)
cor(z, w)
#x,yに各乱数をカットして、カテゴリ化
x <- cut(z, breaks <- c(-5, -2, -1, 0, 1, 2, 5), label <- c(1:6), right = FALSE)
y <- cut(w, breaks <- c(-5, -2, -1, 0, 1, 2, 5), label <- c(1:6), right = FALSE)
#カテゴリ化されたx,yの相関係数を調べる
polychor(x, y)

x <- as.integer(x)
y <- as.integer(y)
cor.test(x, y, method = "s")

f:id:teruaki-sugiura:20160214210022p:plain

広告を非表示にする