クロス表の連関係数について記載。
【目次】
計算式等
次のクロス表で考える。
Outcome | Total | |||
0 | 1 | |||
Factor | 1 | a | b | AB |
2 | c | d | CD | |
Total | AC | BD | N |
ファイ係数(Phi coefficient)
-1~1の値を取り、絶対値が1に近いほど関連性が大きい。
2×2のクロス表で用いられ、本係数の絶対値はクラメールの連関係数と一致する。
ピアソンの連関係数 (Pearson's contingency coefficient)または一致係数
※ は連続修正なしの値を用いる。
0~1の値を取り、1に近いほど関連性が大きい。
クラメールの連関係数(Cramer's contingency coefficient)またはクラメールのV(Cramer's V)
※min(R, C)はmin(行数, 列数)であり、行数と列数から最小値を取得する。
※ は連続修正なしの値を用いる。
0~1の値を取り、1に近いほど関連性が大きい。
カイ二乗統計量の計算は以下の記事。
計算例
今回は2×2と3×3のクロス表で各係数を見てみる。
2×2のクロス表
ファイ係数:
ピアソンの連関係数:
クラメールの連関係数:
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;
3×3のクロス表(2×2以上のクロス表)
ファイ係数:
NA
ピアソンの連関係数:
クラメールの連関係数:
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;
(※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のコード
整備中