メインコンテンツへスキップ
ブログ一覧に戻る
統計・データサイエンス

実験計画法入門:比較できるA/Bテストを始めるための設計

2024年11月10日
最終更新: 2026年10月8日
8分で読めます

この記事でわかること

実験計画法は、結果が出てから有意差を探す前に、比較の条件を決めるための考え方です。割付単位、ランダム化、独立した反復、ブロック化、要因の組み合わせを具体例で解説。購入率2%から2.5%を検出する人数の仮定や、途中確認、計測不良の扱いまで、A/Bテストを始める前の判断を整理します。記録件数と実験単位を区別します。

入力フォームを短くしたら、申し込みが増えた。しかし変更前後で広告も対象者も違った。これでは、フォームの変更が増加を生んだのか判断しにくくなります。

実験計画法は、調べたい変更と、それ以外の違いを分けて比較するために、割付・測定・分析を先に設計する考え方です。後から複雑な計算をしても、比較対象が壊れていれば解釈は難しいままです。

30秒で要点

  • 変更する内容、比較条件、対象、主指標、観測期間を先に固定します。
  • 何をランダムに分けるかと、独立した単位がいくつあるかを区別します。
  • 事前の条件をそろえるブロック化と、組み合わせを調べる要因実験を使い分けます。
  • 必要人数と終了条件には仮定があります。途中で良い結果が出たことだけで採用しません。

まず、何を比べる実験かを一文にする

例えば「登録済みの対象利用者に、現在のフォームAと入力欄を減らしたフォームBを割り付け、割付後14日以内の申し込み完了率を比べる」と決めます。ここで14日は説明用で、全ての実験に適した期間ではありません。

表が収まらない場合は、横にスクロールできます

項目事前に決める内容の例
変更と対照Bでは入力欄だけを減らし、Aは現在の内容を維持する
対象割付前の条件で決めた利用者。途中の行動で都合よく除かない
主指標割付された利用者のうち、所定期間内に完了した人の割合
悪影響を見る指標誤入力、問い合わせ負担、処理失敗など
計測同一人物のID、重複、記録漏れ、遅れて完了する人の扱い
判定どの差を重視し、いつ、どの方法で評価するか
Microsoft Researchの実験前の設計ガイドも、仮説と指標に加え、割付ID、検出力、計測の確認を扱っています。申し込みページまで来た人だけを後から分母にすると、施策によって来訪者が変わる可能性があり、最初の問いとは違う比較になります。

ランダム化・反復・ブロック化の役割を分ける

ランダム化は、対象を偶然の仕組みで条件へ割り付けることです。担当者が購入しそうな人だけをBへ入れるような、系統的な選別を避けます。ただし、有限の人数で全属性が完全に一致する保証はありません。「交絡を必ず排除する」という意味ではなく、割付と背景要因を系統的に結び付けない設計です。

反復は、独立した複数の実験単位で条件を試し、変動を把握できるようにすることです。NISTの完全無作為化計画では、処理を実験単位へランダムに割り付け、各処理を反復する形を説明しています。

利用者100人が10回ずつ訪問しても、独立した利用者1,000人の実験にはなりません。同じ人の訪問は似やすく、AとBを行き来すると変更の影響も混ざります。利用者へ割り付けるならIDを安定させ、利用者単位の集計や反復を考慮した分析を設計します。

店舗単位で価格を変えるなら、割付単位は店舗です。1店舗内の注文を全て独立とみなすと、不確実性を小さく見積もることがあります。店舗やチーム内で影響が共有される設計では、そのまとまりを考慮した人数設計と分析が必要です。時期を変えて再実施することも有用ですが、独立した単位を増やす反復と、異なる状況で再現するかを調べる追試は分けて考えます。

ブロック化は、分かっている条件の中で比べる

新規利用者と既存利用者で完了率が違うと分かっているなら、この条件を割付前に分け、各区分の中でAとBへ割り付ける設計が考えられます。これがブロック化です。NISTの乱塊法の説明では、関心のある処理以外の変動要因をブロックとして扱います。

