Apakah ada teknik bootstrap yang tersedia untuk menghitung interval prediksi untuk prediksi titik yang diperoleh misalnya dari regresi linier atau metode regresi lainnya (k-tetangga terdekat, pohon regresi dll)?
Entah bagaimana saya merasa bahwa cara yang kadang-kadang diusulkan untuk hanya menghapus prediksi titik (lihat misalnya interval prediksi untuk regresi kNN ) tidak memberikan interval prediksi tetapi interval kepercayaan.
Contoh dalam R
# STEP 1: GENERATE DATA
set.seed(34345)
n <- 100
x <- runif(n)
y <- 1 + 0.2*x + rnorm(n)
data <- data.frame(x, y)
# STEP 2: COMPUTE CLASSIC 95%-PREDICTION INTERVAL
fit <- lm(y ~ x)
plot(fit) # not shown but looks fine with respect to all relevant aspects
# Classic prediction interval based on standard error of forecast
predict(fit, list(x = 0.1), interval = "p")
# -0.6588168 3.093755
# Classic confidence interval based on standard error of estimation
predict(fit, list(x = 0.1), interval = "c")
# 0.893388 1.54155
# STEP 3: NOW BY BOOTSTRAP
B <- 1000
pred <- numeric(B)
for (i in 1:B) {
boot <- sample(n, n, replace = TRUE)
fit.b <- lm(y ~ x, data = data[boot,])
pred[i] <- predict(fit.b, list(x = 0.1))
}
quantile(pred, c(0.025, 0.975))
# 0.8699302 1.5399179
Jelas, interval bootstrap dasar 95% cocok dengan interval kepercayaan 95%, bukan interval prediksi 95%. Jadi pertanyaan saya: Bagaimana cara melakukannya dengan benar?
bootstrap
prediction-interval
Michael M.
sumber
sumber
Jawaban:
Metode yang dijelaskan di bawah ini adalah yang dijelaskan dalam Bagian 6.3.3 dari Davidson dan Hinckley (1997), Metode Bootstrap dan Penerapannya . Terima kasih untuk Glen_b dan komentarnya di sini . Mengingat ada beberapa pertanyaan tentang Cross yang divalidasi pada topik ini, saya pikir itu layak ditulis.
Model regresi linier adalah:
Kami memiliki data, , yang kita gunakan untuk memperkirakan β sebagai: β OLSi=1,2,…,N β
Sekarang, kami ingin memprediksi apa yang akan menjadi untuk titik data baru, mengingat bahwa kami tahu X untuk itu. Ini adalah masalah prediksi. Mari panggilan baru X (yang kita tahu) X N + 1 dan baru Y (yang kita ingin memprediksi), Y N + 1 . Prediksi yang biasa (jika kita mengasumsikan bahwa ϵ i adalah iid dan tidak berkorelasi dengan X ) adalah: Y p N + 1Y X X XN+1 Y YN+1 ϵi X
Kesalahan perkiraan yang dibuat oleh prediksi ini adalah:
Kita dapat menulis ulang persamaan ini seperti:
Sekarang, kita sudah dihitung. Jadi, jika kita ingin terikat Y N + 1 di interval, katakanlah, 90% dari waktu, semua yang perlu kita lakukan adalah perkiraan konsisten 5 t h dan 95 t h persentil / quantiles dari e p N + 1 , panggilan mereka e 5 , e 95 , dan interval prediksi akan [ Y p N + 1 + e 5 , Y p NYpN+1 YN+1 5th 95th epN+1 e5,e95 .[YpN+1+e5,YpN+1+e95]
Bagaimana cara memperkirakan kuantil / persentil dari ? Kita bisa menulis: e p N + 1epN+1
Strateginya adalah dengan mengambil sampel (dengan cara bootstrap) berkali-kali dari dan kemudian menghitung persentil dengan cara biasa. Jadi, mungkin kita akan sampel 10.000 kali dari e p N + 1 , dan kemudian perkirakan persentil 5 t jam dan 95 t jam sebagai 500 t jam dan 9 , 500 t jam anggota terkecil dari sampel.epN+1 epN+1 5th 95th 500th 9,500th
Untuk menggambar pada , kita dapat bootstrap kesalahan (kasus akan baik-baik saja, juga, tapi kita mengasumsikan kesalahan iid pula). Jadi, pada setiap replikasi bootstrap, Anda menggambar N kali dengan penggantian dari residual variance-disesuaikan (lihat butir berikutnya) untuk mendapatkan ε * i , kemudian membuat yang baru Y * i = X i β OLS + ε * i , kemudian jalankan OLS pada dataset baru, ( Y ∗ , X )XN+1(β−β^OLS) N ϵ∗i Y∗i=Xiβ^OLS+ϵ∗i (Y∗,X) untuk mendapatkan replikasi ini . Akhirnya, hasil imbang ini replikasi pada X N + 1 ( β - β OLS ) adalah X N + 1 ( β OLS - β * r )β∗r XN+1(β−β^OLS) XN+1(β^OLS−β∗r)
Mengingat kita mengasumsikan iid , cara alami untuk mengambil sampel dari bagian ϵ N + 1 dari persamaan adalah dengan menggunakan residu yang kita miliki dari regresi, { e ∗ 1 , e ∗ 2 , ... , e ∗ N } . Residual memiliki varian yang berbeda dan umumnya terlalu kecil, jadi kami ingin mengambil sampel dari { s 1 - ¯ s , s 2 - ¯ s , ... , s N - ¯ s }ϵ ϵN+1 {e∗1,e∗2,…,e∗N} {s1−s¯¯¯,s2−s¯¯¯,…,sN−s¯¯¯} , varians-residuals yang dikoreksi, di mana danhiadalah leverage dari pengamatani.si=e∗i/(1−hi)−−−−−−√ hi i
Dan, akhirnya, algoritma untuk membuat interval prediksi 90% untuk , mengingat bahwa X adalah X N + 1 adalah:YN+1 X XN+1
Here is
R
code:sumber