A/Bテストの結果をどのように解釈するか?


A/Bテストの実施期間は?

A/Bテストを実施するとき、ほぼ必ずこのような質問を受けます。

「A/Bテストはどのくらいの期間、実施すれば良いのですか?」

これは難しい質問です。なぜなら質問の前提が間違っているからです。A/Bテストの結果が出るかどうかは、「期間」とは関係ありません。関係しているのは、「サンプル数」と「Aパターン/Bパターンの結果の差」です。来訪者を多く集めるサイトでテストを実施するのであれば早く終了させることができます。また、Aパターン/Bパターンで大きな差が早い段階から認められるのであれば、早く終了させることができます。
実施期間について端的に回答するとすると、

「期間は関係ありません、両パターン間に有意差が認められるまでです」

となります。ただ、このような回答をすると、スケジュールも組めないし、馬鹿にしていると思われるので、下のような回答が良いと思います。

「CVが各100件集まるくらいが目安です。1日当たりのCV数は50件程度なので、少し余裕をもって1週間あれば十分です。」

これは全く根拠が無い回答というわけではないです。ログ分析の場合、どうしても計測エラーが出てしまうので、CVが100件程度あった方が安心です。CVRが3%だとすると、テスト回数は33,333回となるので、サンプル数としても十分な数となります。これで差が認められないのであれば、「違いがない」と言い切って問題ないでしょう。

データの解釈方法

A/Bテストの本来の実施期間は、さらっと「両パターン間に有意差が認められるまで」と書きましたが、これはどういうことでしょうか。
具体例を見ていきます。AパターンとBパターンでテストを行いました。
Aパターンのテスト回数は1,000回で、CV数は30回でした。
Bパターンのテスト回数は1,000回で、CV数は35回でした。

AパターンのCVRは3.0%、BパターンのCVRは3.5%。

「なんとBパターンの方が117%も大きい!テストは大成功だ!」

こんなことがよくありますが、本当にこれでいいんでしょうか?
3.0%と3.5%。一見すると、当然3.5%の方が高い数値に見えますが、統計的にはこの段階では何とも言えません。2つのデータに違いがあるかどうかを言うには検定を行う必要があります。通常はカイ二乗検定を行います(サンプル数が少ない場合は「フィッシャーの正確確率検定」が望ましいです)。
カイ二乗検定を行うと、P値は0.614でした。0.05を大きく上回っているので、有意差は認められません(検定については、前のエントリ「 統計学の基礎」を参照)。よって、

「AパターンとBパターンに違いがあるとは言い切れない」

が結論となります。もちろん、違いがないとも言い切れないので、もっとテストを続けれるのがベターですが、時間の問題もあるので、大した違いはないですという結果でOKだと思います。
なので、
「なんとBパターンの方が117%も大きい!テストは大成功だ!」
は大きな間違いです。統計学を知らないと、こんな間違いにも気づくことができません。
大部分のA/Bテストツールには何らかの検定の仕組みが付いています。検定が付いていないツールなんて捨てちまえと言いたいところですが、そういうわけにもいかないこともありますので、必ず自分で検定を行いましょう。検定の仕組みが付いている場合も検定ロジックが明確でない場合も多いので、自分で検定を行なった方が望ましいと思います。

どのようにして結果を伝えるか

一人でニコニコとテストしているのであれば良いですが、チームでテストを運営している場合、結果をチーム内に伝えるのもアナリストの重要な仕事です。しかし、

「カイ二乗検定を行なった結果P値が0.614だったため、両者に有意差は認められません」

と言っても、伝わる人には伝わりますが、統計を何も知らない人には何も伝わりません。なにより直感的ではないです。直感的でわかりやすいというA/Bテストの長所を台無しにしてしまいます。
では、どのようにして伝えるべきでしょうか。
まずは検定を諦めることです。検定はどうしてもわかりにくいです。説明し出したら、検定のロジックの説明から始まり、正規分布を前提としていいのかどうか、など収拾がつかなくなってしまいます。ただ、検定を行わないと、有意差があるかどうかの説明ができません。代替案として、「区間推定」を用います(区間推定についても、前のエントリ「 統計学の基礎」を参照)。
上のA/Bパターンの取りうる値は以下のようになります。

下限 CVR 上限
Aパターン 1.94% 3.00% 4.06%
Bパターン 2.36% 3.50% 4.64%

両パターンの取りうる範囲をグラフ化すると、下のようになります。
線の長さが取りうる範囲(信頼度95%)で、大きい部分は2/3程度を占める範囲です。

これを見ると、Aパターン、BパターンのCVRが取りうる範囲がかなり被っていることがわかります。範囲が被っているということは、どちらのCVRの方が高くなるのかわからないということです。よって、この結果には有意差が無いと言うことができます。

今度は有意差があるパターンを見ていきます。
Aパターンは同じ「テスト:1000回、CV:30回」で、Bパターンのみ「テスト:1000回、CV:70回」に変えます。
これで区間推定を行うと、以下のようになります。

下限 CVR 上限
Aパターン 1.94% 3.00% 4.06%
B’パターン 5.42% 7.00% 8.58%

この場合、Aパターンの上限はBパターンの下限よりも下回っています。つまり、取りうる範囲に「被り」がありません。よって、AパターンとBパターンに有意差が認められるということができます。
(ちなみに、区間推定を用いる場合、カイ二乗検定よりも検定力は落ちるはずです。つまり有意差が出にくくなります)

区間推定の場合、グラフで範囲を示すことも可能で、結果が明確でわかりやすいというメリットがあります。大抵の場合、結果を伝えるには区間推定で十分だと思います。

いや、でも面倒でしょ?

区間推定の計算自体は、さほど難しくないですが、毎回毎回計算しているのはちょっと面倒です。Excelで上みたいなグラフ出すこともできないですし。毎回毎回面倒な計算をしないために、計算を自動で行うツールを作成しました。

A/Bテスト データ分析 A/B test Interpreter

ここで、オリジナルパターンとテストパターンのインプレッション数(テスト回数)とCV回数を入力して、「結果を表示する」をクリックすると、信頼区間が表示されます。その後、「グラフを表示する」をクリックすると、上のような箱ひげ図が表示されます。
また、URLでデータを指定できるようにもしています。
http://web-analytics-or-die.org/abtest/ の後に、「#!/」を付けて、

  • オリジナルパターンのインプレッション数
  • オリジナルパターンのCV回数
  • テストパターンのインプレッション数
  • テストパターンのCV回数

の順に「-」で区切ってデータを並べてください。
上で書いた一回目のテストの場合、URLは
http://web-analytics-or-die.org/abtest/#!/1000-30-1000-35/
となります。
二回目のテストの場合は
http://web-analytics-or-die.org/abtest/#!/1000-30-1000-70/
です。

これを使うとかなり簡単に区間推定を行うことができると思います!

3 Comments

  1. [...] 他にもエクセルやRで計算したりA/Bテストの結果をどのように解釈するか?に公開されているツールを使って検証する方法もあります。(ウェブツールの信頼性はご自分で判断してください。) [...]

Leave a Reply