ほくそ笑む

R言語と統計解析について

A/Bテストと統計的検定の注意点(その1)

素晴らしい記事が上がっていたので言及したい。

この記事では、A/Bテストにおいて、意味のある差が出たかどうかを統計的検定を用いて判断する方法を説明しています。

Web上にある多くのA/Bテストの記事と異なるのは、単に検定手法にデータを突っ込んでp値を出すのではなく、

  • 意味のある差とは何かを事前に決定する
  • サンプルサイズを事前に決定する

という統計的検定のフレームワークに則ったまともな方法で判断を行っているという点です。

よく言われる統計的検定は無意味だなどという言論の多くは、このフレームワークを使っていないだけに過ぎず、不確実な事象に対する科学的な検証方法として、統計的検定のフレームワークの強力さはいまだ健在です。

さて、統計的検定のフレームワークについては上の記事および記事中で紹介されている参考文献にお任せするとして、ここではA/Bテストと統計的検定における、もう少し実践的な話題を紹介したいと思います。

A/Bテストの等質性

A/Bテストとはどういうものでしょうか?
例えば、Webサイトのランディングページに対して2つのデザイン案が持ち上がり、どちらが良いか判断に困る場合があります。
そこで、訪問者をAグループとBグループにランダムに振り分け、それぞれのグループに別々のデザインを見せ、入会率が良い方のデザイン案を採用する、といったことを行うのがA/Bテストです。

上記の記事ではAとBについて次のように書かれています。

  • A「入会率10%の現ランディングページ」
  • B「入会率(以下CVR)15%を期待する新ランディングページ(以下LP)」

ここにはちょっとした罠があります。

こういう風にA/Bを分けると、新ランディングページのCVRが最初だけ良く、途中から下がるという現象にわりと頻繁に遭遇するはずです。

例えば、下記の記事で言及されているような現象です。

ベースラインに対して新しい実験パターンのコンバージョンの方がずっと優勢なんですが,95%ラインを越えたり越えなかったり,という推移が見て取れます.ごく初期に95%を越えた段階で効果あり,と思って実験をストップしちゃうなんていうのは割とありがちな事態ではないでしょうか.

Optimizelyのstats engineによる逐次A/Bテスト - About connecting the dots.

これはなぜ起こるのでしょうか?

A/Bテストにおいて、訪問者をAとBにランダムに振り分けるのは、各グループにおける訪問者の性質を均質にすることが目的です。
もし、Aは男性、Bは女性というような振り分け方をすると、AとBにおける入会率の差が、性別による差なのか、デザインによる差なのか、判別できなくなります。
デザインによる入会率の差を検証したかったら、デザイン以外の要因(例えば男女比)が同じになるように振り分ける必要があります。

ところで、このランディングページに訪れるのは新規訪問者だけでしょうか?
A/Bテストの対象者の中に、現ランディングページを見たことのある人は含まれないのでしょうか?

今、A/Bテストの対象者の中に、新規訪問者と再訪問者が50%ずついるとしましょう。
新規訪問者とは、現ランディングページを見たことがない人たちと定義します。
すると、再訪問者は現ランディングページを見たことがある人たちであり、言い換えると、現ランディングページでは入会しなかった実績を持つ人たちです。
つまり、Aグループにおける再訪問者は、現ランディングページでは入会しにくいという性質を持っていることになります。
そう考えると、AとBの入会率に差が無かったとしても、Aグループにおける再訪問者の入会率はBグループにおける再訪問者の入会率より低くなることが予想されます。

これでは、A/Bテストの前提である「各グループにおける訪問者の性質が均質」を満たしません。

このような場合、どんなに正しく統計的検定のフレームワークを適用ても、正しい結果は得られません。

A/Bテストの評価に統計的検定を使用するならば、グループの等質性についても気を付けなくてならないことがお分かりいただけたかと思います。

(なんか長くなってしまって疲れました。気力があれば続きます。続きが読みたい人はワッフルワッフルと書いて下さい。)