1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

A/Bテストの結果をカイ二乗検定で検証してみた

Last updated at Posted at 2020-03-04

デジタルマーケティングの現場では、日々さまざまな施策のPDCAが回っています。こうしたプロセスにおいて、単純な数字の大小を比較するだけでは、施策の効果を正確に検証するのは難しいこともあるのではないでしょうか。統計学の知識をより良い分析や改善提案に生かすにはどうすればいいかという視点から、統計学的検定の手法を活用したケーススタディに取り組んでみました。

今回のトピックは、あるウェブサイトのA/Bテストの結果について、有意差の有無を検証するというものです(有意水準は0.05と仮定)。A/Bテストの効果検証によく用いられるカイ二乗検定(独立性の検定)を採用し、データはkaggleの「audacity ab testing」を参照しました。
https://www.kaggle.com/samtyagi/audacity-ab-testing

まずはライブラリをインポートし、データを読み込みます。

import math
import numpy as np
import pandas as pd
import scipy.stats
df=pd.read_csv("homepage_actions.csv")
df.head()

Capture.PNG

各カラムの説明は以下の通りです。
timestamp:アクセス日時
id:ユーザーID
group:コントロールグループがcontrol、テストグループがexperiment
action:クリックしたらclick、見ただけならview

次にデータを集計します。各グループの総数を出してみましょう。

group=df.groupby('group').count()
group

Capture4.PNG

さらにピボットテーブルで、グループ毎のクリック数を集計します。

pd.pivot_table(df,index='group',columns='action',values=['group','action'],aggfunc='count')

Capture3.PNG

それぞれのグループのクリック率は、
コントロールグループ:932÷4264=0.21857410881801126
テストグループ:928÷3924=0.23649337410805302
となり、クリック率自体はテストグループのほうが高いことが分かります。

果たして、テストグループのほうが有意にクリック率が高いと言えるのでしょうか?
カイ二乗検定で検証してみましょう。Pythonの場合、scipy.statsのchi2_contingency関数を使います。

data=np.matrix([[932,3332],[928,2996]])
chi2,p,ddof,expected=scipy.stats.chi2_contingency(data,correction=False)

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

Capture1.PNG

出力結果をみると、有意確率であるp値は0.05より高い数値になりました。この場合、「2標本の間には有意差がない」とする帰無仮説は棄却されません。つまり、テストグループのほうが有意にクリック率が高いとは言えないということになります。単純な数字の大小だけでは判断できない、ということが分かりますね。

クリック率だけで施策の良し悪しを判断するのは適切でないケースもあるでしょうが、こうした手法による分析は、より効果的な施策を打つための判断材料として活用できそうです。

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?