統計学

カイ二乗検定について分かりやすく解説!Rでの実装を一緒に見ていこう!

記事内に商品プロモーションを含む場合があります
ウマたん
ウマたん
本記事では、統計的検定の1つであるカイ二乗検定についてまとめていきます!カイ二乗検定はビジネスシーンで使用することが多く分かっていると非常に役立ちます。RでもPythonでも簡単に使うことができるのでぜひマスターしてくださいね!

こんにちは!

データサイエンティストのウマたん(@statistics1012)です。

ある事象の仮説を数理的に確かめるために行われる統計的検定

統計学の基本であり、様々なところで用いられている現場でも有用な手法です。

そんな統計的検定にはいくつか種類がありますが、この記事では実務で使われることの多いカイ二乗検定について見ていきたいと思います。

また検定全般に関して、以下の動画でも分かりやすく解説しています!

ウマたん
ウマたん
カイ二乗検定はデジタルマーケティングの世界でよく使われる手法だよ!

まずはじめにカイ二乗検定の理論を見ていき、最終的にはRで実装行っていきます!

カイ二乗検定とは?

カイ二乗検定は一見難しそうな検定なのですが、概念自体は非常に簡単。

具体的な例を挙げて見ていきましょう!

あるメールABの効果を確かめるためにランダムに振り分けたセグメントに配信を行いました。結果は以下の通り。

クリックしなかった数クリックした数配信数
メールA1000601060
メールB40040440
合計14001001500

※クリック数はメールからURLをクリックしてWebサイトへ遷移した数と定義します。

この時メールAとメールBでどちらの方が良いと言えるでしょうか?それとも、違いがあるとは言えないのでしょうか?

この時メールAとメールBでどちらの方が良いと言えるでしょうか?それとも、違いがあるとは言えないのでしょうか?

ウマたん
ウマたん
うーーん、なんとなくメールBの方が良い気がするけど・・・

ここでカイ二乗検定の出番になります。

カイ二乗検定の計算方法

カイ二乗検定

先ほどの例の場合、どのような計算を行ってカイ二乗検定の計算を行っていくのでしょうか?

簡単に見ていきます。そもそもABのメールに違いがなかったとしたらどうなるでしょう?

合計で1500通送ったうち100通がクリックされているわけですから、AもBも15分の1がクリックされることになるはず。

計算してみると・・・

Aは1060×(1/15)=70.7
Bは440×(1/15)=29.3

でも実際のところはAが60通で、Bが40通となっています。

これがたまたま誤差の範囲なのかそれとも決定的な違いがあるのかをカイ二乗検定により見ていくことになるわけです。

この差を以下の式で計算します。

$$ \sum\frac{(期待値-実測値)^2}{期待値} $$

すなわちこの場合は、クロス集計表の4セル全ての期待値を算出してそれぞれの実測値との値のズレの2乗を期待値で割ったものを全て足しあわせていきます。

$$ \frac{(70.7-60)^2}{70.7}+・・・ $$

結果は・・・5.88となりました。

この結果がカイ二乗値となり、カイ二乗値をもとにカイ二乗分布と照らしあわせてこの値が何%ほどで起こりうる値なのかを見てみます。

カイ二乗分布において自由度という指標が必要になるのですが、自由度は

$$ 自由度=(行数-1)×(列数-1) $$

で求めます。

今回は1になりますね!

自由度1でカイ二乗値が5.88の場合はどのくらいの確率で起きうるものなのでしょうか?

自由度1の時のカイ二乗分布の値は5%で3.84、1%で6.63、0.5%で7.88となっています。

通常は5%有意もしくは1%有意を用いますが、この場合5.88は3.84を上回っていますが6.63より小さいので5%有意となります。

つまりAとBが同じ前提の時、この事象は5%以下の確率でしか起きないということになるのです。

ロボたん
ロボたん
なるほど!そういうことなのか!カイ二乗検定の中身が理解できたよ!
ウマたん
ウマたん
実際にツールを使って検定を行うと意識しない部分にはなってしまうんだけど、知っておくと幅が広がるよ!

有意差については以下の記事をご参照ください。

significant-difference
【5分で分かる】有意差とは?具体例とともに意味と求め方をわかりやすく解説!当サイト【スタビジ】の本記事では、統計学の基礎となる有意差の考え方と求め方についてカンタンな例と共にわかりやすく解説していきます。学術的な文脈でも実務の文脈でも必ず登場する有意差について深く理解しておくことが大事です。...

カイ二乗検定の注意点

カイ二乗検定によって有意差があるかどうかと検定しましたが、検定においてはサンプルサイズの大きさが重要になってきます。

サンプルサイズが大きければ大きいほど少しの差で有意差を出しやすくなります。

例えば、先ほどの例でシンプルに全ての数値を約10%にシュリンクさせてみましょう!

クリックしなかった数クリックした数配信数
メールA1006106
メールB40444
合計14010150

この場合、カイ二乗値を計算すると0.588になります。

先ほどの5%点が3.84であり、それを下回っているので有意差があるとは言えません。

同じ比率であるので直感的には有意差がありそうだと思えるかもしれませんが、サンプルサイズが小さい時は信頼性が低く有意差ありと判定されないのです。

