Hypothesis-Testing

為什麼在達到最佳樣本量之前停止 A/B 測試是錯誤的?

  • November 7, 2016

我負責在我的公司展示 A/B 測試(在網站變體上運行)的結果。我們運行測試一個月,然後定期檢查 p 值,直到達到顯著性(或者如果長時間運行測試後未達到顯著性則放棄),我現在發現這是一種錯誤的做法

我現在想停止這種做法,但要做到這一點,我想了解為什麼這是錯誤的。我了解效應量、樣本量 (N)、α 顯著性標準 (α) 和統計功效,或選擇或隱含的β (β) 在數學上是相關的。但是,當我們在達到所需樣本量之前停止測試時,究竟會發生什麼變化?

我在這裡閱讀了一些帖子(即thisthisthis),它們告訴我我的估計會有偏差,並且我的類型 1 錯誤率急劇增加。但這是怎麼發生的?我正在尋找一個數學解釋,可以清楚地顯示樣本量對結果的影響。我想這與我上面提到的因素之間的關係有關,但我無法找出確切的公式並自己計算出來。

例如,過早停止測試會增加類型 1 錯誤率。好吧。但為什麼?增加 1 類錯誤率會發生什麼?我在這裡缺少直覺。

請幫忙。

A/B 測試簡單地重複測試具有固定類型 1 錯誤的相同數據() 水平存在根本缺陷。這至少有兩個原因。首先,重複測試是相關的,但測試是獨立進行的。二、固定不考慮導致類型 1 錯誤膨脹的多次傳導測試。

要查看第一個,假設在每次新觀察時您都會進行新測試。顯然,任何兩個後續 p 值都是相關的,因為兩次測試之間的情況沒有變化。因此,我們在@Bernhard 的圖中看到了一個趨勢,證明了 p 值的這種相關性。

要查看第二個,我們注意到即使測試是獨立的,p 值低於隨著測試次數的增加

在哪裡是錯誤拒絕原假設的事件。所以至少有一個陽性測試結果的概率是相反的當您反復進行 a/b 測試時。如果你只是在第一個陽性結果後停止,你只會證明這個公式的正確性。換句話說,即使原假設為真,您最終也會拒絕它。因此,a/b 測試是在沒有效果的情況下找到效果的最終方法。 由於在這種情況下,相關性和多重檢驗同時成立,檢驗的 p 值取決於 p 值. 所以如果你最終達到,您很可能會在該地區停留一段時間。您還可以在 @Bernhard 的 2500 到 3500 和 4000 到 5000 區域的圖中看到這一點。

多次測試本身是合法的,但是針對固定的測試不是。有許多程序同時處理多重測試程序和相關測試。一類測試校正稱為全族錯誤率控制。他們所做的是確保

可以說最著名的調整(由於其簡單性)是 Bonferroni。我們在這裡設置

很容易證明如果獨立測試的數量很大。如果測試是相關的,它可能是保守的,. 所以你可以做的最簡單的調整就是劃分你的 alpha 水平通過您已經進行的測試次數。 如果我們將 Bonferroni 應用到 @Bernhard 的模擬中,然後放大到y軸上的間隔,我們找到下面的圖。為了清楚起見,我假設我們不會在每次拋硬幣(試驗)後進行測試,而只是每百分之一。黑色虛線是標準切斷,紅色虛線是 Bonferroni 調整。

在此處輸入圖像描述

正如我們所看到的,調整非常有效,並證明了我們必須改變 p 值以控制全族錯誤率是多麼激進。具體來說,我們現在不再發現任何重要的測試,因為它應該是因為@Berhard 的零假設是正確的。

完成此操作後,我們注意到由於相關測試,Bonferroni 在這種情況下非常保守。有更好的測試在這種情況下會更有用。,如置換檢驗。此外,關於測試還有很多要說的,而不僅僅是參考 Bonferroni(例如查找錯誤發現率和相關的貝葉斯技術)。然而,這用最少的數學回答了你的問題。


這是代碼:

set.seed(1)
n=10000
toss <- sample(1:2, n, TRUE)

p.values <- numeric(n)
for (i in 5:n){
 p.values[i] <- binom.test(table(toss[1:i]))$p.value
}
p.values = p.values[-(1:6)]
plot(p.values[seq(1, length(p.values), 100)], type="l", ylim=c(0,0.1),ylab='p-values')
abline(h=0.05, lty="dashed")
abline(v=0)
abline(h=0)
curve(0.05/x,add=TRUE, col="red", lty="dashed")

引用自:https://stats.stackexchange.com/questions/244646

comments powered by Disqus