クラメールの連関係数
・連関の強さを表す指標
・$\chi^2$を0~1に標準化した値
このクラメールの連関係数は相関係数と同様な考えで、$\chi^2$ではどれくらい強い値なのか比較しづらいため、標準化して0~1で表したものになります。
式にすると以下のようになります。
V = \sqrt\frac{\chi^2}{(min(a, b) -1)N}
※min(a,b)は行数a, 列数bのうち小さい方である
$\chi^2$=35.53
a =2
b=2
min(a,b)=2
N=100
V = \sqrt\frac{35.53}{(2 -1)100} = 0.59
Pythonで実践
2つのarrayを引数に渡して、クラメール連関係数を返す関数を作成する
# クラメールの連関係数を求める関数
def cramers_v(x, y):
# 分割表を作成
cont_table = pd.crosstab(x, y)
# カイ二乗を求める
chi2 = stats.chi2_contingency(cont_table, correction=False)[0]
min_d = min(cont_table.shape) - 1
n = len(x)
# クラメールの連関係数
v = np.sqrt(chi2/(min_d*n))
return v
cramers_v(df['sex'], df['time'])
結果
0.20523129613344476