そのABテスト正しいですか?
A社において、広告出稿時のランディングページの効果測定のために、実施することにしました。
Aliceさんは、Aパターン、Bパターンの2種類のデザインを用意しました。
ユーザが行なってほしいアクションを実行した場合を達成とし、それ以外の場合を未達成として集計しました。
その集計結果が以下の表です。
ユーザが行なってほしいアクションを実行した場合を達成とし、それ以外の場合を未達成として集計しました。
その集計結果が以下の表です。
達成 | 未達成 | 計 | |
---|---|---|---|
Aパターン | 60 | 490 | 550 |
Bパターン | 90 | 580 | 670 |
計 | 150 | 1070 | 1220 |
Aliceさんは、さらに、上記の結果を割合に変更したものを作成し、上司に以下のコメントを添えて提出しました。
『Bパターンのほうが Aパターンに比べて2.52%も達成した割合が高いため、ランディングページはBパターンでいくこととします。』
達成 | 未達成 | |
---|---|---|
Aパターン | 10.91% | 89.09% |
Bパターン | 13.43% | 86.57% |
Aliceさんの報告は正しいのでしょうか?
今回の結果について、Aliceさんは単純に割合で結果を報告しました。
しかし、『偶然』という点を考慮するとどうでしょう?
上記の表のみでは、『偶然』このような結果になったと否定することはできません。
『偶然』を否定するためには、推計統計学のカイ二乗検定を利用します。
上記の表のみでは、『偶然』このような結果になったと否定することはできません。
『偶然』を否定するためには、推計統計学のカイ二乗検定を利用します。
カイ二乗値の算出
以下は計算過程を示したものですので、興味が無い方は読み飛ばし推奨
χ^2 = (観測値1 - 期待度1) ^ 2 / 期待度1 + (観測値2 - 期待度2) ^ 2 / 期待度2 + ... (観測値n - 期待度n) ^ 2 / 期待度n
参考例題のサイコロの例の場合ではχ^2 = (17 - 16.67) ^ 2 / 16.67 + (15 - 16.67) ^ 2 / 16.67 ...
を計算すれば良いことになります。
カイ二条検定において、観測値のほかに、期待度という値が必要になります。
サイコロの例の場合『どの目も1/6の確率で出現する』という推定ができるので、この期待度の算出は簡単です。
今回のA/Bテストのような場合はどのように期待度を算出すればよいのでしょうか?
</div>
</div>
</div>
</div>
期待度の算出
この仮説では、期待度は算出できません。
(Bパターンのほうが達成率が高くなる。その期待度はいくつであるというのがいえないため。)
そこで、『AパターンでもBパターンでもどちらを見せても、『達成』、『未達成』は変わらない』という仮定をしてみることにします。
カイ二乗検定で仮設を否定し、前述の『AパターンとBパターンでは、Bパターンのほうが達成率が高くなる』という仮定を立証するというアプローチをとります。
期待度 | 達成 | 未達成 |
---|---|---|
Aパターン | 67.62 | 482.38 |
Bパターン | 82.38 | 587.52 |
(150 * 550 / 1220)
(150 * 670 / 1220)
(1070 * 550 / 1220)
(1070 * 670 / 1220)
カイ二乗値の計算
期待度が算出できたら、カイ二乗値は簡単に算出できます。
実測値と期待度の表において、各項目につき以下を計算します。
(観測値 - 期待度)^2 / 期待度
各項目の上記計算結果の合計が 『カイ二乗値』となります。
達成 | 未達成 | |
---|---|---|
Aパターン | (60 - 67.62)^2 / 67.62 = 0.8587 | (490 - 482.38)^2 / 482.38 = 0.1204 |
Bパターン | (90 - 82.38)^2 / 82.38 = 0.7048 | (580 - 587.52)^2 / 587.52 = 0.0963 |
合計すると 『1.7802』となります。
これがカイ二乗値です。
推定の検証
今回の推定は、『AパターンでもBパターンでもどちらを見せても、『達成』、『未達成』は変わらない』という推定でした。
自由度(df)が 1 (達成,未達成の2パターンのみであるから。仮にA, B, Cの3パターンの結果がある場合は自由度は2となる。)
有意水準 5%
のおけるカイ二乗値をカイ二乗分布表(pdf)より算出すると、
『3.841』という値が得られます。
カイ二乗値は, 『1.7802』であるため、カイ二乗分布表の値より小さくなり、
今回のA/Bテストの結果は、『AパターンでもBパターンでもどちらを見せても、『達成』、『未達成』は変わらない』という仮設を否定することができないことになります。
(仮に3.841より大きい場合は、上記仮設を否定でき、『Bパターンのほうが、『達成』が多くなる』となります。)
まとめ
- A/Bテストの結果を比率に直した表を信頼してはいけない。
- 各種統計学的な手法を用いて、必ず有意差があることを立証すること。
- 有意差の立証方法は、様々な手法があるが、手法とその概要は覚える。
- 手法の計算式は、様々なツールがあるので覚えなくて良い。
おまけ: 簡単にカイ二乗値等を簡単に計算する
- Excelを使う
いっぱい落ちているのでそれを使う(ここでは解説しない) - R言語を使う(後述)
R言語を使う方法
インストールの仕方については、解説しません。
http://cse.niaes.affrc.go.jp/miwa/ja/R/setupR/index.html
などを参考にするとよいかもしれない。
インストールができたものとして、Rコンソール上で以下のように入力すると、カイ二乗値、p値それぞれが簡単に計算できます。
matrix(c(490, 60, 580, 90))のところの数値を変化させることで、2 x 2の集計結果についてはカイ二乗値が計算できます。
なお、 2 x 3についてはmatrix(c(a1, a2, a3, b1, b2, b3))としてください。
> chisq.test(matrix(c(490, 60, 580, 90), ncol=2, byrow=T))
Pearson's Chi-squared test with Yates' continuity correction
data: matrix(c(490, 60, 580, 90), ncol = 2, byrow = T)
X-squared = 1.5577, df = 1, p-value = 0.212
なお、この結果について p-value = 0.212 となっている点から、
このA/Bテストの結果は 『A, Bは達成、未達成に差がない状況で、21.2%の確率でこのような誤差、偶然が生じる』ということがいえます。
通常統計学的に認められる範囲は、Rでのchisq.testの結果の値が0.05未満であれば、この仮説を否定出来ます。
また、もし今回の結果がそれぞれについて2倍のサンプル数が取得できた場合は以下のような結果となります。
p値が約7%であるので、微妙なラインだが、この程度でれば、Bパターンを採用しても良いと考えられます。
(ようするに今回カイ二乗検定を実施したが、サンプル数が少なかったのでカイ二乗検定では有意性を認めることができなかったといえます。)
> chisq.test(matrix(c(980, 120, 1160, 180), ncol=2, byrow=T))
Pearson's Chi-squared test with Yates' continuity correction
data: matrix(c(980, 120, 1160, 180), ncol = 2, byrow = T)
X-squared = 3.3379, df = 1, p-value = 0.0677