常見的A/B測試誤區分析:重複檢驗顯著性

2020-12-17 人人都是產品經理

避免重複檢驗顯著性錯誤的最好方式就是不去重複地檢驗顯著性。

一、一種常見的A/B測試誤區

如果網頁正在運行A/B測試的時候,你時不時地去查看試驗結果的顯著性,你就會陷入誤區。

統計學上,重複檢驗顯著性是錯誤的行為。這樣做的後果是,即使數據報告顯示統計顯著,實際上仍有較大可能性非統計顯著。下面解釋原因。

二、背景

當A/B測試的數據面板顯示「95%可能性比原版本有提升」,或者「90%可能統計顯著」,需要考慮如下的問題:假如A版本和B版本沒有潛在的差別,我們能看到數據中顯示出區別的可能性有多大?

這個問題的答案就是顯著性水平,「統計顯著的結果」意味著顯著性水平數值比較小,5%或1%。數據面板一般會取補集(95%或99%),作為「優於原版本的概率」或類似的東西來報告。

然而,顯著性水平的計算有嚴格的假設:樣本數量的多少是事先指定的。你很可能違反了該假設而不自知。如果開始試驗之前你沒有「本次試驗將採集1000個樣本」這樣的預期,而是打算「一看到統計顯著的結果就結束」,那麼上報的顯著性水平將毫無意義。這一結論完全反直覺,大量A/B測試工具忽略了這一點。下面會用一個例子解釋問題出在哪裡。

三、例子

假設你在樣本量達到200和500時對試驗進行分析,4個可能發生情景如下:

假設AB版本效果相同,顯著性水平為5%,那試驗結束時,我們有5%的可能性得到統計顯著的結果。

而如果我們一觀察到顯著結果就停止試驗,事情會像下面這樣發展:

第一行和之前一樣,收集200個樣本之後報告的顯著性水平沒啥問題。然而問題出在第三行,試驗結束時,假設AB兩個版本實際效果相同,我們得到統計顯著結論的比例上升了。因此,顯著性水平——用來衡量因為運氣因素觀察到區別的概率,將是錯誤的。

四、問題有多嚴重?

如果你的轉化率是50%,想測試一下新的logo是否能把轉化率提升到50%以上。你打算觀察到5%級別的統計顯著性就停止試驗,否則在收集150個樣本後停止試驗。

假設新logo沒有任何影響,得到錯誤的統計顯著結果的概率有多大?不過5%?根據前面的分析,也許是6%?

結果是26.1%——比你預計的顯著性水平的5倍還多。這是最差的情況,因為我們每收集一個新樣本都檢查統計顯著性(也不是沒有這樣先例)。至少有一家A/B測試平臺確實提供在出現統計顯著就停止試驗的功能。聽起來這是個巧妙的花招,直到你意識到在統計學上這是惡習。

重複進行顯著性檢查總會增加虛報概率,也就是說會把許多本來非顯著的結果變成顯著(而不是反之)。只要你有「偷窺」數據,發現統計顯著就結束試驗的行為,該問題就會存在。偷窺地越頻繁,顯著性水平偏差越大。

例如,在試驗過程中偷窺10次,表面上是1%的顯著性實際上僅是5%的顯著性。下面的表格展示了在有偷窺的情況下,數據報表中的顯著性需要達到多少才能有實際上的5%顯著性。

偷窺次數達到實際顯著性水平5%時,所需要的報告顯著性水平:

看一下自己犯了多大的錯誤,如果你在A/B測試過程中不時地查看統計結果並快速的做決定,上面的表格會讓你起雞皮疙瘩。

五、應該如何做

避免重複檢驗顯著性錯誤的最好方式就是不去重複地檢驗顯著性。

事先決定樣本數量,等試驗結束後再去A/B測試軟體中查看「優於原版本的概率」。如果你能抑制提前結束試驗的想法,那中途偷窺數據也無妨。這有些反人性,所以最佳建議還是不要偷窺。

既然要事先決定樣本數量,應該取多少呢?下面是經驗公式:

δ是能檢測到的最小變化,σ是樣本的標準差。樣本的標準差可能不好預知,但是如果參與計算的樣本取值是2值的(比如統計轉化率),則有:

保證樣本的規模就能避免問題。

對A/B測試軟體的建議:在試驗結束之前不要報告顯著性水平,不要用顯著性水平來決定是繼續試驗還是停止試驗。試驗進行中不報告顯著性水平而是報告目前樣本數量能檢測出多大的差別,計算公式為:

兩個t是給定顯著性水平α/2和統計功效1-β的t統計量。

聽起來痛苦,你甚至可以考慮把試驗效果的「當前估計值」去除掉,直到試驗結束再顯示。如果該信息用於提前結束試驗,則報告的顯著性水平毫無意義。

如果你真想把這事做對:事先固定樣本大小可能令人沮喪,如果改動後效果確實不錯,難道不應該立刻部署嗎?

