好的 A/B Test,從來不只是在看 p-value。可靠的實驗是一條完整鏈路:把正確的問題,以可驗證的設計、足夠的資料與清楚的決策規則串起來。
核心原則:不要把 A/B Test 當成「找顯著」的流程;它是降低決策不確定性的系統。
想直接動手算樣本數或檢定結果,可以用 A/B Test 實驗工具箱。
七個環節,各自處理一種失真風險
- 定義問題:知道要解決什麼問題
- 設計實驗:確保只有一個變因不同
- 抽樣規劃:讓結果具有可信度
- 執行實驗:蒐集無偏的資料
- 資料驗證:確認資料沒有問題
- 統計分析:判斷差異是否可信
- 做決策:把分析變成行動
下面每一節都可以直接當成實驗規格文件、啟動會議與結果審查的共同檢核表。
01 定義問題
應完成的事
- 提出可被驗證的假設(Hypothesis)
- 定義唯一的主要成功指標(Primary Metric)
- 定義護欄指標(Guardrail),例如退款率、延遲或留存
避免
- 先看資料才決定要驗證什麼
- 同時宣告太多「主要」指標
- 只有提升目標、沒有風險界線
02 設計實驗
應完成的事
- 選定實驗單位:User、Session 或裝置
- 採用真正的隨機分流(Randomization)
- 同一使用者固定分組(Sticky Assignment)
- 讓文案、價格、流量來源等其他條件一致
避免
- 用時間區段取代隨機分流
- 讓同一人反覆看到 A 與 B
- 一次改動多個因素,卻無法歸因
03 抽樣規劃
應完成的事
- 確認樣本能代表目標母體
- 檢查 A/B 的人數與關鍵特徵平衡
- 依基準值、MDE、α 與 power 計算樣本數
- 預先設定實驗期間,涵蓋完整週期
避免
- 只因為「跑了一週」就結束
- 忽略週末、月初或季節性行為
- 樣本量不足卻將不顯著解讀為沒有效果
04 執行實驗
應完成的事
- 依既定規則正式開始分流
- 持續監控系統健康度,但不據此判定贏家
- 遵守預先設定的期間與停止規則
- 記錄實驗中發生的重要事件
避免
- 每天看 p-value,顯著就提前停止
- 大型行銷活動與實驗交疊卻未標註
- 實驗中途悄悄改版或更換受眾
為什麼不能一直偷看:Peeking(偷看)與 Optional Stopping(看到顯著才停)會放大 Type I Error。即使兩版本完全沒效果,每多檢查一次就多一次碰巧跌破 0.05 的機會。正式實驗應預先決定樣本量與停止規則,或採用序列檢定等相應方法。
05 資料驗證
應完成的事
- 檢查 SRM(Sample Ratio Mismatch)
- 檢查事件漏送、重複送出與定義變更
- 檢查流量、地區、裝置等分布是否合理
- 確認曝光、分組與轉換鏈路正常運作
避免
- 未驗證資料便直接做統計檢定
- 把埋點故障誤認成產品效果
- 忽略不平衡分流的警訊
06 統計分析
應完成的事
- 計算 Effect Size,先看差異有多大
- 報告 p-value 與 Confidence Interval
- 檢查實務顯著性(Practical Significance)
- 分析 Secondary Metrics 與護欄指標
避免
- 只用 p < 0.05 做二元判決
- 忽略信賴區間的範圍與風險
- 大量切分族群後只報告漂亮結果
p-value 到底在說什麼
想像按鈕實驗跑完:A 是 18%,B 是 16%。表面上 A 高了 2 個百分點,但真正該問的是:這是運氣,還是效果?就算兩個按鈕其實一樣好,抽樣時仍可能剛好得到 18% 與 16%。
p-value 的意思是:先暫時假設兩個版本沒有差異,在這個前提下,看到目前這種差距、或更極端差距的機率有多大。
錯誤解讀:p = 0.03「有 97% 機率 A 真的比較好。」p-value 沒有直接告訴我們假設為真的機率。
正確解讀:p = 0.03「假如 A 與 B 真的沒有差異,隨機抽樣得到這麼大或更大的差距,約有 3% 機率。」它衡量的是資料在假設下有多罕見。
一次完整推導:9/50 對 8/50
A 有 50 人、9 人轉換;B 有 50 人、8 人轉換。
- 兩組轉換率:pA = 9/50 = 0.18,pB = 8/50 = 0.16,觀察到的差異是 0.02。
- 虛無假設:H₀:pA = pB。接著問:若 H₀ 為真,這個 2% 差距是否罕見?
- 合併比例:在「兩組相同」的前提下合併成功數,p̂ = (9 + 8) / (50 + 50) = 0.17。
- 標準誤:衡量重做實驗時差異通常會怎麼波動,樣本越多波動越小。
- z 值:觀察到的差異距離 0 有幾個標準誤。
- 雙尾 p-value:也在乎 B 比 A 好的同等極端情況,所以左右兩尾都算。
SE = √[0.17 × 0.83 × (1/50 + 1/50)] ≈ 0.0751
z = (0.18 − 0.16) / 0.0751 ≈ 0.27
p = 2 × (1 − Φ(0.27)) = 2 × (1 − 0.606) ≈ 0.79
z = (0.18 − 0.16) / 0.0751 ≈ 0.27
p = 2 × (1 − Φ(0.27)) = 2 × (1 − 0.606) ≈ 0.79
p ≈ 0.79 遠大於常用的 0.05:資料沒有提供足夠證據拒絕 H₀。這不是說按鈕一定相同,而是樣本太小、差距也太小。
常見迷思
- p < 0.05 是不是一定成功?不是。它只表示若沒有差異,觀察到此結果很罕見;仍可能是假陽性,也不保證效果值得上線。
- 樣本越大是不是一定好?更多樣本能降低不確定性,但也會讓極小、沒有商業價值的差異變得統計顯著,所以要先設定 MDE。
- 為什麼樣本變多,p 值反而下降?標準誤約隨樣本量的平方根下降,同樣大小的差異在更多資料下顯得更精準,z 就會變大。
- z 值跟效果大小有什麼不同?效果大小是差了多少(例如 +2%);z 值是差異相對於雜訊有多遠。兩者都該看。
- 統計顯著與商業顯著差在哪?統計顯著回答「不像巧合嗎?」;商業顯著問「這個提升是否足以抵銷開發、風險與機會成本?」
07 做決策
應完成的事
- 將效果、風險、成本與策略脈絡一起判讀
- 記錄決策理由與實驗洞察
- 安排上線後的長期監測
避免
- 把「未顯著」直接當作失敗
- 忽略護欄指標變差而強行上線
- 只留下結果,沒有保留可複用的學習
最後不是統計結論,而是產品決策
在實驗品質與護欄指標都通過的前提下,根據效果大小與商業價值選擇下一步:
| 決策 | 什麼時候選 |
|---|---|
| Ship | 效果可信、風險可接受,全面上線。 |
| Iterate | 洞察有價值但效果未達標,調整後再測。 |
| Rollback | 護欄受損、效果不佳或實驗品質有疑慮,回滾並釐清。 |
p-value 不是魔法門檻,它只是評估「隨機波動能否合理解釋資料」的一塊證據。好的實驗還要有隨機分派、足夠樣本、事先規劃與清楚的商業目標。
A/B Test Playbook:從問題到決策HSUCHE 數據筆記 · 轉載請註明出處
