読者です 読者をやめる 読者になる 読者になる

廿TT

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

ズバリ! 必要なサンプルサイズはいくつ? A/Bテストのための例数設計入門

こういう状況を考える

 では、結局一定のクリック数っていくつあればいいの? R で計算してみる。

用意するもの:

  • 有意水準(α)
  • 検出力(1-β)
  • 広告 A の経験的 CVR
  • 広告 B の期待される CVR

↑これらについては後で説明する。

 CVR は CTR(クリック率)と読み替えてもらってもかまわない。なにかをなにかで割った「割合」なら同じように考えて問題ない。

 広告 A というのは前から使ってた広告で、経験的に CVR が分かってるものとする。
 広告 B というのは新しい広告で、これくらい CVR が上がったらいいな、と期待している。

準備

 仮説検定の枠組みを簡単に復習しておく。

 いま、この広告 A に対して広告 B は優れている、CVR が高いということを言えたらいいと思っている。でもそのことを直接証明するのは難しい。
 広告 B の CVR が 0.01% 高くっても高いことは高い。けどそんなのは違いのうちに入らない、かもしれない。
 そこでちょっとひねりを加える。

 逆にもし A より B の CVR が高いとしたら、いま観測された広告 B のほうの CVR が 0.01% 高かったとしても、それは偶然生じた結果だ。その偶然はどのくらいの確率で起こるだろうか。その確率を計算して推定しよう。

 推定された確率が低かったら、そんな低い確率のことがたまたま起こるって考えるのは不自然だよね、じゃあやっぱもともと A より B のほうが CVR が高いって考えたほうがいいんじゃないの、ということになる。

 「逆にもし B より A の CVR が高いとしたら」という仮定のことを帰無仮説と呼ぶ。
 反対の「A より B のほうが CVR が高い」っていうことを対立仮説と呼ぶ。
 「そんな低い確率のことがたまたま起こるって考えるのは不自然だよね、じゃあやっぱもともと A より B のほうが CVR が高いって考えたほうがいいんじゃないの」というのを、帰無仮説を棄却すると言う。

 この場合、
帰無仮説:A の CVR ≧ B の CVR
対立仮説:A の CVR < B の CVR
となる。

 帰無仮説がまちがってるとしたら、対立仮説が正しいという関係。
 帰無仮説と対立仮説はミーシーになってるわけだ。大丈夫かな? ややこしいのでゆっくり読んで欲しい。


 さて、次のステップに移ろう。
 仮説検定は確率の推定なので、まちがった判断をしてしまうこともある。
 本当は A の CVR ≧ B の CVR なのに、検定で偶然 A の CVR < B の CVRと判断しちゃうこともあるし(第一種の過誤と呼ぶ)、本当は A の CVR < B の CVR なのに、検定で A の CVR ≧ B の CVR と判断しちゃうこともある(第二種の過誤と呼ぶ)。

 この二種類の過誤を表にまとめると下記のようになる。

検定で A の CVR ≧ B の CVR と判断 検定で A の CVR < B の CVRと判断
本当は A の CVR ≧ B の CVR 正しい判断 第一種の過誤(α)
本当は A の CVR < B の CVR 第二種の過誤(β) 正しい判断

 第一種の過誤(Type I error)、第二種の過誤(Type II error)というのは味も素っ気もないネーミングなので、

  • 第一種は「あわてもの」。「あわてもの」だからあせって帰無仮説を棄却しちゃう。「あわてもの」だから一等賞だから第一種。その確率は「あわてもの」の「あ」をとってαで表すことが多い。
  • 第二種は「ぼんやりもの」。「ぼんやりもの」だからぼんやりして帰無仮説を棄却しないで見逃しちゃう。「ぼんやりもの」だから二番手だから第二種。その確率は「ぼんやりもの」の「ぼ」をとってβで表すことが多い。

とこじつけるとおぼえやすい。


 もちろん、過誤の確率は小さいほうがいい。
 でも、あちら立てればこちらは立たず、両方同時に小さくすることはできない。

 そこで、第一種の過誤の確率、有意水準 α を固定して、第二種の過誤の確率 β が一定以下になるようにする。

 最初に述べた「検出力(1-β)」というのは、帰無仮説が本当はまちがってるときに、検定でちゃんと帰無仮説を棄却できるパワーと解釈できる。やっぱりややこしいだろうから、ゆっくり読んで欲しい。

