統計・データ分析A/Bテスト

A/Bテストで有意差が出ない原因|必要なサンプルサイズの計算方法

「新しいLPを試したが、差は出なかった」「値上げしても購入率は変わらなかった」——だから元のままでいい、と判断していませんか。その結論、実は差を見つけられるだけの人数が足りていなかっただけかもしれません。

たとえば購入率 2% を 2.4% に上げる施策を各5,000人で試すと、本当に効いていても約7割の確率で「有意差なし」になります。この「見逃しにくさ」を表すのが検出力です。検出力を知らないまま判断すると、効果のある改善案を何度も捨ててしまいます。

この記事でわかること

  • 「有意差なし」が「効果なし」を意味しない理由
  • 自社のアクセス数で、どれくらいの差なら判定できるか(早見表)
  • テスト前に必要な人数を見積もる方法(Excelの式つき)
  • 広告・値上げ・営業メール・品質改善・採用での具体的な使い方

数式や Python は読み飛ばしても、早見表と5つの場面だけで判断できるように書いています。p値と有意水準の基本がまだの方は、先に A/Bテストの基本(p値と有意水準の読み方) をご覧ください。


各5,000人でも7割は見逃す:人数と検出力の関係

購入率が 2.0% のLPを改善して 2.4% にしたい(相対で 20% 改善)とします。本当に 2.4% になっているとき、テストがそれを「有意差あり」と正しく見つけられる確率(検出力)は、人数によってこう変わります。

1グループの人数検出力意味
2,000人約14%10回中8〜9回は見逃す
5,000人約28%10回中7回は見逃す
21,000人約80%見逃しは5回に1回

合計1万人(各5,000人)でテストして「差なし」と出ても、本当に 20% 改善している施策を7割の確率で見逃す設計だった、ということです。これでは「差なし」という結果から何も言えません。

A/Bテストの基本で取り上げた例(各1,000人で 5.0% と 5.4% を比較)も、検出力は約7%しかありませんでした。p = 0.699 で「差なし」と出たのは、人数から見れば当然の結果です。

「有意差なし」でも効果がないとは限らない

A/Bテストの結論には、間違え方が2通りあります。

本当は効果がない本当は効果がある
「効果あり」と判断(採用)第1種の誤り(ぬか喜び)正しい判断
「効果があるとは言えない」と判断(見送り)正しい判断第2種の誤り(見逃し)

有意水準 5% というのは、第1種の誤り(効果がないのに「ある」と言ってしまう確率)を 5% に抑える約束です。ところが、もう一方の見逃しの確率は、何もしなければ誰も管理していません。

見逃しの確率を β\beta とすると、検出力は

検出力=1−β\text{検出力}=1-\beta

です。実務では検出力 80% 以上(見逃し 20% 以下)を目安に設計するのが一般的です。

検出力を左右するのは主に次の3つです。

  • 1グループあたりの人数:多いほど検出力は上がる
  • 見つけたい差の大きさ:差が小さいほど見つけにくい
  • 今の率の水準:改善幅を「相対で○%」で考えるとき、今の率が低い(1〜2%台など)ほど差が小さな数字になり、同じ人数でも見つけにくい

必要なサンプルサイズの計算方法と早見表

まず、自社のアクセス数でどれくらいの差なら判定できるかを見てください。購入率 2.0%、1か月テストして訪問者を2グループに半分ずつ分け、検出力 80% で判定できる最小の改善です。

月間訪問数1グループ判定できる最小の改善
3,000人1,500人2.0% → 約3.7%(相対 +84%)
10,000人5,000人2.0% → 約2.9%(相対 +43%)
30,000人15,000人2.0% → 約2.5%(相対 +24%)

月数千人規模のサイトでは、購入率が1.8倍になるような大きな変化しか判定できません。

逆に、狙う差から必要人数を出すこともできます。2つの率(p1p_1:今の率、p2p_2:改善後に期待する率)を比べるときの、1グループあたりの必要人数の目安は次の式です。

n≈(1.96+0.84)2 {p1(1−p1)+p2(1−p2)}(p2−p1)2n\approx\frac{(1.96+0.84)^2\,\{p_1(1-p_1)+p_2(1-p_2)\}}{(p_2-p_1)^2}

