廿TT

譬如水怙牛過窓櫺 頭角四蹄都過了 因甚麼尾巴過不得

A/Bテスト、多変量テストに必要な期間を見積もる方法の紹介

大雑把な紹介

A/Bテスト、多変量テストと呼ばれるものはいろいろありますが、ここでは主にWeb広告のA/Bテスト、多変量テストの話をします。

Web広告のA/Bテストでは、広告AとBを出し分けて、

  • クリック率=クリック数÷表示回数
  • コンバージョン率=コンバージョン(獲得成果)数÷クリック数

など、比率を比べると思います。多変量テストでも同様です。

しかしデータには「誤差」があります。

広告AとB、本来のクリックされやすやには差がないのに、偶然、たまたま差が出てしまうときがあります。

このたまたま出てしまった差を「誤差」と呼ぶことにします。

このような誤差の範囲を図示するためのエクセルシートを、

A/Bテスト、多変量テストの図示(Excel 版) - 廿TT

で公開しております。

f:id:abrahamcow:20140625002708p:plain

クリック率、コンバージョン率などの比率を棒グラフで、誤差の範囲を黒い棒(エラーバー)で示します。

たとえば1/2の50%と、500/1000の50%では、500/1000の50%のほうが、より信用できる50%だとお考えになることでしょう。

テストを長期間やって分母の数を増やしていけば、エラーバーの幅は狭まっていきます。

逆に、誤差の範囲をどのくらいにしたいか? によって分母の数を決めることもできます。

統計WEB | 統計Tips | 必要なサンプルサイズ | 母比率の区間推定(無限母集団) にそのようなツールが公開されています。
(リンク先にエクセル版もあります)

f:id:abrahamcow:20141221151315p:plain

「誤差」のところには誤差を±何%にしたいかを入力してください。ぼくは±1%に収めたかったので1と入力しました。(Web広告を実運用している方はCVRの数パーセントの変動がどの程度のインパクトか把握してらっしゃることでしょう。その変動を「リスク」とみなして、許容できる誤差を決めてください。)

「信頼度」は統計学でよく用いられる95%にしました。

「母比率」のところには、あなたが経験的に予想したクリック率、コンバージョン率などを入れてください。ぼくは20%にしました。
「計算実行」を押すと、サンプルサイズ(分母の数)が求まります。6147件でした。

このサンプルサイズを、一日あたりの見込み広告表示回数またはクリック数で割ってやれば、テストにかかる期間の目処が立ちます。

予算や時間の制約等でこの数が大きすぎると思われる場合は、より広い範囲の誤差を許容する必要があります。

統計学では、残念ながらリスクをゼロにすることはできません。

予算や時間の制約を加味した上で、どの程度の誤差の範囲を許容するか選択する必要があります。

そのバランスをうまくとることがこそがマーケターの腕の見せ所だとも言えます。

用語の説明

上記で「誤差の範囲」と読んでいるものは統計学的には信頼区間と呼ばれます。

「信頼度」は信頼水準ともいいます。

「信頼度が95%の信頼区間」とは、まったくおなじテストを100回行ったとき、内95回はこの範囲にクリック率やコンバージョン率が収まるだろう、という区間です。

サンプルサイズは日本語では標本の大きさといい、その数は n で表すことが多いです。

「分母の数」という意味でこれを「母数」と呼ぶ例をたまに見かけますが、誤りです。

たとえば「母数 決め方」「標本数 決め方」などで検索しても、おそらく有益な情報はヒットしにくいでしょうから、「サンプルサイズ」「標本の大きさ」という語は覚えておくと便利だと思います。

関連エントリ

abrahamcow.hatenablog.com

免責事項

厳密には、比率の信頼区間は「±何%」という左右対象な形にはなりません。

ここでは分母の数(サンプルサイズ)を求める都合上、近似的な計算を行っています。ですがおそらく実務上は近似的な計算でも問題になることはないかと思います。

すみません

信頼区間とかを、数学的な予備知識のない方に向けてわかりやすく説明したかったんですが、いまのぼくには無理です。

本当はもっと練ってからブログに投稿しようと思っていたのですが、ニーズがあるわりに情報が少ないようなので、とりあえず今できる範囲の紹介だけでもしよう、と考えなおしてこのエントリを書きました。

不明点あれば個別に対応しますので、コメント欄をご活用ください。

R ユーザー向け説明

上記サイトで行える計算はこういうことです。

size_calc <-function(L,p,alpha=0.05){
  ceiling(((qnorm(alpha/2) ^ 2) *p*(1-p))/L^2)
}
size_calc(L=0.01,p=0.2)
#[1] 6147

正規分布による母比率の近似信頼区間の式を n について解いただけ。

追記:最近は高校数学でもこれ教わるみたいです。すばらしい。
高等学校数学C/統計処理 - Wikibooks

参考文献

入門・演習 数理統計

入門・演習 数理統計

追記:シミュレーション

サンプルサイズを増やすと「誤差」がだんだん小さくなる、というイメージをつかみやすいようにシミュレーションをしてみました。

f:id:abrahamcow:20150317212928p:plain

真のクリック率(CTR)を20%として表示回数(IMP)を増やしながら乱数を発生させています。

赤線は20±1%の範囲を示しています。

上で求めた必要なサンプルサイズは6147でしたが、こちらでもIMPが6000を超えたあたりで、20±1%の範囲に概ね収まっていくことが分かります。

#シミュレーションのコード
CTs <-sapply(1:7000,function(x)rbinom(1, size=x, prob=0.2))
dat1 <-data.frame(IMP=1:7000, CTR=CTs/1:7000)

library(ggplot2)
library(scales)
theme_set(theme_grey(20))
p<- ggplot(dat1,aes(x=IMP,y=CTR))+
  geom_line()
p + geom_abline(intercept=0.21,slope=0,colour=2) +
  geom_abline(intercept=0.19,slope=0,colour=2)+
  scale_y_continuous(labels=percent)+
  scale_x_continuous(labels=comma)