最終更新
リンドくん
たなべ先生、アンケート結果を分析してるんですけど、「性別と商品の好み」みたいな項目同士に関連があるかどうかって、どうやって調べればいいんですか?
たなべ
そういうときに使うのがカイ二乗検定(カイにじょうけんてい)という統計手法なんだ。
アンケートのようなカテゴリーデータの関連性を科学的に調べることができるんだよ。
データ分析を始めると、必ず遭遇するのが「2つの項目に関連性があるか」という問いです。
例えば、「男性と女性で商品の好みに違いがあるのか」「年齢層によって利用サービスに偏りがあるのか」といった疑問は、ビジネスでもよく出てきますよね。
こうした質問に答えるための強力なツールがカイ二乗検定(chi-square test)です。
本記事では、統計学初心者の方でも理解できるよう、カイ二乗検定の基本概念から実際のPythonコードを使った分析まで、段階的に解説していきます。
アンケート結果を「なんとなく」ではなく、科学的根拠を持って分析できるスキルを身につけていきましょう!
HackATAは、IT技術を習得する人のために広く開かれたオンラインコミュニティです。 現在、無料コミュニティとして開放していますので、ご気軽に参加してください。
✓ 再立ち上げ
✓ コミュニティの方向性について意見募集中
リンドくん
「カイ二乗」って名前からして難しそうなんですけど...
たなべ
名前は確かに難しそうだけど、やってることはシンプルなんだよ。
「実際の結果」と「関連がないと仮定した場合の予想結果」を比べるだけなんだ。
カイ二乗検定は、カテゴリーデータ(質的データ)の関連性を調べる統計手法です。
カテゴリーデータとは、「男性・女性」「好き・嫌い」「A商品・B商品・C商品」のように、数値ではなく分類で表されるデータのことです。
この検定の核心は以下の考え方にあります。
カイ二乗検定が活躍する場面は以下のようなケースです。
これらはすべて「カテゴリー×カテゴリー」の関連性を調べる問題であり、カイ二乗検定が最適な手法となります。
カイ二乗検定は仮説検定の一種です。基本的な流れは次のようになります。
この一連の流れを理解することで、カイ二乗検定の本質が見えてきます。
リンドくん
実際にはどうやって計算するんですか?数式とか出てきますか?
たなべ
基本的な考え方を理解しておくと、Pythonで実行するときも何をやってるか分かりやすいよ。
観測度数と期待度数の差を見るんだ。
カイ二乗検定では、まずクロス集計表(分割表)というものを作ります。
例えば、「性別」と「商品の好み」のアンケート結果を整理すると以下のようになります。
| A商品が好き | B商品が好き | 合計 | |
|---|---|---|---|
| 男性 | 30 | 20 | 50 |
| 女性 | 15 | 35 | 50 |
| 合計 | 45 | 55 | 100 |
この表の各マスの数字を観測度数と呼びます。
次に、もし「性別と商品の好みに関連がない」と仮定した場合の期待度数を計算します。
期待度数は以下の式で求められます。
例えば、「男性×A商品」の期待度数は次のようになります。
各マスについて、観測度数と期待度数の差を計算し、それを標準化したものの合計がカイ二乗統計量です。
この値が大きいほど、実際のデータが「関連なし」という仮定から大きくずれていることを意味します。
カイ二乗統計量が計算できたら、それが偶然起こる確率(p値)を求めます。
一般的にはp値が0.05未満なら「関連がある」と判定します。
このp値の計算には自由度が必要で、クロス集計表の場合は以下のように求めます。
リンドくん
Pythonでやってみたいです!
たなべ
じゃあ、実際のコードを見ていこう。Pythonのscipyライブラリを使えば、すごく簡単にできるんだよ。
まずは、先ほどの「性別と商品の好み」の例をPythonで分析してみましょう。
このコードを実行すると、以下のような結果が得られます。
このコードのポイントを解説します。
chi2_contingency()関数 → カイ二乗検定を一発で実行してくれる便利な関数実際のデータ分析では、pandasのDataFrameを使うことが多いです。
以下はアンケートデータからクロス集計表を作成し、カイ二乗検定を行う例です。
カイ二乗検定は、2×2の表だけでなく、より大きな表にも使えます。
例えば、年齢層と利用サービスの関連を調べる場合は次のようになります。
このように、chi2_contingency()関数は表のサイズに関わらず使用できます。
リンドくん
どんな場合でもカイ二乗検定を使っていいんですか?
たなべ
実は、いくつか注意すべき点があるんだ。特にサンプルサイズが小さい場合は気をつける必要があるよ。
カイ二乗検定を正しく適用するには、以下の条件を満たす必要があります。
期待度数が小さすぎる場合の対処法は以下の通りです。
期待度数が小さい2×2表の場合は、フィッシャーの正確検定を使います。
カイ二乗検定では、各観測が独立しているという前提があります。
例えば、同じ人が複数回回答している場合などは、この前提が崩れるため注意が必要です。
重要な点として、カイ二乗検定で関連性が認められても、それは因果関係を意味しないことに注意してください。
例えば、「アイスクリームの売上」と「溺死者数」に統計的な関連が見られても、アイスクリームが溺死を引き起こすわけではありません。
両方とも「夏」という共通の要因が影響しているだけです。
リンドくん
カイ二乗検定、思ったより使いやすいですね!アンケート分析がもっと楽しくなりそうです。
たなべ
そう言ってもらえると嬉しいね!
統計の力を使えば、データから客観的な答えを導き出せるんだ。ぜひいろんな場面で活用してみてね。
カイ二乗検定は、カテゴリーデータの関連性を調べるための強力な統計手法です。
この記事で学んだ内容を振り返ってみましょう。
重要なポイントは以下です。
scipy.stats.chi2_contingency()で簡単に実行できるデータ分析のスキルは、実際に手を動かすことで確実に向上します。
この記事で学んだ知識を活かして、ぜひ実際のデータ分析にチャレンジしてみてください。