Bootstrap
樣本外誤差的自舉估計
我知道如何使用引導重採樣來查找樣本內錯誤或 R2 的置信區間:
# Bootstrap 95% CI for R-Squared library(boot) # function to obtain R-Squared from the data rsq <- function(formula, data, indices) { d <- data[indices,] # allows boot to select sample fit <- lm(formula, data=d) return(summary(fit)$r.square) } # bootstrapping with 1000 replications results <- boot(data=mtcars, statistic=rsq, R=1000, formula=mpg~wt+disp) # view results results plot(results) # get 95% confidence interval boot.ci(results, type="bca")
但是如果我想估計樣本外錯誤(有點類似於交叉驗證)怎麼辦?我可以為每個自舉樣本擬合一個模型,然後使用該模型來預測其他自舉樣本,然後對這些預測的 RMSE 進行平均嗎?
如果我理解這些問題,簡短的回答是“不”。樣本外錯誤不在您的樣本中,並且您的樣本無法進行自舉或其他分析工作來計算它。
回答您關於引導程序是否可用於檢查具有訓練集之外數據的模型的評論:兩種可能的解釋。
用傳統方法在你的訓練集上擬合一個模型,然後在訓練集上使用引導來檢查你的估計器的分佈等事情,這會很好,而且絕對是標準的。然後使用來自該訓練集的最終模型來針對測試集進行測試。
可以執行一個類似於引導程序的過程,其中涉及一個循環:
- 選擇整個樣本的一個子集作為你的訓練集
- 將模型擬合到該數據的訓練集
- 將該模型與剩餘數據的測試集進行比較,並生成某種測試統計量,說明訓練集中的模型與測試集的對比情況。
然後考慮多次這樣做的結果。當然,它會讓您深入了解訓練/測試過程的穩健性。這會讓您放心,您獲得的特定模型不僅僅是由於您的一次拆分中最終出現在測試集中的可能性。
然而,很難確切地說出為什麼,但在我看來,測試/培訓部門的想法與引導程序之間存在哲學衝突。也許如果我不認為它是一個引導程序,而只是對訓練/測試過程的穩健性測試,那就沒問題了……