売上を1.3倍にするためにABテストに取り組むメモ

今までABテストは億劫で全くやって来ませんでした。正直、「リンクのボタンの色やコピーを変えたくらいで有意差なんて出るわけない」「そもそもSEOサイトではサンプル数が少なすぎて、まともにABテストなんて回らない」とか思って、舐めてた部分がありました。

ただこの1年弱でメインサイトのアクセス数が10倍近くになったこともあり、そろそろ「今あるアクセス数でいかに成約率を上げるか」という当たり前のことを、もう少し考えないといけないと感じるようになりました。

以下、有効なABテストを実施するために調べたことのメモです。

有意差

有名な話ですが、有意差が出なければABテストの意味はありません。
例えば、以下の2つのデータは実際に私のサイトのとあるページ内の広告誘導文のCTRです。パターンAとパターンBで差異があるように見えますが、これらに有意差はありません。ただの誤差です。

(パターンA)
ページ閲覧数(UU)5304
クリック数 46
クリック率 0.87%

(パターンB)
ページ閲覧数(UU)5528
クリック数 70
クリック率 1.27%

これらは、実は同じページを1週間ずつに区切って比較しただけです。つまり全く同じページを同じ期間で測定しただけで、この程度の誤差は普通に出るということです。

こういった前提知識がないと、「○○の施策をしたら、コンバージョン数が20から30に増えた!」「CV率が3%から4%に上がった!」と一喜一憂して、全く意味のないABテストで時間を無駄にしてしまう可能性があります。これが、私が今まで真面目にABテストをあまりやって来なかった理由の1つです。

ちなみに、上記のデータをWEB上で提供されているABテスト信頼度判定ツールにかけたら「パターンBは有効だ」と出ました。数字の意味を自分で理解しないまま、漫然とツールに頼ってもアテにならないということです。

信頼区間

テレビの視聴率というのは、例えば、500世帯くらいを無作為に抽出して、その世帯のうち「特定の番組Aを見ている世帯は何%か?」を計測します。しかし、それはあくまで500のサンプル数での検証結果に過ぎず、地域全体の世帯を母数とする視聴率と一致するとは限りません。

そのため、特定のサンプル数の検証データ(確率)から、母集団での確率を推計しなければなりません。例えば、500世帯を測定した場合の視聴率が11.2%であれば、地域全体の視聴率も下限9%~上限13%の範囲に収まるだろう、と推測するわけです。これを信頼区間といいます。

WEBサイトでABテストをする場合、例えば、パターンAとパターンBの施策の信頼区間が、それぞれ

パターンAのCV率
下限1.2%~上限2.3%

パターンBのCV率
下限3.3%~上限4.1%

というような差が出て、はじめて「誤差ではなかった」と言えます。このような明確な差異が出ない限り、ABテストに時間を浪費するのは勿体ないと思います。

ちなみに、最初に紹介した同一ページでのA/Aテストの結果の場合はどうでしょうか。信頼度95%で信頼区間を計算した場合、以下のようになります。

(パターンA)
ページ閲覧数(UU)5304
クリック数 46
クリック率 0.87%
信頼区間:下限0.62% ~ 上限1.12%

(パターンB)
ページ閲覧数(UU)5528
クリック数 70
クリック率 1.27%
信頼区間:下限0.97% ~ 上限1.56%

ご覧のように、信頼区間はダダ被りです。しつこいようですが、全く同じページなので当たり前です。

逆に有意差が出たら困るわけですが、それでも信頼度95%で計算していますから、20回に1回は有意差が出てしまいます。全く同じページと広告文でテストしていても、20回に1回は、とんでもなく良い成績が出たり、とんでもなく悪い成績が出るわけです。

少し話が逸れますが、たまにASPの管理画面で「CV率10%の案件で今日は40クリックされてるのに、まだ1CVも発生してない・・・。広告主の不正なんじゃないか。」とか悩むことがあるかもしれません。が、母数が少ないと全然そんなものです。

※ちなみにCV率10%の案件が40クリックで発生しない確率は、数学上は1.48%です。
1日1回ASPの管理画面を確認するとして、1年のうちにそのような日が4~7日存在する確率は60%を超えます。

二項分布と信頼度

