ABテスト(5)_効果検証

前回、ABテストに必要なデータ数に触れました。

blog.hatena.ne.jp

今回は、テストした後の効果検証について書きます。

結果については一般公開ブログということもありますので差し控えさせていただきますが、非常に興味深い結果が得られました。

効果検証の必要性


せっかく苦労してABテストしても、それが偶然の結果では?と思われては意味がありません。

また、偶然では今後の知見にもなりません。ですのでテストの結果が偶然ではなく、統計学的に有意であると周りに説得するためには

AとBの差を検定する必要があります。今回は「カイ2乗検定」で効果検証します。

カイ2乗検定とは


カイ2乗検定とは、「観察された事象の相対的頻度がある頻度分布に従う」という帰無仮説を検定するもの(WIKI)

*ピアソンのカイ二乗検定

ja.wikipedia.org

はい、よくわかりませんね汗

いわゆる、わかる人にはわかる説明ですね汗

もう少し分かりやすく書きます。

「クロス集計をした際に、行と列の項目(2変数)に関係があったのか、それとも関係がなかったのか(独立)を検証すること」

偶然だったのか必然だったのかを検証する方法ですね。

厳密にいうと、カイ2乗検定は「独立性の検定」と「適合度の検定」の2種類あるのですが、今回の目的では前者の検定をします。

後者は、実測度数がある特定の分布に適合するかどうかを検定するときに使います。WIKIの説明は後者ですね。

検証方法


カイ2乗検定の数式はそれほど難しくないのですが、実務ではいかに早く結果を出せるかが重要です。

ですので、実務ではツールを使っても良いと思います。

変数を入力するだけで、結果を自動で出してくれるサイトもあります。

ただ、調べてみると2 X 2のクロス集計についての独立性の検定を自動で計算してくれるサイトはあっても、

要素がそれ以上あるm X n コのクロス集計には対応してるものがあまりありませんでした。

この場合はExcelPythonを使えばすぐにできます。

Excel


Excelは実測値と、独立と仮定したときの期待値の表を用意し、以下の関数を使えばP値が出せます。 P値とは、大ざっぱに言えば偶然の確率です。これが何%以下の時に独立でない(変数に関連がある)と判断するかは予め決めておく必要があります。

CHITEST(実測値の個別の値セル, 期待値の個別の値セル )

Python


Pythonでは、scipy.statsモジュールのchi2_contingency関数の引数に分割表を指定するだけで、独立性の検定をしてくれます。

stats.chi2_contingency(データフレーム)

Excelのように、期待度数の表を自分で作る必要がないのは楽でよいですね。

蛇足


Pythonはさすがというか、細かい補正もできるんですね。

「correction=False で、イエーツの補正を実施しない」とか設定もできます。

(デフォルトでは correction=True)

イエーツの補正は、「総度数n < 20」 または、 「n < 40 かつ 期待度数 5未満のセルがある」場合に使うのが一般的とされています。

ただ、これは統計の知識がないとさっぱり分かりませんし、そこまでの厳密性が求められているかは、状況で判断したほうが良さそうです。

以前にツールを使わずに数式を計算したことがあるのですが、何をやっているのかを理解するにはそれが良いですね。

内容を理解せずにツールで結果をパッと出してしまうと、結果が出ても何を言っているのか分からなくなります。

統計は奥が深いですね。

以上です。