這個問題長期困擾著醫學界,因為醫學研究人員通常希望在新的療法看起來有效時停止臨床試驗,但是他們還需要對其數據進行有效的統計推斷。下面是兩種用於醫學試驗設計的方法,有些部分應該也適用於網頁試驗:

序貫分析試驗設計:序貫分析試驗設計讓你可以預先設定檢查點,決定是否繼續試驗,給出正確的顯著性水平。貝葉斯試驗設計:貝葉斯試驗設計讓你可以隨時停止試驗並給出正確推斷。實時反映網頁試驗的狀態,貝葉斯方案看起來是未來發展方向。

六、結論

雖然數據面板看起來很強大和方便,但在進行中的A/B測試中被濫用。任何時候,當它們與手動或自動的「停止規則」結合使用時,顯著性檢驗結果會無效。除非在軟體中實現序貫分析或貝葉斯實驗設計,否則任何運行網頁試驗的試驗者都應該只在樣本量已經提前固定的情況下進行試驗,並且像虔誠的教徒一樣堅持該樣本量。

本文由 @祁永輝 原創發布於人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基於CC0協議

相關焦點

  • 顯著性檢驗、假設檢驗和原假設顯著性檢驗
    NP體系是分析哪個檢驗統計量是最優統計量,而最優統計量的定義是固定第一類錯誤α(通常令α= 0.05),使第二類錯誤β最小的統計量或統計功效最大的統計量。不幸的是他們將固定的α值稱為顯著性水平,造成了應用中與Fisher理論中p值的混淆(Hubbard & Bayarri, 2003)。
  • 顯著性分析後如何標記「abc」?
    有童鞋在公眾號後臺問:用SPSS做差異顯著性分析後如何標記「abc」?
  • 顯著性檢驗的計算 - CSDN
    轉自個人微信公眾號【Memo_Cleon】的統計學習筆記:R筆記:兩配對樣本的顯著性檢驗。跟兩獨立樣本相對應的是兩配對樣本,生物醫學中常見的案例是治療前後的比較,兩種檢測方法的比較(同一樣本接受不同的檢驗方法)、配對的對象接受不同的處理。
  • 一文帶你輕鬆掌握,重複測量方差分析
    數據格式常見的重複測量數據格式,一般記錄成下圖格式:常見格式在上傳SPSSAU分析時,需要先進行整理。組內項表示同一對象被測試多次的標識項(如時間);組間項表示不同對象組別的標識項。組間項效應分析直接查看p 值即可;組內項效應分析需要進行球形度檢驗,並且結合檢驗選擇適合的結果。(1)第一步:針對組間效應檢驗表格進行分析,分析組別間效應顯著性情況。即判斷舊藥、新藥對患者抑鬱情況的影響是否有顯著差異。
  • R語言 | 差異顯著性檢驗
    差異顯著性檢驗是我們在分析數據的時候應用最多的統計學方法。我們經常要比較兩組或多組數據是否具有顯著差異,同時我們還會用差異顯著性檢驗識別不同組樣品中具有顯著差異的變量。這篇推文會分別介紹經常使用的差異顯著性檢驗方法在R語言中的實現。方法選擇差異顯著性檢驗具有多種方法,分別針對不同的情況,我們要根據自身情況選擇合適的方法進行分析。
  • 【方法】相關係數的計算與顯著性檢驗
    這些信息可供讀者進行後續分析。樣本相關係數可以用來對論文中建立的統計模型進行驗證,也可以用來進行元分析。相關係數的計算和顯著性檢驗是一個很輕鬆的工作——通常情況下,研究者會使用SPSS計算SPSS中各變量的相關,SPSS也直接提供了對相關係數的顯著性檢驗,研究者需要做的就是點點滑鼠,然後將結果抄寫在論文中。
  • 線性回歸方程的顯著性驗證,總體驗證的F檢驗與個體驗證的t檢驗
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第8章,顯著性驗證,總體驗證的F檢驗與個體驗證的t檢驗。上一章,我講述了回歸方程的精度,在回歸分析中,我們求出回歸方程後,除了確認回歸方程的精度外,我們要需要對回歸方程進行顯著性驗證,以確認回歸方程的有效性。本章,我同樣分如下三個小節對顯著性驗證進行講解,歡迎閱讀與探討。我的《線性回歸分析》專欄總目錄見下圖。1、什麼是顯著性驗證?
  • 每天學習一點R:43.差異顯著性檢驗
    差異顯著性檢驗是我們在分析數據的時候應用最多的統計學方法。
  • 差異分析、顯著性標記及統計作圖的自動實現R代碼示例
    當原始數據不滿足方差分析的條件時,可以考慮轉化數據(如log轉換),看轉化後的數據是否滿足。或者更換為非參數的方法,這裡展示一個針對於非參數檢驗的方法示例,先執行Kruskal-Wallis檢驗比較整體差異,再執行Behrens-Fisher的非參數多重比較查看兩兩差異。本人的很多經驗學自《R語言實戰 第二版》,它的154頁有這一段話。
  • python 顯著性水平專題及常見問題 - CSDN
    在之前我們利用線性回歸來分析葡萄酒的質量以及股票市場,但在這個任務中,我們將學習如何理解關鍵的統計學概念。Statsmodels是Python中進行嚴格統計分析的一個庫,對於線性模型,Statsmodels提供了足夠多的統計方法以及適當的評估方法。sm.OLS這個類用於擬合線性模型,採取的優化方法是最小二乘法。
  • 一文入門 A/B 測試(含流程、原理及示例)
    本文將對a/b test進行詳細的介紹,帶你從入門到實戰。————【以下是正文】————本文的主要目的是儘量用簡單的語言來整理A/B測試的流程和原理及注意事項,最後用一個例子來演示假設檢驗的過程,會採用直接計算、蒙特卡羅法(模擬法)、python內置函數計算三種方法,希望能從理論上和直觀上都給出對假設檢驗的理解(數據及代碼附在文末)。
  • SPSS分析技術:卡方檢驗;問卷(試卷)信度分析原理
    卡方檢驗是以卡方分布為基礎的一種檢驗方法,主要用於分類變量(定義數據和定序數據),適用於頻率數據的分析數據。常用於檢驗總體分布是否服從指定的分布的一種非參數檢驗的統計方法,可用於兩個或多個頻率間的比較、樣本關聯度分析和擬合優度檢驗等。擬合優度檢驗就是檢驗通過檢驗某一變量的實際觀測頻率和期望理論頻率是否吻合,若吻合,則證明樣本在該變量上的頻率分布與總體理論分布相同。
  • CFA教材輔導:測試多元回歸的顯著性/修正R方
    測試多元回歸的顯著性之前,我們說明了如何分別對回歸係數進行假設檢驗。如果我們現在想測試整個回歸的顯著性應該怎麼辦?作為一個整體,自變量是否有助於解釋因變量?為了解決這個問題,我們檢驗了回歸中所有斜率係數同時等於0的原假設。
  • 三種中介效應檢驗方法及操作步驟
    介紹三種常見中介效應檢驗方法,分別是因果逐步回歸檢驗法、係數乘積法、改良後的因果逐步回歸法,以及如果使用SPSSAU進行操作。什麼是中介效應中介效應:如果自變量X通過影響變量M而對因變量Y產生影響,則稱M為中介變量。
  • 血常規檢驗常見誤差分析
    作者:段唐海單位:武漢市第四醫院檢驗科血常規是臨床上最基本的血液檢驗項目,通過對紅細胞計數、白細胞計數、血小板計數和血紅蛋白濃度等指標的分析,為疾病的診斷和治療效果監測提供重要參考。然而,由於各種因素的影響,近年來有關血常規檢驗誤差事件頻繁發生,對患者的診療造成重大影響。
  • 中介效應分析的Sobel檢驗怎麼做?
    因此論文中新提出的中介效應檢驗程序,明顯已經沒有Sobel檢驗了,取而代之的是bootstrap法。但是目前仍有讀者在諮詢Sobel檢驗的做法,咱們先不管這是不是妥當,先就Sobel檢驗給出具體的操作方案。介紹一下案例,要研究管教方式U在學生違紀行為X與同伴關係Y間的中介作用,先採用傳統回歸分析三部曲,依次檢驗回歸係數c、a、b及c撇的顯著性。
  • 經濟學實證研究中的40個常見誤區
    以下為馬光榮老師關於「經濟學實證研究中常見的40個誤區」的講座。
  • PSM-傾向得分匹配分析的誤區
    後者,更容易將匹配樣本限定在分界點附近,這就降低了檢驗的顯著性,增加了犯第二類錯誤的概率。預測模型設計。「一個常見的錯誤理解,PSM 預測模型變量的選擇應該使預測能力最好」。重複和不可重複匹配。不可重複匹配使得每個控制組只能匹配一次,即使該控制組是多個處理組的最佳匹配,這就使得匹配質量降低和樣本變小。相反,重複匹配則可以有效避免這些問題,但是在估計處理效應時,需進行加權和調整標準誤,以反映匹配次數的影響。當然,也要注意極端控制組被重複匹配多次對推斷結果的影響。匹配半徑的設定。
  • 「申碩」《心理學研究方法》第四章:研究結果的整理和分析
    2、常用檢驗方法(1)Z檢驗:常用與總體正態分布、方差已知或大樣本的平均數的顯著性和差異性顯著性檢驗,非正態分布的皮爾遜積差相關係數和二裂相關係數的顯著性檢驗以及兩個相關係數分別有兩組被試得到的相關係數差異性檢驗等。
  • 使用非參數統計檢驗進行分析的指南
    問題是沒有人告訴你如何進行像假設檢驗這樣的分析。統計檢驗用於制定決策。為了使用中位數進行分析,我們需要使用非參數檢驗。非參數測試是分布獨立的檢驗,而參數檢驗假設數據是正態分布的。說參數檢驗比非參數檢驗更加的臭名昭著是沒有錯的,但是前者沒有考慮中位數,而後者則使用中位數來進行分析。接下來我們就進入非參數檢驗的內容。