1.96 は有意水準 5%(「良くなった」「悪くなった」のどちらの差も検出対象にする両側検定)、0.84 は検出力 80% に対応する値です。ほかの設定にしない限り、この2つの数字は固定で構いません。分母が「差の2乗」なので、狙う差を半分にすると必要人数は約4倍になります。

今の率 → 狙う率1グループの必要人数(目安)
2.0% → 3.0%(相対 +50%)約3,800人
2.0% → 2.4%(相対 +20%)約21,000人
5.0% → 5.4%(相対 +8%)約48,000人

Excel・Googleスプレッドシートなら、A1 に今の率(0.02)、B1 に狙う率(0.024)を入れて、次の式で1グループの必要人数が出ます。

=ROUNDUP((1.96+0.84)^2*(A1*(1-A1)+B1*(1-B1))/(B1-A1)^2,0)

Python を使う方は、統計ライブラリで次のように計算できます。

from statsmodels.stats.power import NormalIndPower
from statsmodels.stats.proportion import proportion_effectsize

effect = proportion_effectsize(0.024, 0.020)   # 狙う率と今の率
n = NormalIndPower().solve_power(effect_size=effect, alpha=0.05, power=0.8)
print(round(n))   # 1グループあたりの必要人数(約2.1万人)

上の近似式とは計算方法が少し違うので数十人ずれることがありますが、桁を見積もるには十分です。

広告・値上げ・営業メール・品質・採用での使い方

1. 広告・LPの改善:「勝ちパターンがない」の正体

月に数千人しか来ないLPで、ボタンの文言や画像を次々にテストし「どれも差がなかった」と結論づけているケースはよくあります。上の早見表のとおり、月数千人のLPでは小さな改善案はそもそも判定できません。

このときの正しい打ち手は「テストをやめる」ではなく、差の大きい案(構成ごと変える、オファーを変える)に絞ってテストすることです。相対 50% の改善を狙うなら各3,800人で足ります。

検索結果のタイトル変更のように、テストではなく前後比較しかできない場合の注意点は 順位が高いのにクリックされない原因 で扱っています。

2. 価格改定:「値上げしても購入率は変わらなかった」

値上げの影響を見るために一部の顧客だけ新価格にして、「購入率に有意差はなかったから全体に展開しよう」と判断する場合は特に注意が必要です。ここで欲しい結論は「購入率が許容範囲を超えて下がっていない」こと(最終的には粗利が増えたか)ですが、検出力の低いテストでは、実際に購入率が下がっていても「有意差なし」になります。

値上げのように悪化を見逃すと損失が大きい判断では、「どこまでの悪化なら許容するか」を先に決め、その悪化を 80% 以上の確率で検出できる人数を確保してからテストします。たとえば購入率 2.0% のとき 1.7% までの低下は許容すると決めた場合、それを検出するには各約3.2万人が必要です。

なお、同じ商品を顧客によって別の価格で見せることは、発覚すると信頼を損ねる恐れがあります。期間や地域で分けるなど、見せ方も含めて設計します。

3. 営業メール・DMの件名:母数が少ない会社の工夫

開封率 20% を 25% に上げるという大きな差でも、1パターンあたり約1,100件が必要です。配信リストが数百件の会社では、件名の A/B テストで小さな差を見つけるのは困難です。この場合は次のように設計を変えます。

  • 複数回の配信を合算する:同じ2パターンを数回分の配信で比べ、人数を積み上げる。配信ごとに宛先をランダムに振り分け直す
  • 差の大きい比較にする:件名の言い回しではなく「具体的な数字入り」対「数字なし」のように方向性ごと変える
  • 開封率よりクリック率・返信率を見る:iPhone のメール設定によっては開封が自動で記録されるため、開封率は実態より高く出ることがあります
  • 判定できないことを前提にする:テストではなく、業界の知見や過去実績を基に決める領域だと割り切る

4. 品質改善:工程を変えたら不良率は下がったか

