データ分析系プログラマーのブログ

主にPythonを使ったデータ分析や機械学習をやっています。

Pythonを使った適合度のカイ二乗検定統計量の求め方

検定には、母平均、母比率、母分散を用いた検定の他に、二項分布、ポアソン分布、適合度、独立性の検定があります。このうち、カイ二乗統計量を用いた適合度の検定は、ある調査によって得られたクロス集計表がある場合、実測度数がある特定の分布に適合(一致)するかどうかを検定することをいいます。適合度の検定では、カイ二乗分布を用いて検定を行います。この記事では、Pythonを使って、適合度のカイ二乗の統計検定量の求め方と適合度の検定の行い方について紹介しています。

適合度の検定

適合度の検定は、カイ二乗統計量によって行います。カイ二乗統計量は、実測値と理論値のズレの和によって求められます。また自由度はカテゴリー数n-1によって求められます。


\chi^2=\frac{(実測値_1-理論値_1)^2}{理論値_1}+\frac{(実測値_2-理論値_2)^2}{理論値_2}+\dots+\\ \frac{(実測値_n-理論値_n)^2}{理論値_n}

例えば、日本人の血液型の分布はA型が40%、O型が30%、B型が20%、AB型が10%であると言われていて、ランダムに選ばれた100人の血液型について次のようなデータが得られた時、このデータは日本人の血液型の分布と同じといえるかどうかは以下のようになります。有意水準は0.05とします。

血液型 A型 O型 B型 AB型
度数 53 24 18 5 100

理論値は、

血液型 A型 O型 B型 AB型
度数 40 30 20 10 100

ズレの和は、


\chi^2=\frac{(53-40)^2}{40}+\frac{(24-30)^2}{30}+\frac{(18-20)^2}{20}+\frac{(5-10)^2}{10}=4.225+1.2+0.2+2.5=8.125

有意水準0.05、自由度4-1=3のカイ二乗の片側検定は、7.815となっています。

よって、有意水準5%において、帰無仮説を棄却し、対立仮説を採択するという結果になるので、調査した血液型分布は日本人の血液型分布と一致しないと結論づけられます。

Pythonを使った適合度のカイ二乗検定統計量の求め方

pythonを使って適合度のカイ二乗検定統計量を求める場合は以下のようになります。まず、実測値と理論値のデータをそれぞれ用意します。次に、for文を使って、カイ二乗統計検定量の式を用いて計算します。適合度のカイ二乗統計検定量は、scipyのstats.chisquareを使用することでも求められます。次に、有意水準0.05、自由度からカイ二乗の値をscipyのstats.chi2.ppfで求めて、有意水準0.05の片側検定で検定を行います。

data1 = [53,24,18,5]
data2 = [40,30,20,10]

chi2 = 0

for i, j in zip(data1, data2):
    chi2 += ((i - j)**2)/j

print("カイ二乗統計検定量 = ", chi2)

カイ二乗統計検定量 = 8.125

from scipy import stats
alpha = 0.05 #有意水準
df = len(data1) - 1 # 自由度n-1

print("chisquareを使用したカイ二乗統計検定量の値 = ", stats.chisquare(data1, f_exp = data2))

chi2_value = stats.chi2.ppf(1-alpha, df)

if chi2 > chi2_value:
    print("カイ二乗の値は", chi2_value, "なので、帰無仮説を採択し、対立仮説を棄却するという結果になり、",
          "調査した血液型分布は日本人の血液型分布と一致しないとは言えない結論づけられます")
    
else:
    print("カイ二乗の値は", chi2_value, "なので、帰無仮説を棄却し、対立仮説を採択するという結果になり、",
          "調査した血液型分布は日本人の血液型分布と一致しないと結論づけられます")

chisquareを使用したカイ二乗統計検定量の値 = Power_divergenceResult(statistic=8.125, pvalue=0.04349775141156383)
カイ二乗の値は 7.814727903251179 なので、帰無仮説を採択し、対立仮説を棄却するという結果になり、 調査した血液型分布は日本人の血液型分布と一致しないとは言えない結論づけられます

参考

統計学の時間 | 統計WEB