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