本文へ移動

A/Bテストは有意差が出た日に終了してよいか?

A/Bテストの結果を毎日見て、有意差が出た日に終了すると、差がないのに差があると判定する確率が変わります。この記事では、購入率の架空例で途中結果と最終結果を比較し、固定人数での判定と逐次検定、障害を検知する監視の違いを解説します。

公開日

有意差が出た瞬間に終了すると判定方法が変わる

ホームページの申込みボタンを変え、A案とB案を比較しているとします。毎日結果を開き、B案の購入率が高く、p値が0.05未満になった日に終了すれば、早く採用を決められるように思えます。

しかし、事前に決めた人数の結果を一度判定する通常の検定に、その終了方法を追加すると、差がないのに差があると判定する確率が高くなることがあります。 結果に応じて終了するなら、その終了方法に対応した検定が必要です 。Johariらの論文は、継続的な監視で標本数を変える問題と、途中終了に対応する推論方法を論じています。(A/Bテストの継続監視に関する論文)

ここでのA/Bテストは、利用者を無作為にA案かB案へ割り当て、同じ期間に結果を比較する実験です。過去のA案の実績と、今月のB案の実績だけを比較する場面とは区別します。

5%は今回の勝者を間違える確率ではない

p値は、両案の購入確率が同じだと仮定したとき、観測した値と同程度以上に極端な検定統計量が得られる確率です。今回のB案が優れている確率や、今回の判断が間違っている確率を直接表す値ではありません。

判定の基準を有意水準5%とするなら、検定の前提を満たす同じ手順の実験を繰り返したとき、実際には差がない実験で誤って差があると判定する割合を5%以下に抑える設計を意味します。NISTの解説も、有意水準とp値を区別し、判定基準を事前に決めるよう説明しています。(有意水準とp値の説明)

途中で有意になったら終了し、有意でなければ続けると、有意になる機会を繰り返し設けることになります。この終了ルールで生じる誤判定の割合は、固定人数で一度だけ判定する検定の5%と同じにはなりません。累積データには前日の利用者も含まれるため、毎日の判定を独立した試行とみなして、単純に回数を掛ける計算もできません。

途中の購入率13%が最終時点では10.4%になる例

以下は、途中結果と最終結果の違いを説明する架空の計算例です。実在するサイトや研究の実測値ではありません。

利用者は同じ案を継続して表示され、1人につき購入したかどうかを1回数えるとします。各利用者について、初回表示後24時間の購入の有無を記録し、その観測期間が終わった人を集計します。開始前に、各案5,000人の観測を終えた時点で判定すると決めたとします。この人数は計算例の仮定であり、推奨人数ではありません。

集計時点A案の購入者数と人数A案の購入率B案の購入者数と人数B案の購入率通常の両側検定のp値
途中100人/1,000人10%130人/1,000人13%約0.035
事前に決めた最終時点500人/5,000人10%520人/5,000人10.4%約0.509

p値は、両案の購入確率が同じという仮定で、2群の合計購入者数を合計人数で割った購入率を使う、連続性補正なしの2標本比率のz検定で計算しました。両側とは、B案の方が高い場合も低い場合も、差を検出する判定です。利用者間の結果が独立であると仮定しています。

途中ではB案がA案より3パーセントポイント高く、p値は0.05未満です。その後に加わった各4,000人では、A案の購入者が400人、B案が390人なので、累積の差は0.4パーセントポイントになります。

この例では、途中結果だけなら有意と判定しても、事前に決めた最終時点では有意差を検出していません。ただし、 最終結果で有意でないことも、両案の購入確率が等しい証明にはなりません 。また、この1組の架空データだけで、途中終了による誤判定が何%になるかは求められません。真の購入確率も、この表には設定していません。

終了時点を固定するか途中終了に対応した方法を使う

固定人数で判定するなら、検出する購入率の差、通常の購入率、許容する誤判定の割合、差を検出する確率を踏まえて、開始前に必要人数を計算します。今回の例なら、各案5,000人の24時間の観測が完了した結果で判定し、途中で0.05を下回ったことを採用理由にしない、という運用です。

予定人数に達して有意でなかった後、同じ検定を繰り返して有意になる日を待つことも、終了ルールの変更です。集計する指標、判定する時点、途中で打ち切る場合の処理を、結果を読む前に決めておきます。

早期終了を可能にする方法として、データの追加に伴う複数回の判定を織り込む 逐次検定 があります。Johariらは、途中のデータに応じて終了しても誤判定率を制御するp値や区間を構成しています。通常のp値を毎日計算する方法とは計算上の設計が異なります。(途中終了に対応する推論方法)

利用する解析ツールの説明では、表示値が固定人数での判定用か、逐次検定用かを調べてください。逐次検定でも、対応する指標、無作為割当の単位、観測期間などの前提に従って使います。

障害を監視することと勝者を宣言することを区別する

実験中も、決済エラーや表示障害の監視は続けます。Microsoftの実験基盤の解説では、途中の繰り返し判定に統計的な補正を求める一方、利用者に不利益を与える不具合を早期に検知し、停止する運用を紹介しています。(Microsoftの実験中の監視方法)

たとえば、B案で購入ボタンが動かないなら、修復のために実験を中止する判断ができます。その中止を、A案の方が購入率を高めると予定どおり検証できた結果に読み替えないようにします。

ボタンを変える前に終了ルールも決める

A/Bテストは、通常のp値が一度0.05を下回ったことだけで終了を決めると、想定していた誤判定率を維持できない場合があります。固定人数での判定を守るか、途中終了に対応した検定を使うかを、開始前に決めてください。

ボタンの文言を変更する作業と、変更の効果を検証する作業はそれぞれ必要です。ホームページの文言を更新する際にも、どの変更を試すかに加え、何を数え、いつ結果を判定するかを決めておくと、途中の好結果だけで採用する判断を避けられます。

SpreadSite は、Googleスプレッドシートで内容を管理し、テンプレートを使ってホームページを作成・公開・更新できるノーコードツールです。

サービスの説明や申込みボタンの文言を自分で更新するホームページの作成に、ぜひ使ってみてください!

SpreadSiteでホームページを作成する →

よくある質問

Q: 毎日結果を開くこと自体が問題ですか?

A: 問題になるのは、通常の検定を使いながら、途中の有意差に応じて終了時点や採用判断を変えることです。固定人数での判定を守る方法と、途中終了を織り込んだ方法を区別してください。

Q: p値0.03ならB案が優れている確率は97%ですか?

A: その解釈はできません。p値は、両案の購入確率が同じという仮定の下で、観測値と同程度以上に極端な検定統計量が得られる確率です。

Q: 各案5,000人集めれば十分ですか?

A: 本文の人数は計算例の仮定です。必要人数は、通常の購入率、検出する差、許容する誤判定の割合、差を検出する確率によって変わります。

Q: 不具合があっても予定人数を集める必要がありますか?

A: 利用者を保護するための中止は、勝者を宣言する判定と区別します。不具合で中止した実験は、その理由と収集状況を記録し、予定どおり完了した比較として解釈しないようにします。

参考資料

スプレッドシートでホームページが作れるSpreadSite