最初に言い訳しておくと、私は数学はさっぱりわかりません。高校数学すら覚えてません。なので以下は間違ってるかもしれません。自分用の記憶定着のためのメモです。

まず「特定期間にユーザーがページを訪問して、そのうち何人のユーザーCVするか?」というCV率テストは、数学的には二項分布の問題です。つまり1人のアクセスに対して、「CVするか」「CVしないか」の2つの結果しか生じないわけですから、コインを投げて裏表の確率を取るのと同じです。

とりあえず、ポイントを先に箇条書きにすると、

 
1.成功確率p(CV率)、確率変数S(CV数)、試行回数n(訪問数)とする
2.サンプル数が一定程度大きい場合、二項分布は正規分布に近似する(ラプラスの定理)
  ※期待値np、分散np(1-p)が5よりも大きい場合。以下、その前提。
3.その場合の確率変数S(CV数)の分散は、np(1-p)の正規分布に従う
4.よって、S/n(CV率)の分散は、p(1-p)/n になる。
5.よって、S/n(CV率)の標準偏差は、√p(1-p)/n になる。
6.信頼度95%の信頼区間は、p-1.96(√p(1-p)/n) ≦ P ≦ p+1.96(√p(1-p)/n)

 
本当はもっと踏み込んで勉強したいのですが、そんなことをしてる時間は全然ないので、wikiと以下のURLを斜め読みしました。

参考:視聴率調査-2項分布の応用
参考:二項分布
参考:統計学の基礎

 
要するに、アクセス数(n)とCV率(p)がわかっている場合、その95%信頼区間は、
p-1.96(√p(1-p)/n) ≦ P ≦ p+1.96(√p(1-p)/n)
の範囲になる、ということです。

アクセス数(n)が分母に入るので、アクセス数が多ければ多いほど
誤差の範囲が小さくなり、精度の高い検証結果になります。

ちなみに信頼度には、90%、95%、99%などの好きな数字(係数)を設定することができます。

信頼度 99% (係数 2.58)
信頼度 95% (係数 1.96)
信頼度 90% (係数 1.65)

これがそのまま、誤差の幅に掛け算されます。
なので信頼精度を上げようとすればするほど、信頼区間の幅は広くなり、ABテストの結果で有意差が出なくなります。

例えば、ページのCV率2%、標準誤差が0.5%だとすると、

・信頼度99%の信頼区間の場合、下限0.71%~上限3.29%まで差が出てしまいます。
・信頼度90%の信頼区間の場合、下限1.175%~上限2.825%まで絞れます。

ただ信頼度90%まで落とすと、10回に1回は全く同じ広告文をテストしていても有意差が出てしまう可能性があります。

今後のABテスト方針

上記の前提で、過去の自分のAnalyticsのデータでいろいろ検証してみましたが、信頼度95%だと相当劇的な変化がないと有意差は出なさそうです。まあ所詮はWEBサイトのABテストなので、別に信頼度は90%くらいでも問題ないかな、と思ってますが。

例えば、月間10,000UUで172clickのページがあるのですが、ABテストで「効果が出た!」と言えるためには、同じアクセス母数で220click以上まで増やさないといけません。でも測定期間を1カ月も取ってしまうと、時期要因とか他の影響も大きくなりそうなので、多少精度を落として2週間くらいでテストするのがいいのでしょう。

エクセルシートは作ったので、色々文言パターンを変えてテストしてみる予定です。

これだけ調べておいて、結局すぐ飽きてABテストやらなくなったら笑うな。でもそんな予感もする。そもそもこんな暇な記事を調べて書いてるから売上が伸びないんでしょう。

ちなみに区間推定以外にも、統計的には、無帰仮説とかカイニ乗検定とか、色々な精度の高いチェック方法がありそうでしたが、区間推定の何十倍も難しそうだったので、さすがにそっちの領域に踏み込むのは諦めました・・・w

そもそも初歩中の初歩として、分散と標準偏差すら意味がわかってませんでした。が、以下の記事を読んでめちゃくちゃわかりました。高校の時にこういう記事を読みたかった。神記事。

参考:【統計学】初めての「標準偏差」(統計学に挫折しないために)

統計学面白そうだな。勉強してみたいな。
とか訳のわからないことを言ってないで、面白くない記事を淡々と書く作業に戻ります。