為什麼在發現顯著結果之前收集數據會增加 I 類錯誤率?
我想知道為什麼要收集數據直到取得重要結果(例如,) 是否獲得(即 p-hacking)增加了 I 類錯誤率?
我也非常感謝
R
這種現象的示範。
問題是你給了自己太多通過考試的機會。這只是這個對話框的一個花哨版本:
我會翻轉你,看看誰支付晚餐。
好的,我打電話給領導。
老鼠,你贏了。三分之二最好?
為了更好地理解這一點,請考慮這個順序過程的簡化但現實的模型。假設您將從一定數量觀察的“試運行”開始,但願意繼續試驗更長時間以獲得小於的 p 值. 原假設是每個觀察(獨立地)來自標準正態分佈。另一種選擇是獨立於具有非零均值的單位方差正態分佈。檢驗統計量將是所有的平均值觀察,,除以它們的標準誤,. 對於雙邊測試,臨界值是和標準正態分佈的百分點,大約。
這是一個很好的測試——對於具有固定樣本大小的單個實驗. 它有一個拒絕原假設的機會,無論如何可能。
讓我們根據所有的總和將其代數轉換為等效測試價值觀,
因此,當數據“顯著”時
那是,
如果我們聰明,我們會減少損失並放棄一次變得非常大,數據還沒有進入臨界區。
這描述了隨機遊走 . 公式相當於在隨機遊走的情節周圍豎起一個彎曲的拋物線“柵欄”或屏障*:如果隨機遊走的任何*點撞到柵欄,結果是“顯著的” 。
這是隨機遊走的一個特性,如果我們等待足夠長的時間,很可能在某些時候結果看起來很重要。
這裡有 20 個獨立的模擬,上限為樣品。他們都開始測試樣本,此時我們檢查每個點是否位於根據公式繪製的障礙之外. 從統計測試第一次“顯著”開始,模擬數據被塗成紅色。
你可以看到發生了什麼:隨機遊走越來越多地上下擺動增加。障礙以大致相同的速度散開——但速度不夠快,總是無法避免隨機遊走。
在這些模擬中的 20% 中,發現了“顯著”差異——通常是在很早的時候——即使在每一個模擬中,原假設都是絕對正確的!運行更多這種類型的模擬表明真實的測試規模接近而不是預期的價值:也就是說,您願意繼續尋找“顯著性”的樣本量為給你一個即使 null 為真,也有可能拒絕 null。
請注意,在所有四個“重要”案例中,隨著測試的繼續,數據在某些點看起來不再重要。在現實生活中,過早停止的實驗者正在失去觀察這種“回歸”的機會。這種通過可選停止的選擇性會使結果產生偏差。
在誠實至善的順序測試中,障礙是線。它們比這裡顯示的彎曲屏障傳播得更快。
library(data.table) library(ggplot2) alpha <- 0.05 # Test size n.sim <- 20 # Number of simulated experiments n.buffer <- 5e3 # Maximum experiment length i.min <- 30 # Initial number of observations # # Generate data. # set.seed(17) X <- data.table( n = rep(0:n.buffer, n.sim), Iteration = rep(1:n.sim, each=n.buffer+1), X = rnorm((1+n.buffer)*n.sim) ) # # Perform the testing. # Z.alpha <- -qnorm(alpha/2) X[, Z := Z.alpha * sqrt(n)] X[, S := c(0, cumsum(X))[-(n.buffer+1)], by=Iteration] X[, Trigger := abs(S) >= Z & n >= i.min] X[, Significant := cumsum(Trigger) > 0, by=Iteration] # # Plot the results. # ggplot(X, aes(n, S, group=Iteration)) + geom_path(aes(n,Z)) + geom_path(aes(n,-Z)) + geom_point(aes(color=!Significant), size=1/2) + facet_wrap(~ Iteration)