在我的 另一篇文章 中,提過 A/B Test 禁止偷看結果,樣本蒐集到 預期的所需數量 之前,不可以提早做統計檢定,否則會增加決策錯誤的機率。不過,標準的假設檢定不是唯一一種 A/B 測試的方法。在 Evan Miller 的 文章,他介紹了 Sequential A/B Testing,它有幾項神奇的好處:
- 允許偷看數據、隨時檢驗是否顯著都可以
- 在特定情況下,比標準假設檢定需要的樣本數還少、可以更快結束實驗
- 檢驗甚至只需要加減法,不需要算 P-value!
事實上,專門做 A/B Test 的公司 Optimizely 也以 Sequential A/B Testing 相關的 機率理論 為基礎,發展出 New Stats Enigine 來加速實驗流程。本文將介紹較基本的方法。

筆者第一次看到 Sequential A/B Testing 方法的時候覺得它簡單到莫名其妙,所以在這則筆記,除了介紹 Sequential A/B Testing 以外,我也寫程式驗證此方法是否真的這麼神奇,並用資料視覺化的方式呈現此方法在哪些情境下特別有優勢。想一起動手做的讀者,可以打開好豪寫的 Google Colab Notebook 一起玩玩看。
目錄
Sequential A/B Testing 介紹
超簡單的檢定
對二項式比率(此稱為轉換率)執行單尾檢定:
- 決定好你對實驗假設的顯著力、檢定力、以及期望的轉換率差異量之後,使用 計算機 或者 查表,選出轉換成功樣本數大小 \(N\)
- 開始 A/B Testing
- 持續觀測實驗組(B 組)的轉換成功數量 \(T\)、以及控制組(A 組)轉換成功數量 \(C\)
- 如果 \(T – C\) 超過 \(2\sqrt{N}\),宣告實驗組較好,結束實驗
- 如果第 4 點不成立,且 \(T + C\) 累積到超過 \(N\),無法宣告任一方較好,結束實驗
樣本數 N 選擇
Sequential A/B Testing 的樣本大小選擇,是根據 The Gambler’s Ruin 機率理論,你可以依照 公式、自己寫程式找出所需樣本數,然而,我認為簡單的查表就足以應付大部分的 A/B Testing 使用情境,不見得需要自己寫程式計算樣本數。
以下是假設顯著力 95%、檢定力 80% 時,你可以用的來查詢的表格:(計算來源:Evan Miller 的計算機)
期望轉換率相對差異量 | 轉換成功樣本數大小 N | 勝敗差異樣本數大小 d |
---|---|---|
50% | 170 | 26 |
40% | 243 | 31 |
30% | 391 | 39 |
20% | 808 | 56 |
10% | 2922 | 106 |
例如,目前觀察到廣告點擊率(CTR)是 1%,團隊做了小更動,預期可以將成效提升 10%、讓 CTR 提升到 1.1%。根據查表,你的 A/B Testing 實驗過程中,只要實驗組比對照組多 106 個成功點擊數,就可以宣告新的更動是更好的;相反地,如果兩組總共蒐集 2,922 個成功點擊時,還沒有任何一組勝過另一組至少 106 個成功點擊的話,那兩組就沒有輸贏。
方法有效性
由於這個方法只有加減法、沒有計算 P-value,實在讓筆者好豪半信半疑,所以試著寫程式驗證這個方法是否有效。驗證方法是觀察實驗錯誤率是否符合上方查表假設的顯著力 95% 與檢定力 80%:
- 設置 A/B 兩組實際上沒有差異,預期只能有 5% 的時候會誤判出顯著差異
- 設置 A/B 兩組實際上存在差異,預期 80% 的時候會檢定出顯著差異、也就是 20% 會誤判以為沒差異
寫程式驗證之後,Sequential A/B Testing 看起來方法簡單,但是以上兩項假設確實都符合!
(詳細驗證流程請參考好豪的 Python Notebook)
方法特色
看到這裡,Sequential A/B Testing 有幾項值得讀者注意的特色:
- 兩組比較的是轉換成功的絕對數字差異,而不是轉換成功比率差異
- 也可以說,此方法只在乎轉換成功、而不管轉換失敗的數目
- 如上方的表格所示,此方法需要的樣本數與基礎轉換率無關
- 相較之下,標準假設檢定的固定樣本數方法,A/B Testing 所需樣本數會受基礎轉換率影響
也因為這些特色,Sequential A/B Testing 在特定場合較為實用。
Sequential A/B Testing 適用場合
「適用」的意思,是我們想知道在什麼情境下 Sequential A/B Testing 會比標準假設檢定的 固定樣本數方法 好用。以下實驗數據主要是比較 Sequential A/B Testing 相對於標準假設檢定節省了多少樣本數量。實驗中,刻意設計幾種情境,觀察檢定方法是否判定 A/B 兩組有差異:
- A/A Test: A/B 兩組實際上並無差異
- A/B Test: A/B 兩組存在差異,差異量恰好為期望差異量
- Blockbuster Test: A/B 兩組存在差異,而且差異量是期望差異量的兩倍
適用場合視覺化