R

 おまたせしました。これでようやく、必要なサンプルサイズが求められる。

 用意するものは下記の通りだった。

  • 有意水準(α)
  • 検出力(1-β)
  • 広告 A の経験的 CVR
  • 広告 B の期待される CVR

 ここではためしに、有意水準 α=0.05、検出力 1-β = 0.8 としよう。
 広告 A の経験的 CVR は 2%=0.02 だったとする。
 広告 B の CVR は 3%=0.03 だったらいいな、と思っている。

 これを R にこのように打ち込む。

power.prop.test(p1 = 0.02, #p1:広告 A の経験的 CVR
                p2 = 0.03,  #p2:広告 B の期待される CVR
                sig.level = 0.05, #sig.level:有意水準 α=0.05
                power = 0.8, #power: 検出力 1-β = 0.8 
                alternative = "one.sided")


 出力結果は以下のとおり。

> power.prop.test(p1 = 0.02, p2 = 0.03,
+ sig.level = 0.05,
+ power = 0.8,
+ alternative = "one.sided")

     Two-sample comparison of proportions power calculation 

              n = 3012.95
             p1 = 0.02
             p2 = 0.03
      sig.level = 0.05
          power = 0.8
    alternative = one.sided

NOTE: n is number in *each* group

 n = 3012.95 のところ見て欲しい。
 必要なサンプルサイズ(クリック数)はこの場合、3013でした。

Q&A

 Q1:有意水準 α=0.05、検出力 1-β = 0.8 としよう」っていったけど、それってどうやって決めたの?
 A1:適当です。

 α というのは「新しい広告 B のほうが良い」とまちがって判断しちゃうリスク、β というのは「新しい広告 B のほうが良い」ということを見逃しちゃうリスク、なので、どっちのリスクを重く受け取るか、ということで決めてください。
 

 Q2:必要なサンプルサイズ(クリック数)はこの場合、3013でした」っていったけど、3013以上でもいいの? 1万とかでもいいの?
 A2:あんまりよくない。サンプルサイズ増やしまくればちょっとの差でも(実質的に意味のない差でも)検定すると有意差になっちゃう。事前に実質的に意味のある差(さっきの例でいうと、新しい広告 B の期待される CVR)を定めて、検出力を定めて、決めた通りにやったほうがいい。

ちゃぶ台返し

 実はぼくは、Web系施策のA/Bテストに仮説検定は向かないと思っている。こういうのやるよりも棒グラフ描いて判断したほうが良いと思う。
 そのへんについては、以下のエントリに書いた。

 仮説検定はむずかしい。製薬会社とかだと、仮説検定のデザインをする専門職の人を雇ってる。Web業界でそれやる? きつくない?

 でも、このブログに「abテスト サンプル数」で検索してたどり着いた人がいたので、こういう情報もあったほうがいいかなーと思った。

 しかも、「abテスト サンプル数」で Google 検索して、現時点でいちばんトップに来るのは、この記事だ→ABテストを検定する

 この記事にはまちがいが書いてある。そのへんの批判についても A/Bテスト、多変量テストの図示 - 廿TT に書いた。

 ぼくは別に仮説検定とか、実験計画とかにはぜんぜん詳しくないんだけど、だからってなにも言わないでいても、ぼくよりもっと詳しくない人がまちがったこと言っちゃってる。だからまちがったことを覚えちゃって損する人が出てくるかもしれない。まちがったことを覚えちゃって損する人は、なるべく少ないほうがいい。

 それにせっかくA/Bテストきっかけで統計に興味を持ってくれた人がいるんだから、それをサポートしたい。

 そんな理由でこの文を書いてる。


 ちなみに、「サンプル数」とか「標本数」というとケースの数と混同しちゃうので、統計用語としてはこういうのはサンプルサイズ(標本の大きさ)と呼ぶ。


 そしてあともう一点、ぼくはWeb系施策のA/Bテストの施策判断に仮説検定は向かないと思ってるけど、代わりにベイズ決定っていうやつがけっこういいいんじゃないかな、と思っている。

 ベイズ決定を使いこなすための土台として、古典的な仮説検定の枠組みを整理しておくことが必要なんじゃないかなーと思った。

 そんな感じだ。

参考文献・参考になりそうな文献