【統計】連関係数(ファイ、ピアソン、クラメール)

クロス表の連関係数について記載。

【目次】

 

計算式等


次のクロス表で考える。

  Outcome Total
0 1
Factor 1 a b AB
2 c d CD
Total AC BD N

 

ファイ係数(Phi coefficient)

\quad \phi =\dfrac{a\times d-b\times c}{\sqrt{AB\times CD\times AC\times BD}}

 -1~1の値を取り、絶対値が1に近いほど関連性が大きい。
 2×2のクロス表で用いられ、本係数の絶対値はクラメールの連関係数と一致する。

 

ピアソンの連関係数 (Pearson's contingency coefficient)または一致係数
\quad C=\sqrt{\dfrac{\chi ^{2}}{\left( N+ \chi ^{2}\right) }}

 ※ \chi ^{2} は連続修正なしの値を用いる。

 0~1の値を取り、1に近いほど関連性が大きい。

 

クラメールの連関係数(Cramer's contingency coefficient)またはクラメールのV(Cramer's V)

\quad V=\sqrt{\dfrac{\chi ^{2}}{\left( \min \left( R,\ C\right) -1\right) \times N}}

 ※min(R, C)はmin(行数, 列数)であり、行数と列数から最小値を取得する。
 ※ \chi ^{2} は連続修正なしの値を用いる。

 0~1の値を取り、1に近いほど関連性が大きい。

   

カイ二乗統計量の計算は以下の記事。

【統計】χ二乗検定 - こちにぃるの日記

 

計算例


今回は2×2と3×3のクロス表で各係数を見てみる。
 

2×2のクロス表 

f:id:cochineal19:20201220182807p:plain

ファイ係数:

\quad \phi =\dfrac{30\times 25-18\times 10}{\sqrt{48\times 35\times 40\times 43}}≒0.33532

ピアソンの連関係数:

\quad C=\sqrt{\dfrac{9.3323}{\left( 83+ 9.3323\right) }}≒0.31792

クラメールの連関係数:

\quad V=\sqrt{\dfrac{9.3323}{\left( \min \left( 2,2\right) -1\right) \times 83}}≒0.33532

 

Rでの実行:

> library(vcd)
> mtx1 <- matrix(c(30, 18, 10, 25), nrow=2, byrow=TRUE)
> vcd::assocstats(mtx1)
                    X^2 df  P(> X^2)
Likelihood Ratio 9.5650  1 0.0019832
Pearson          9.3323  1 0.0022515
Phi-Coefficient   : 0.335 
Contingency Coeff.: 0.318 
Cramer's V        : 0.335 

 SASでの実行: 

data ads;
input FACTOR OUTCOME CNT @@;
datalines;
1 0 30 1 1 18 2 0 10 2 1 25
;
run;
proc freq data=ads;
  table FACTOR * OUTCOME / chisq nocol nopercent;
  weight CNT / zeros;
  output out=Outds chisq;
run;

f:id:cochineal19:20201220183023p:plain


3×3のクロス表(2×2以上のクロス表)

f:id:cochineal19:20201220183256p:plain

ファイ係数:

 NA

ピアソンの連関係数:

\quad C=\sqrt{\dfrac{15.2436}{\left( 83+ 15.2436\right) }}≒0.39391

クラメールの連関係数:

\quad V=\sqrt{\dfrac{15.2436}{\left( \min \left( 3,3\right) -1\right) \times 83}}≒0.30303

 

Rでの実行:

> library(vcd)
> mtx2 <- matrix(c(13,6,4,6,8,7,5,13,21), nrow=3, byrow=TRUE)
> vcd::assocstats(mtx2)
                    X^2 df  P(> X^2)
Likelihood Ratio 15.286  4 0.0041429
Pearson          15.244  4 0.0042217
Phi-Coefficient   : NA 
Contingency Coeff.: 0.394 
Cramer's V        : 0.303 

SASでの実行:

data ads;
input FACTOR OUTCOME CNT @@;
datalines;
1 0 13 1 1 6 1 2 4 2 0 6 2 1 8 2 2 7 3 0 5 3 1 13 3 2 21
;
run;
proc freq data=ads;
  table FACTOR * OUTCOME / chisq nocol nopercent;
  weight CNT / zeros;
  output out=Outds chisq;
run;

f:id:cochineal19:20201220183154p:plain

(※SASは2×2以上もファイ係数を計算するみたい)
  

プログラムコード


■ Rのコード

library(vcd)
vcd::assocstats(mtx1)

 

SASのコード

proc freq data=[InputDS];
table VAR1 * VAR2 / chisq nocol nopercent;
weight CNT / zeros;
output out=[OutputDS] chisq;
run;

カイ二乗検定で一緒に出力してくれる。

 

Pythonのコード

整備中

 

参考


統計学(出版:東京図書), 日本統計学会編

本ブログは個人メモです。 本ブログの内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。