ロボたん
ロボたん
え!?サンプルサイズが違うだけでこんなに違うものなの!?

あるLPに対して集客するユーザーは一定数なので、その中で何個もテストパターンを作ってしまうと、その分サンプルがばらけて十分なサンプルが得られるまで有意差ありと判定されにくくなってしまいます。

なので、ABテストなど行ってカイ二乗検定で有意差を判定したい時は、ABテストのパターンを細かくしすぎないほうがよいでしょう!

検定に値する十分なボリュームのサンプルが取得できるかをしっかり前もって設計しておきましょう!

カイ二乗検定をPythonで実装してみよう!

それでは続いてカイ二乗検定をPythonで実装してみましょう!

import pandas as pd
import numpy as np
import scipy as sp
from scipy import stats
data = pd.DataFrame([[1000, 60], [400, 40]])

先ほどの例を使っていきたいので、このようにデータフレームを作成していきます。

続いて先ほど学んだようにそれぞれの期待値との差を以下のように計算していきカイ二乗値を算出していきます。

$$ \sum\frac{(期待値-実測値)^2}{期待値} $$

(60 - 1060/15)**2/(1060/15) + (1000 - 1060*14/15)**2/(1060*14/15) + (40 - 440/15)**2/(440/15) + (400 - 440*14/15)**2/(440*14/15)

結果は、5.880911541288903となりました。

この値を自由値1のカイ二乗分布の有意水準5%の点と比較してみると・・・

5.88 > 3.84となり、5%有意となりました!

カイ二乗検定

今回は実際に計算をして求めてきましたが、Scipyを使えば以下のように簡単に記述して同様の結果を得ることも可能です。

sp.stats.chi2_contingency(data, correction=False)

簡単ですね!

カイ二乗検定 まとめ

カイ二乗検定についてまとめてきました。

カイ二乗検定は実務で活躍することの多い手法であり、簡単に実装できれば一目置かれること間違いなしです!

ウマたん
ウマたん
ぜひ一度は自分の手で実装してみよう!

ちなみにカイ二乗検定を実際に行うWebアプリケーションをPythonで作る方法を以下の記事でまとめていますのでよければご覧ください!

macとsurface
Flaskでできることを確認しながら簡単なWebアプリの実例を作ってみよう!当サイト【スタビジ】の本記事では、Pythonの軽量WebアプリケーションフレームワークであるFlaskを使って簡単なWebアプリケーションを作成していきたいと思います。Pythonを開発言語としても使えるようになると、幅が広がりますよー!...

検定は統計学の基本のキでありながら奥が深くしっかり理解しておく必要があります。

検定まわりのお話は以下の書籍がオススメです。是非目を通してみてください!

■入門 統計解析法

統計学の基本を理解するのにうってつけの本です。基本的に高校レベルの数学ができれば問題なく理解できるレベル。大学生1~2年生の時に非常にお世話になりました。

■統計学入門(基礎統計学)

東大出版から出ている名著です。

赤本と呼ばれ慣れ親しまれています。レベル的には中級者~上級者で、1冊持っておくと、なにかと便利な1冊です。

カイ二乗検定を理解して実装してみて統計学の門をたたきましょう!

カイ二乗検定以外にもいくつかの統計的検定があります。統計的検定については以下の記事で詳しくまとめていますので是非ご覧ください。

統計的検定とは
統計的検定とは?具体例と種類について見ていこう!当サイト【スタビジ】の本記事では、統計検定の具体例と種類についてまとめていきます。おさえておきたいのはt検定とカイ二乗検定の2つ!この2つの意味と使い方をしっかりおさえておくことでビジネスレベルでは問題ありません。...

統計学、機械学習、データサイエンスについて詳しく学びたい方は以下の記事をチェックしてみてください!

【初心者必見】統計学入門に必要な知識と独学勉強方法を簡単に学ぼう!当ブログ【スタビジ】の本記事では、統計学入門に必要な知識をカンタンにまとめ、それらをどのように効率的に独学で勉強していけばよいかをお話ししていきます。統計学は難しいイメージが少しありますが、学び方をしっかり考えれば大丈夫!...
機械学習独学勉強ロードマップ
【5分で分かる】機械学習の独学勉強ロードマップを徹底的にまとめていく!当サイト【スタビジ】の本記事では、機械学習の独学勉強ロードマップについて徹底的にまとめていきます。機械学習をいきなり理論からしっかり勉強しようとすると挫折しかねません。そこで、この記事ではなるべく挫折しないロードマップをお伝えしてきますよ!...
【5分で分かる】データサイエンティストに必要なスキルと独学勉強ロードマップ!当サイト【スタビジ】の本記事では、データサイエンティストに求められるスキルとそれを身に付けるための勉強法について徹底的にまとめていきます!入門者でも、しっかりデータサイエンティストについて理解しある程度独学で駆け出しの状態までいけることを目指します。...

またデータサイエンティストになるための勉強がしたい!という方は当サイト「スタビジ」が提供するスタビジアカデミーというサービスで体系的に学ぶことが可能ですので是非参考にしてみてください!

スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら