scipyで手軽にカイ二乗検定

業務でカイ二乗検定を行う場面は、割と多くあります。
自分の場合は、ABテストの評価で使うことが多いです。

Excelでも自分でコードを書いてでもさっとできるのですが、
scipyに専用の関数が用意されているのでその紹介です。

scipy.stats.chi2_contingency

これを使うと、引数にデータのクロス表を放り込むだけで、
カイ二乗値、p値、自由度、期待度数表を一発で算出してくれます。
3つの値と、期待度数がarray形式ではいったタプルが戻るので、引数を4つ用意して受け取ると便利です。


import pandas as pd
from scipy.stats import chi2_contingency

# 検定対象のデータ(サンプルなので値はダミー)
df = pd.DataFrame([[300, 100], [800, 200]])

chi2, p, dof, expected = chi2_contingency(df, correction=False)

print("カイ二乗値:", chi2)
print("p値:", p)
print("自由度:", dof)
print("期待度数:", expected)

# 以下出力
カイ二乗値: 4.242424242424244
p値: 0.03942583262944296
自由度: 1
期待度数: [[314.28571429  85.71428571]
 [785.71428571 214.28571429]]

このようにめんどな手間がなく一瞬で検定ができました。
ちなみに、
correction=False
はイエーツの修正を”行わない”設定です。
デフォルトがTrueなので注意してください。