統計的検出力分析

英語名 Statistical Power Analysis
読み方 スタティスティカル パワー アナリシス
難易度
所要時間 30分〜1時間
提唱者 Jacob Cohen
目次

ひとことで言うと
#

A/Bテストや調査を始める前に「本当に差があるとき、それを検出できるだけのサンプル数はいくらか」を事前計算する手法。検出力が足りない実験は、やっても結論が出ない無駄打ちになる。

押さえておきたい用語
#

押さえておきたい用語
検出力(Statistical Power)
本当に差があるとき、それを「差がある」と正しく判定できる確率。一般に 80%以上 を確保するのが目安である。
有意水準(Significance Level / α)
「本当は差がないのに、差があると誤判定する確率」の許容上限。通常は 5%(α=0.05) に設定する。
効果量(Effect Size)
検出したい差の大きさを標準化した指標。「CVRを1pt上げたい」のような最小実用差を効果量に変換して計算に使う。
第二種の過誤(β)
本当は差があるのに「差がない」と判定してしまう誤り。検出力は 1−β で表されるため、β=0.2なら検出力は80%になる。

統計的検出力分析の全体像
#

検出力分析:4つのパラメータの関係から必要サンプルサイズを導く
有意水準 α通常 α = 0.05誤検出の許容率効果量検出したい最小差例: CVR +0.5pt検出力 1−β通常 80%以上差を見逃さない確率サンプルサイズ計算必要サンプルサイズ例: 各群 15,000人 × 2 = 30,000人→ 日次トラフィックから所要期間を算出効果量が小さいほど必要サンプルは急増する
検出力分析の進め方フロー
1
最小実用差を決める
ビジネスで意味のある最小の改善幅を定義
2
パラメータ設定
α、検出力、分散を設定する
3
サンプルサイズ算出
必要人数とテスト期間を計算する
テスト実行判断
現実的なら実行、長すぎるなら条件を見直す

こんな悩みに効く
#

  • A/Bテストを2週間回したが「有意差なし」で終わってしまった
  • 必要なサンプルサイズがわからず、テスト期間をなんとなくで決めている
  • テスト結果を報告すると「サンプル数は足りてるの?」と聞かれて答えられない

基本の使い方
#

最小実用差(MDE)を決める

「ビジネス上、最低でもこれだけの改善がないと意味がない」という最小の差を定義する。

  • : 現状CVR 3.0%で、施策を打つコストに見合うにはCVR 3.5%以上が必要 → MDE = 0.5pt
  • MDEが小さいほど必要サンプル数は増える。「0.1ptの差も見逃したくない」だと膨大なサンプルが要る
  • ビジネス側と合意してから計算に入る
検出力分析でサンプルサイズを算出する

α(通常0.05)、検出力(通常0.80)、MDE、現状の指標値を入力して計算する。

  • ツール: Python(statsmodels)、R(pwr)、オンライン計算ツール(Evan’s Awesome A/B Tools等)
  • 両側検定 vs 片側検定: 通常は両側検定で計算。片側にするとサンプルは減るが、方向を間違えるリスクがある
  • 結果例: CVR 3.0%、MDE 0.5pt、α=0.05、Power=0.80 → 各群約 15,000人
テスト期間を算出して実行判断する

必要サンプル数を日次トラフィックで割り、テスト期間を見積もる。

  • 各群15,000人、日次ユニークユーザー2,000人 → テスト期間 15日
  • 期間が長すぎる場合: MDEを大きくする(0.5pt → 1.0pt)か、トラフィックが多いページでテストする
  • 曜日効果を排除するため、最低1週間の倍数でテスト期間を設定する

具体例
#

例1:ECサイトが決済ページのA/Bテストを設計する

月間訪問者60万人のECサイト。決済ページのCVR(購入完了率)が 12% で、新UIで14%以上を目指す。MDE = 2pt。

検出力分析の結果、α=0.05、Power=0.80で各群 約3,200人 が必要。決済ページの日次到達者は約4,000人なので、50:50で分けると2日でサンプルが揃う計算だが、曜日効果を考慮して 7日間 でテストを設計。

テスト結果、新UI群のCVRは 14.8% で有意差あり(p=0.018)。サンプルサイズを事前に計算していたため、1週間で自信を持って判断できた。もし計算なしで「とりあえず3日」でやっていたら検出力 52% しかなく、「差がないのか、サンプル不足なのか」が不明なまま終わっていた。

例2:SaaSのメール配信テストで現実的な設計をする

契約企業3,000社のBtoB SaaS。オンボーディングメールのA/B(件名違い)で開封率を上げたい。現状の開封率は 28%、MDE = 3pt。

検出力分析で各群 約2,800通 が必要と算出。しかし月間の新規契約は200社で、サンプルが揃うまで 14ヶ月 かかる計算に。

MDEを5ptに緩和すると各群 約1,000通 で済み、期間は 5ヶ月。さらに対象を新規契約だけでなく既存顧客の月次レポートメール(月間3,000通)に切り替えることで、2週間でテスト可能になった。検出力分析で「そもそもこのテストは現実的か」を判断できたことで、無駄な14ヶ月の待ちを回避した。

例3:飲食チェーンが新メニューの売上テストを店舗単位で計画する

80店舗展開のカレーチェーン。新メニューをテスト導入して売上への影響を検証したい。1店舗あたりの日次売上の平均は 42万円、標準偏差 8万円。MDE = 3万円(約7%増)。

検出力分析の結果、各群 22店舗 が必要。テスト群22店舗に新メニューを導入、対照群22店舗は既存メニューのまま、2週間テスト。

計算しないまま「5店舗で試してみよう」としていた当初案では検出力はわずか 18%。差があっても5回中4回は見逃す状態。22店舗に拡大してテストした結果、新メニュー群の日次売上は平均 45.2万円 で有意差を確認(p=0.03)。十分な検出力があったから「効果あり」と断言できた。

やりがちな失敗パターン
#

  1. 検出力分析をしないままテストを始める — 「とりあえず2週間」で始めて、結果が出ず「もう1週間延長」を繰り返す。計算は5分で終わるので必ず事前にやる
  2. MDEを非現実的に小さく設定する — 0.1ptの差を検出するにはサンプルが膨大になる。ビジネスインパクトから逆算して「これ以下の改善なら施策を打つ価値がない」ラインをMDEにする
  3. 検出力80%を下回るテストを実行する — 「サンプルが少ないけどやってみよう」は科学的に無駄。検出力50%のテストは、差があってもコイントスと同じ確率で見逃す
  4. テスト中にサンプルサイズを変更する — 「まだ有意にならないからもう少し続けよう」は第一種の過誤率を膨らませる。事前に決めたサンプルサイズに達したら判定する

まとめ
#

統計的検出力分析は「このテスト、やる意味あるの?」を事前に答える手法。必要サンプルサイズを計算しておけば、テスト期間の見積もりが立ち、結果が出たときに自信を持って判断できる。検出力が足りないテストはどれだけ待っても結論が出ない。5分の計算で数週間の無駄を防げるなら、やらない理由はない。