1. 題目
新引導頁進行 A/B 測試。按使用者類型拆分後,實驗組在新使用者和回訪使用者兩個分層的轉換率都高於對照組;把兩層合併後,實驗組總體轉換率卻更低。產品負責人要求當天決定是否全量發布。
請構造一個具體的計數例子說明這種反轉如何發生,並給出從原始分母、隨機化平衡、分層估計量到異質性檢驗的分析流程。最後說明在什麼證據下應全量發布、按分層發布、暫停實驗或繼續收集資料。
2. 約束與釐清
- 這是隨機分配的線上實驗;「新使用者」和「回訪使用者」是實驗開始前已定義的分層變數。
- 主要指標是每位使用者在固定視窗內是否完成核心轉換,不能把同一使用者的多次事件當成多個獨立樣本。
- 題目中的數字是練習資料,不代表任何公司的真實結果或上線門檻。
- 必須先確認兩組觀察視窗、去重規則、曝光定義和資料水位一致;若分層變數受實驗影響,就不能直接按它切分因果效果。
3. 核心推理:分母構成可以製造反轉
總體轉換率是各分層轉換率按樣本量加權的結果。若兩組的分層占比不同,即使實驗組在每一層都較好,權重差異仍可能讓總體結果反轉。
一個極端但清楚的例子:高基線分層中,對照組為 990/1000 = 99%,實驗組為 100/100 = 100%;低基線分層中,對照組為 1/100 = 1%,實驗組為 20/1000 = 2%。實驗組在兩個分層都提高 1 個百分點,但總體對照組為 991/1100 = 90.1%,實驗組為 120/1100 = 10.9%。差異來自兩組把大量樣本分配到不同基線分層,而非頁面在任何一個分層中變差。
真實分析中,這麼大的構成差異通常提示隨機化、曝光、抽樣或時間視窗存在問題。它不是「總體平均永遠錯誤」的證明;當分層比例由設計保證平衡,或使用預先規定的標準化權重時,總體估計仍可代表目標人群的平均處理效果。
4. 診斷與參考偽程式碼
先按實驗組、分層、轉換標記彙總使用者級分母和分子,再比較分層占比、效果和信賴區間。不要先看一個漂亮的總體百分比,再為了尋找解釋任意嘗試十幾個切片。
for arm in [control, treatment]:
for stratum in [new, returning]:
n[arm, stratum] = count_distinct_users(arm, stratum)
y[arm, stratum] = count_users_with_conversion(arm, stratum)
rate[arm, stratum] = y[arm, stratum] / n[arm, stratum]
share[arm, stratum] = n[arm, stratum] / sum_s(n[arm, s])
check_exposure_and_assignment_balance()
check_missing_users_duplicates_and_window()
report_stratum_effects_and_confidence_intervals()
weights = preregistered_target_population_shares()
standardized_effect = sum_s(weights[s] * (rate[treatment, s] - rate[control, s]))
test_arm_by_stratum_interaction()如果隨機化前的分層變數可用,應在實驗設計階段按層隨機,或至少監控每層分配比例。分析計畫中預先寫下主要分層、目標人群權重、主要指標和停止規則,避免看見結果後選擇最有利的切片。
5. 正確性、統計與上線決策
分層估計量把每層的處理效果放回同一目標人群權重,因此不會把樣本構成差異誤當成處理效果。權重必須來自實驗前的業務人群定義或隨機化設計,不能根據實驗結果倒推。
還要檢驗處理組與分層變數的交互項,判斷效果差異是否超過抽樣誤差。交互顯著且方向穩定時,可以為新使用者和回訪使用者採用不同發布策略;交互不顯著時,應優先報告預先註冊的總體估計,而不是挑選最好的分層。
統計顯著不等於值得發布。上線決策還要結合最小可接受效果、護欄指標、實驗持續時間、樣本量、延遲轉換和資料完整性。若發現曝光漏記、跨組污染、隨機化失衡或視窗尚未成熟,應暫停決策並修復資料,而不是用更多切片掩蓋問題。
6. 追問與陷阱
- 分層變數何時會造成因果問題? 如果變數在曝光之後才產生,按它分層可能引入碰撞偏差;應改用曝光前變數或預先定義的機制分析。
- 為什麼不能無限切片? 每嘗試一個未預先註冊的分層,就增加偶然發現顯著結果的機會;需要控制多重比較,並把探索性結果標為假設。
- 總體比例差異一定是 Simpson 悖論嗎? 不一定。先檢查兩組分母、曝光資格、時間視窗、去重和缺失,再確認每個分層方向確實相反。
- 實驗組分層比例不同怎麼辦? 先調查隨機化和流量路由;若目標人群權重已明確,可用預先註冊的標準化估計,但不能事後選擇權重。
7. 參考資料
- Google for Developers 的 Good Data Analysis 與 Analysis traps 指南。
- Optimizely 對實驗中 Simpson 悖論和分層結果的說明。
- 公開資料科學面試題中的 A/B 測試反轉場景。
8. 面試評分點
能算清分母與權重
候選人應能用計數展示「每層都贏、總體卻輸」,並指出兩組分層占比不同是必要線索。
能區分診斷與決策
應先檢查隨機化、曝光、視窗和資料品質,再討論分層估計量、交互檢驗和上線規則。
能說清因果邊界
應識別曝光後的分層變數、碰撞偏差和多重比較風險,避免把所有切片都當作獨立結論。
能給出可執行方案
應提出按層隨機、預先註冊權重、護欄指標和分層發布/繼續實驗的條件,而不是只說「看更多資料」。