説明用の割付計画。既存利用者200人、新規利用者200人を事前に分け、それぞれの中で無作為にA100人とB100人へ割り付ける。各区分内で比較し、事前に定めた方法で全体の差を求める。
図1:各区分で人数を均等にする制約付きのランダム割付の仮想例。単純なコイントスで必ず100人ずつになるという図ではない。

図では各区分の人数を固定した上で、誰をA/Bへ入れるかを無作為に決めています。ブロック化は全てのばらつきを消す方法ではありません。区分内の差を比較し、推定したい対象に合わせた重みや分析方法を事前に決めます。実験後に購入したかどうかで分ける操作は、事前条件によるブロック化とは別です。

二つの変更が影響し合うなら、組み合わせを調べる

「案内文A/B」と「入力欄が多い/少ない」を同時に調べるなら、2×2の4組を作る要因実験が考えられます。NISTの完全要因計画は、各要因の水準の全ての組み合わせを試す設計です。

次は各組1,000人とした、説明用の仮想集計です。実績や採用を勧める結果ではありません。

表が収まらない場合は、横にスクロールできます

入力欄案内文Aの完了数・率案内文Bの完了数・率B−A
多い20/1,000人=2%30/1,000人=3%+1ポイント
少ない40/1,000人=4%80/1,000人=8%+4ポイント

案内文を変えた差が、入力欄の条件で違っています。この交互作用を、率の差の尺度で表すと、(8−4)−(3−2)=3パーセントポイントです。単に二つの改善を足せばよいとは限らないことが分かります。

ただし、この表だけで交互作用が統計的に確かだとは言えません。割付が妥当か、不確実性がどれくらいあるかを分析します。4組から都合のよい比較だけを後で選ばず、主な比較、交互作用の尺度、多重比較の扱いを先に定めます。

必要人数は「何を見つけたいか」で変わる

購入率2%を2.5%へ変える差を検出したいとします。差は0.5パーセントポイント、相対的には25%増です。「0.5%改善」だけではどちらか分かりません。

独立した利用者の購入有無を比べ、次の仮定で、2比率のz検定の正規近似による検出力を計算した例です。

表が収まらない場合は、横にスクロールできます

設計条件この仮想例の値
基準率と検出したい率2%と2.5%
群への配分A/B同人数
有意水準と検定5%、両側
検出力80%
判定事前に決めた最終時点で1回
必要人数の計算結果各群13,809人、合計27,618人

計算はstatsmodelsが説明する2独立比率の検出力と同じく、帰無仮説ではプールした分散、対立仮説では群別の分散を使います。整数へ切り上げた人数で検出力が80%を超えることを、別実装の正規分布計算でも確認しています。これは仮定の下での近似値で、全てのA/Bテストの必要人数ではありません。

検出力80%は、想定した差があるときに、この検定が帰無仮説を棄却する確率です。今回の施策が成功する確率ではなく、毎回必ず差を見つける保証でもありません。欠測、店舗単位の割付、複数指標、途中での判定には別の設計が必要です。期間も人数だけでなく、曜日の構成や結果が確定するまでの時間を考えて決めます。

途中の監視と、効果の判定を分ける

実験中にエラーや重大な悪影響を確認することは必要です。一方、毎日通常のp値を計算し、有意になった日に成功として止めると、固定した1回の検定とは誤判定の性質が変わります。Microsoft Researchの実験中の確認事項も、反復検定への対応や、予定した割付比率とのずれを扱っています。

途中で効果判定するなら、逐次的な判定方法を設計に含めます。安全のため停止した場合も、その理由と観測範囲を報告し、当初予定した精度で効果を確認できたとは扱いません。

開始前に、問いの一文、割付単位、必要人数と期間、計測確認、終了・除外・分析の規則を一枚に残してください。その設計が守られたかを確認した上で、A/Bテストの結果を効果量と区間で読む段階へ進みます。比較の仮定そのものは因果推論入門、問いの整理は統計の判断ガイドで確認できます。

よくある質問(FAQ)