Bootstrapping adalah metode resampling untuk memperkirakan distribusi sampling dari koefisien regresi Anda dan karenanya menghitung kesalahan standar / interval kepercayaan dari koefisien regresi Anda. Posting ini memiliki penjelasan yang bagus. Untuk diskusi tentang berapa banyak replikasi yang Anda butuhkan, lihat posting ini.
- Bootstrap nonparametrik berulang kali secara berulang-ulang dan secara acak menarik pengamatan Anda dengan penggantian (yaitu beberapa pengamatan diambil hanya sekali, yang lain beberapa kali dan beberapa tidak pernah sama sekali), kemudian menghitung regresi logistik dan menyimpan koefisien. Ini diulanginwaktu. Jadi Anda akan berakhir dengan 10'000 koefisien regresi yang berbeda. Koefisien 10'000 ini kemudian dapat digunakan untuk menghitung kepercayaan mereka. Karena generator angka pseudo-acak digunakan, Anda bisa mengatur seed ke nomor arbitrer untuk memastikan bahwa Anda memiliki hasil yang persis sama setiap kali (lihat contoh di bawah). Untuk benar-benar memiliki perkiraan yang stabil, saya akan menyarankan lebih dari 1000 replikasi, mungkin 10'000. Anda dapat menjalankan bootstrap beberapa kali dan melihat apakah perkiraannya banyak berubah apakah Anda melakukan 1000 atau 10'000 replikasi. Dalam bahasa Inggris yang sederhana: Anda harus mengambil replikasi sampai Anda mencapai konvergensi. Jika perkiraan bootstrap Anda bervariasi antara perkiraan Anda dan model tunggal yang diamati, ini dapat menunjukkan bahwa model yang diamati tidak mencerminkan struktur sampel Anda dengan tepat.
boot
R
, misalnya, mengeluarkan "bias" yang merupakan perbedaan antara koefisien regresi model tunggal Anda dan rata-rata sampel bootstrap.
- Saat melakukan bootstrap, Anda tidak tertarik pada sampel bootstrap tunggal, tetapi dalam distribusi statistik (misalnya koefisien regresi) di atas, katakanlah, sampel bootstrap 10'000.
- Menurut saya 10'000 lebih baik daripada 1000. Dengan Komputer modern, ini seharusnya tidak menimbulkan masalah. Dalam contoh di bawah ini, PC saya membutuhkan waktu sekitar 45 detik untuk menggambar 10'000 sampel. Ini bervariasi dengan ukuran sampel Anda, tentu saja. Semakin besar ukuran sampel Anda, semakin tinggi jumlah iterasi untuk memastikan bahwa setiap pengamatan diperhitungkan.
- Apa maksud Anda "hasilnya bervariasi setiap kali"? Ingatlah bahwa dalam setiap langkah bootstrap, pengamatan baru diambil dengan penggantian. Karena itu, Anda cenderung berakhir dengan koefisien regresi yang sedikit berbeda karena pengamatan Anda berbeda. Tapi seperti yang saya katakan: Anda tidak benar-benar tertarik pada hasil sampel bootstrap tunggal. Ketika jumlah replikasi Anda cukup tinggi, bootstrap harus menghasilkan interval kepercayaan dan estimasi titik yang sangat mirip setiap saat.
Berikut adalah contoh di R
:
library(boot)
mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")
head(mydata)
mydata$rank <- factor(mydata$rank)
my.mod <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
summary(my.mod)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.989979 1.139951 -3.500 0.000465 ***
gre 0.002264 0.001094 2.070 0.038465 *
gpa 0.804038 0.331819 2.423 0.015388 *
rank2 -0.675443 0.316490 -2.134 0.032829 *
rank3 -1.340204 0.345306 -3.881 0.000104 ***
rank4 -1.551464 0.417832 -3.713 0.000205 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# Set up the non-parametric bootstrap
logit.bootstrap <- function(data, indices) {
d <- data[indices, ]
fit <- glm(admit ~ gre + gpa + rank, data = d, family = "binomial")
return(coef(fit))
}
set.seed(12345) # seed for the RNG to ensure that you get exactly the same results as here
logit.boot <- boot(data=mydata, statistic=logit.bootstrap, R=10000) # 10'000 samples
logit.boot
Bootstrap Statistics :
original bias std. error
t1* -3.989979073 -7.217244e-02 1.165573039
t2* 0.002264426 4.054579e-05 0.001146039
t3* 0.804037549 1.440693e-02 0.354361032
t4* -0.675442928 -8.845389e-03 0.329099277
t5* -1.340203916 -1.977054e-02 0.359502576
t6* -1.551463677 -4.720579e-02 0.444998099
# Calculate confidence intervals (Bias corrected ="bca") for each coefficient
boot.ci(logit.boot, type="bca", index=1) # intercept
95% (-6.292, -1.738 )
boot.ci(logit.boot, type="bca", index=2) # gre
95% ( 0.0000, 0.0045 )
boot.ci(logit.boot, type="bca", index=3) # gpa
95% ( 0.1017, 1.4932 )
boot.ci(logit.boot, type="bca", index=4) # rank2
95% (-1.3170, -0.0369 )
boot.ci(logit.boot, type="bca", index=5) # rank3
95% (-2.040, -0.629 )
boot.ci(logit.boot, type="bca", index=6) # rank4
95% (-2.425, -0.698 )
Bootstrap-ouput menampilkan koefisien regresi asli ("asli") dan biasnya, yang merupakan perbedaan antara koefisien asli dan yang bootstrap. Ini juga memberikan kesalahan standar. Perhatikan bahwa mereka sedikit lebih besar dari kesalahan standar aslinya.
Dari interval kepercayaan, bias-dikoreksi ("bca") biasanya lebih disukai. Ini memberikan interval kepercayaan pada skala asli. Untuk interval kepercayaan untuk rasio odds, cukup beri tahu batas kepercayaannya.