LoginSignup
0
0

カイ二乗($\chi^2$:chi squared)

・観測度数が期待度数からどれくらい離れているかを計算した値
・{(観測度数-期待度数)^2 / 期待度数}の総和

"どれくらい離れているか"を調べるには観測度数と期待度数の差を計算すればよさそうですね。ですがただ単に差をとって足し合わせると、プラスとマイナスで打ち消し合ってゼロになってしまいます。
そこで、二乗した総和にしてみましょう。(絶対値だとマイナスを掛けないといけないため、扱いにくい!)

カイ二乗.png

数式で書くと以下のようになります。
a行b列の分割表におけるi行j列の観測度数がnij,期待度数がeijとすると

\chi^2 = \sum^a_{i=1}\sum^b_{j=1}\frac{(n_{ij}-e_{ij})^2}{e_{ij}}

連関(association)

Pythonで実践
分割表を求める
・pd.crosstab(xarray, yarray)

import pandas as pd

# データ準備
df = sns.load_dataset('tips')
df['tip_rate'] = df['tip'] / df['total_bill']

pd.crosstab(df['sex'], df['time'])

スクリーンショット 2024-05-18 10.16.41.png

$\chi^2$と期待度数を求める
・stats.chi2_contingency(cont_table, correction=False)

from scipy import stats


cont_table = pd.crosstab(df['sex'], df['time'])
stats.chi2_contingency(cont_table, correction=False)

結果

(10.277251918677742,        第1戻り値 -> $\chi^2$
0.0013468039268008766,
1,
array([[ 43.75409836, 113.24590164],
[ 24.24590164, 62.75409836]]))   第4戻り値 -> 期待度数


この結果の$\chi^2$を見ても大きいのか小さいのかわからないのですよね。
次回は、相関係数で学習したときと同様に標準化することを考えます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0