こんにちは、たくろー(@takuro_data )です!
ABテストのサンプルサイズを計算するために、理論と簡単に算出できるRのコマンドを紹介します。
ABテストのサンプルサイズ:理論
ABテストのサンプルサイズ問題は、統計学でいう検出力分析です。検出力分析とは、実験をして仮説検定する際に、確かめたい程度の差(効果)をきちんと検出できる標本サイズを決めることです。検出力は、差がある場合に、きちんと差があると判定できる能力です。ABテストは、例えばAのデザインCVR○○%、BのデザインCVR○○%でこの差が偶然か統計的に有意な差があるか仮説検定するので、比率の仮説検定の標本サイズを求めます。
仮説検定や検出力について、詳細は以下の記事をご覧ください。


ABテストのサンプルサイズ:実践
Rを使って算出してみましょう。pwrパッケージを使うと簡単に算出できます。
問題
ECサイトで購入前の離脱が多く、購入ボタンのCTRを上げるため現状のデザインを変更するとします。現状のデザインのCTRは10%で、サンプル数は10,000とれます。新規デザインのCTRは12%を見込みます。新規デザインのサンプル数はいくつになるでしょうか?
サンプルサイズを決めるために、有意水準と検出力を指定してあげる必要があります。一般的に有意水準5%、検出力80%が用いられます。有意水準5%とは、5%で有意差があると間違ってしまうイメージで、検出力80%とは、80%で仮説検定を正しく行えるイメージです。
Rのコマンドは以下の通りです。
pwr.2p2n.test=(h=効果量,n1=サンプル数1,n2=サンプル数2,sig.level=有意水準, power=検出力,alternative=両側検定か片側検定か)
数字を当てはめて実行してみます。
コード
#パッケージ読み込み
library(pwr)
#検出力分析実行
pwr.2p2n.test(h=ES.h(0.10, 0.12),
n1=10000,
n2=NULL,
sig.level = 0.05,
power = 0.8,
alternative="two.sided")
実行結果
difference of proportion power calculation for binomial distribution (arcsine transformation)
h = 0.0639821
n1 = 10000
n2 = 2372.1
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: different sample sizes
効果量の計算
ES.hは効果量を算出しており、具体的には以下がRで実行されています。2*asin(sqrt(p1))-2*asin(sqrt(p2))
n2の値が求めるべき、サンプル数です。
答え
必要なサンプル数は2372
さいごに
ABテストのサンプルサイズについて、仮説検定を利用した検出力分析の理論とRコマンドを紹介しました。Rのpwrパッケージには比率以外の平均や分散分析のサンプルサイズを計算できるコマンドもあります。以下、スライドがわかりやすかったです。
参考 Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」SlideShare
以上、お読みいただきありがとうございました。