製造工程を変更して不良率が 1.0% から 0.8% に下がることを確かめたいとします。不良率が低いと、2割減っても差は 0.2 ポイントと小さな数字になるため、検出は難しくなります。上の式で計算すると、新旧の工程それぞれで約3.5万個、合計約7万個が必要です。数百個の試作で「不良率が変わらなかったので旧工程のままにする」と判断すると、効果のある改善を捨てることになります。

こうした場面では、必要数を先に計算して「この規模の試作では判定できない」と分かった時点で、検証方法そのものを見直す(不良の手前の測定値で比べる、期間を延ばす)のが合理的です。比べる前に、工程ごとのデータが同じ定義で揃っているかは 売上集計に3日かかる原因 も参考にしてください。

5. 採用:求人票の書き方で応募率は変わるか

応募率 3% を 4.5% に上げたい場合でも、1パターンあたり約2,500件の閲覧が必要です。閲覧数が月数百件では統計的な判定はほぼできません。ここで「差がなかったので書き方は関係ない」と結論づけるのは誤りです。判定できない規模であることを認めたうえで、閲覧→応募の途中の指標(詳細ページまで読まれた割合など、件数が多く集まる指標)で比べるほうが、判断材料として使えます。求人媒体が出し分けに対応していない場合は、期間で交互に切り替える方法もあります(ただし季節の影響が混ざります)。

人数が足りないときの打ち手

打ち手効き方注意点
期間を延ばす人数が増えて検出力が上がる期間は事前に決めて固定する。曜日の偏りを避けるため1週間単位で区切り、途中で覗いて止めない
狙う差を大きくする必要人数が大きく減る(差を2倍にすると約4分の1)小さな改善は見つけられなくなる
件数の多い指標に変える購入率→クリック率など、発生件数が多い指標は差を見つけやすい最終成果(売上)とつながっているかを確認する
片側検定にする「改善したか」だけを見るなら必要人数が約2割減る(2.0→2.4% なら約2.1万→約1.7万人)テスト前に決めた場合だけ使える。結果を見てから切り替えない

有意水準を 5% から 10% に緩めれば検出力は上がりますが、その分「ぬか喜び」が増えます。判断の重さに合わせて、テスト前に決めておくべきものです。


よくある質問

Q. 結局、A/Bテストは何人いれば十分ですか?

A. 決まった人数はありません。今の率と狙う差で決まります。購入率 2% を 3% にしたいなら各約3,800人、2.4% なら各約2.1万人が目安です。

Q. テストが終わってから検出力を計算すればいいのでは?

A. 結果を見てから計算する検出力は、観測された差の大きさに引きずられるため、判断の材料としてはあまり役に立ちません。検出力はテストを始める前に、狙う差を決めて計算するものです。

Q. 「有意差なし」だったテストは無駄だったのですか?

A. 無駄ではありません。差の信頼区間を見れば、どこまでの差がありえないかが分かります。たとえば各5,000人で 2.0% と 2.1% なら、差の95%信頼区間はおよそ −0.5〜+0.7 ポイントで、「0.7 ポイントを超える改善はなさそうだ」とは言えます。ただし、それより小さな差については何も言えない、という限界をセットで報告することが大切です。

Q. 検出力は80%でなければいけませんか?

A. 80% は慣例的な目安です。見逃しの損失が大きい判断(値上げの影響、品質の悪化など)では 90% に上げ、その分の人数を確保します。


まとめ

  1. 「有意差なし」は「効果なし」ではない。見逃し(第2種の誤り)の可能性がある
  2. 本当の効果を見つけられる確率が検出力。目安は 80% 以上
  3. 必要人数はテスト前に、今の率と狙う率から見積もる。狙う差を半分にすると人数は約4倍
  4. 値上げ・品質のように悪化の見逃しが痛い判断ほど、検出力を高めに設計する
  5. 人数が足りないなら、差の大きい案に絞る・件数の多い指標に変えるなど、設計から見直す

実際には、計算式よりも「何を指標にするか」「どこまでの差なら意味があるか」が決まらないことの方でつまずきます。frural では、現在のアクセス数や購入率を伺い、判定できる規模かどうかの見積もりから、指標の選び方、テスト後の効果測定までをご一緒しています。サービスの詳細はこちら、ご相談は お問い合わせ からどうぞ。