在圖示中,節省樣本數量大於零(黑色實線以上),代表 Sequential A/B Testing 需要的樣本數比標準假設檢定的固定樣本數方法更少、可以更快結束實驗:
- 如果 A/B 兩組實際上並無差異,Sequential A/B Testing 相對於標準假設檢定的節省量是負值、也就是 Sequential A/B Testing 需要更多樣本數才能結束實驗
- 如果 A/B 兩組存在差異,而且基礎轉換率較小(1 ~ 5%)、期望相對差異量也較小(10 ~ 30%)的話,Sequential A/B Testing 需要的樣本數,會比標準假設檢定少 10 ~ 20%
- Sequential A/B Testing 能更快偵測出兩組差異、並結束實驗
- 如果實驗組實際上效果超乎預期的好,Sequential A/B Testing 節省的樣本數量甚至超過 30%
舉例而言,如果你剛上架一款新的手機遊戲,新玩家的付費率目前是 2%。你希望更多玩家願意花錢,所以幫付費按鈕增加了閃爍特效,預期轉換率提升 20%:
- 如果為此新特效執行標準假設檢定 A/B Testing 的固定樣本數方法,你預期需要一個月才能搜集完成樣本
- 使用 Sequential A/B Testing 的話,如果新特效真的有效益,你可以預期節省約 15% 的樣本數,大約三週就可以檢定出效果
- 相反地,如果新特效其實沒效益,用 Sequential A/B Testing 需要多花一週時間才會結束實驗
更簡單地說明此例,當你用 固定樣本數方法 預期要一個月才能搜集完樣本時,採用 Sequential A/B Testing 的話:
- 如果新特效真的有用,你可以提早一週結束實驗、讓所有用戶付費率提高到 2.2%,賺更多錢!
- 如果新特效實際上沒用,實驗會晚一週結束,但是你的付費率依然維持 2%,也不會有損失
決定是否該用 Sequential A/B Testing 的經驗法則
在上面的資訊圖表中,告訴我們基礎轉換率以及期望差異量越小的時候,Sequential A/B Testing 可以更快速結束實驗,但究竟要小到什麼程度呢?Evan Miller 在他的 文章 提出一個經驗法則:
1.5 * 基礎轉換率 + 相對差異 < 36%

只要想實驗的目標轉換率與相對差異量符合這個經驗法則,讀者就可以考慮使用 Sequential A/B Testing。在基礎轉換率小於 5% 的時候,大多可以預期所需樣本數比固定樣本數法減少至少 10%。
結語
在商業場景中,如果你的新設計(B 組)確實成效較好,決策者當然希望越早採用它越好、盡快提升產品整體表現;相反地,如果實驗結果告訴你 A/B 兩組對使用者來說根本沒差異,那就算 Sequential A/B Testing 會讓所需樣本數增加、讓 A/B 兩組實驗久一點,也是可以接受的犧牲。
因此,如果你的實驗基礎轉換率較低的話,不妨試著採用 Sequential A/B Testing,讓你的團隊能有機會更快看出實驗成效、也更快最佳化你的產品。
參考資料:
- Udemy 線上課程:Bayesian Machine Learning in Python: A/B Testing
- Evan Miller: Simple Sequential A/B Testing
- Optimizely:The New Stats Engine 官方技術文件
- 好豪的 Github 專案:A/B Testing 教學文章與 Python 實作
還想知道更多 A/B Testing 相關知識嗎?推薦你閱讀好豪的 A/B Testing 系列文章:
- 單尾與雙尾檢定,該選哪一個?
- A/B Test 樣本數究竟該怎麼算?公式與 Python 算法通通學會
- A/A Test:商業實驗不能忘的前置動作
- 比例資料的 A/B Testing 該用卡方還是 Z 檢定?
- 多重檢定問題:一定會有人中樂透
如果這篇文章有幫助到你,歡迎追蹤好豪的 粉絲專頁、我會持續撰寫資料科學的知識文章;或者點選下方按鈕分享給需要的朋友們。