常見的A/B測試誤區(qū)分析:重復(fù)檢驗顯著性
避免重復(fù)檢驗顯著性錯誤的最好方式就是不去重復(fù)地檢驗顯著性。
一、一種常見的A/B測試誤區(qū)
如果網(wǎng)頁正在運行A/B測試的時候,你時不時地去查看試驗結(jié)果的顯著性,你就會陷入誤區(qū)。
統(tǒng)計學(xué)上,重復(fù)檢驗顯著性是錯誤的行為。這樣做的后果是,即使數(shù)據(jù)報告顯示統(tǒng)計顯著,實際上仍有較大可能性非統(tǒng)計顯著。下面解釋原因。
二、背景
當(dāng)A/B測試的數(shù)據(jù)面板顯示“95%可能性比原版本有提升”,或者“90%可能統(tǒng)計顯著”,需要考慮如下的問題:假如A版本和B版本沒有潛在的差別,我們能看到數(shù)據(jù)中顯示出區(qū)別的可能性有多大?
這個問題的答案就是顯著性水平,“統(tǒng)計顯著的結(jié)果”意味著顯著性水平數(shù)值比較小,5%或1%。數(shù)據(jù)面板一般會取補集(95%或99%),作為“優(yōu)于原版本的概率”或類似的東西來報告。
然而,顯著性水平的計算有嚴(yán)格的假設(shè):樣本數(shù)量的多少是事先指定的。你很可能違反了該假設(shè)而不自知。如果開始試驗之前你沒有“本次試驗將采集1000個樣本”這樣的預(yù)期,而是打算“一看到統(tǒng)計顯著的結(jié)果就結(jié)束”,那么上報的顯著性水平將毫無意義。這一結(jié)論完全反直覺,大量A/B測試工具忽略了這一點。下面會用一個例子解釋問題出在哪里。
三、例子
假設(shè)你在樣本量達到200和500時對試驗進行分析,4個可能發(fā)生情景如下:
假設(shè)AB版本效果相同,顯著性水平為5%,那試驗結(jié)束時,我們有5%的可能性得到統(tǒng)計顯著的結(jié)果。
而如果我們一觀察到顯著結(jié)果就停止試驗,事情會像下面這樣發(fā)展:
第一行和之前一樣,收集200個樣本之后報告的顯著性水平?jīng)]啥問題。然而問題出在第三行,試驗結(jié)束時,假設(shè)AB兩個版本實際效果相同,我們得到統(tǒng)計顯著結(jié)論的比例上升了。因此,顯著性水平——用來衡量因為運氣因素觀察到區(qū)別的概率,將是錯誤的。
四、問題有多嚴(yán)重?
如果你的轉(zhuǎn)化率是50%,想測試一下新的logo是否能把轉(zhuǎn)化率提升到50%以上。你打算觀察到5%級別的統(tǒng)計顯著性就停止試驗,否則在收集150個樣本后停止試驗。
假設(shè)新logo沒有任何影響,得到錯誤的統(tǒng)計顯著結(jié)果的概率有多大?不過5%?根據(jù)前面的分析,也許是6%?
結(jié)果是26.1%——比你預(yù)計的顯著性水平的5倍還多。這是最差的情況,因為我們每收集一個新樣本都檢查統(tǒng)計顯著性(也不是沒有這樣先例)。至少有一家A/B測試平臺確實提供在出現(xiàn)統(tǒng)計顯著就停止試驗的功能。聽起來這是個巧妙的花招,直到你意識到在統(tǒng)計學(xué)上這是惡習(xí)。
重復(fù)進行顯著性檢查總會增加虛報概率,也就是說會把許多本來非顯著的結(jié)果變成顯著(而不是反之)。只要你有“偷窺”數(shù)據(jù),發(fā)現(xiàn)統(tǒng)計顯著就結(jié)束試驗的行為,該問題就會存在。偷窺地越頻繁,顯著性水平偏差越大。
例如,在試驗過程中偷窺10次,表面上是1%的顯著性實際上僅是5%的顯著性。下面的表格展示了在有偷窺的情況下,數(shù)據(jù)報表中的顯著性需要達到多少才能有實際上的5%顯著性。
偷窺次數(shù)達到實際顯著性水平5%時,所需要的報告顯著性水平:
看一下自己犯了多大的錯誤,如果你在A/B測試過程中不時地查看統(tǒng)計結(jié)果并快速的做決定,上面的表格會讓你起雞皮疙瘩。
五、應(yīng)該如何做
避免重復(fù)檢驗顯著性錯誤的最好方式就是不去重復(fù)地檢驗顯著性。
事先決定樣本數(shù)量,等試驗結(jié)束后再去A/B測試軟件中查看“優(yōu)于原版本的概率”。如果你能抑制提前結(jié)束試驗的想法,那中途偷窺數(shù)據(jù)也無妨。這有些反人性,所以最佳建議還是不要偷窺。
既然要事先決定樣本數(shù)量,應(yīng)該取多少呢?下面是經(jīng)驗公式:
δ是能檢測到的最小變化,σ是樣本的標(biāo)準(zhǔn)差。樣本的標(biāo)準(zhǔn)差可能不好預(yù)知,但是如果參與計算的樣本取值是2值的(比如統(tǒng)計轉(zhuǎn)化率),則有:
保證樣本的規(guī)模就能避免問題。
對A/B測試軟件的建議:在試驗結(jié)束之前不要報告顯著性水平,不要用顯著性水平來決定是繼續(xù)試驗還是停止試驗。試驗進行中不報告顯著性水平而是報告目前樣本數(shù)量能檢測出多大的差別,計算公式為:
兩個t是給定顯著性水平α/2和統(tǒng)計功效1-β的t統(tǒng)計量。
聽起來痛苦,你甚至可以考慮把試驗效果的“當(dāng)前估計值”去除掉,直到試驗結(jié)束再顯示。如果該信息用于提前結(jié)束試驗,則報告的顯著性水平毫無意義。
如果你真想把這事做對:事先固定樣本大小可能令人沮喪,如果改動后效果確實不錯,難道不應(yīng)該立刻部署嗎?
這個問題長期困擾著醫(yī)學(xué)界,因為醫(yī)學(xué)研究人員通常希望在新的療法看起來有效時停止臨床試驗,但是他們還需要對其數(shù)據(jù)進行有效的統(tǒng)計推斷。下面是兩種用于醫(yī)學(xué)試驗設(shè)計的方法,有些部分應(yīng)該也適用于網(wǎng)頁試驗:
- 序貫分析試驗設(shè)計:序貫分析試驗設(shè)計讓你可以預(yù)先設(shè)定檢查點,決定是否繼續(xù)試驗,給出正確的顯著性水平。
- 貝葉斯試驗設(shè)計:貝葉斯試驗設(shè)計讓你可以隨時停止試驗并給出正確推斷。實時反映網(wǎng)頁試驗的狀態(tài),貝葉斯方案看起來是未來發(fā)展方向。
六、結(jié)論
雖然數(shù)據(jù)面板看起來很強大和方便,但在進行中的A/B測試中被濫用。任何時候,當(dāng)它們與手動或自動的“停止規(guī)則”結(jié)合使用時,顯著性檢驗結(jié)果會無效。除非在軟件中實現(xiàn)序貫分析或貝葉斯實驗設(shè)計,否則任何運行網(wǎng)頁試驗的試驗者都應(yīng)該只在樣本量已經(jīng)提前固定的情況下進行試驗,并且像虔誠的教徒一樣堅持該樣本量。
作者:祁永輝,微信:yonghuishuo,吆喝科技增長顧問,專注于A/B test相關(guān)知識分享
本文由 @祁永輝 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
額,翻譯的還行
emmm 這篇文章是翻譯的Evan Miller的文章吧,怎么就成原創(chuàng)的了呢。。
QQ群