Bootstrappingเป็นวิธี resampling เพื่อประเมินการกระจายตัวตัวอย่างของสัมประสิทธิ์การถดถอยของคุณและดังนั้นจึงคำนวณข้อผิดพลาดมาตรฐาน / ช่วงความเชื่อมั่นของสัมประสิทธิ์การถดถอยของคุณ โพสต์นี้มีคำอธิบายที่ดี สำหรับการอภิปรายเกี่ยวกับจำนวนการจำลองที่คุณต้องการดูโพสต์นี้
- bootstrap nonparametric resamples ซ้ำ ๆ และสุ่มดึงการสังเกตของคุณด้วยการแทนที่ (เช่นการสังเกตบางอย่างจะถูกดึงเพียงครั้งเดียวที่คนอื่นหลายครั้งและบางคนไม่เคยเลย) แล้วคำนวณการถดถอยโลจิสติกและเก็บค่าสัมประสิทธิ์ ซ้ำแล้วซ้ำอีกnครั้ง ดังนั้นคุณจะได้ค่าสัมประสิทธิ์การถดถอยต่างกัน 10,000 ค่า ค่าสัมประสิทธิ์ 10'000 เหล่านี้สามารถใช้ในการคำนวณความมั่นใจของพวกเขาได้ เนื่องจากมีการใช้ตัวสร้างตัวเลขสุ่มหลอกคุณสามารถตั้งค่าเมล็ดเป็นหมายเลขที่กำหนดเองเพื่อให้แน่ใจว่าคุณมีผลลัพธ์ที่เหมือนกันทุกครั้ง (ดูตัวอย่างด้านล่าง) เพื่อให้การประมาณการมีความเสถียรจริง ๆ ฉันขอแนะนำให้ทำซ้ำมากกว่า 1,000 ครั้งอาจเป็น 10,000 คุณสามารถเรียกใช้ bootstrap ได้หลายครั้งและดูว่าค่าประมาณเปลี่ยนไปมากแค่ไหนถ้าคุณทำซ้ำ 1,000 หรือ 10'000 ในภาษาอังกฤษธรรมดา: คุณควรทำซ้ำจนกว่าจะถึงจุดบรรจบ หากการประมาณการ bootstrap ของคุณแตกต่างกันไประหว่างการประมาณของคุณกับแบบจำลองเดี่ยวที่สังเกตได้นี่อาจบ่งบอกว่าแบบจำลองที่สังเกตได้นั้นไม่สะท้อนโครงสร้างตัวอย่างของคุณอย่างเหมาะสม
boot
R
ตัวอย่างเช่นวาง "อคติ" ซึ่งเป็นความแตกต่างระหว่างสัมประสิทธิ์การถดถอยของแบบจำลองเดี่ยวของคุณและค่าเฉลี่ยของตัวอย่างบูตสแตรป
- เมื่อดำเนินการ bootstrap คุณไม่ได้สนใจตัวอย่าง bootstrap เพียงอย่างเดียว แต่ในการกระจายสถิติ (เช่นสัมประสิทธิ์การถดถอย) เหนือตัวอย่าง bootstrap 10'000 ตัวอย่าง
- ฉันว่า 10'000 ดีกว่า 1,000 ด้วยคอมพิวเตอร์ที่ทันสมัยนี่ไม่น่าจะมีปัญหา ในตัวอย่างด้านล่างใช้เวลา PC ของฉันประมาณ 45 วินาทีเพื่อสุ่มตัวอย่าง 10'000 ตัวอย่าง สิ่งนี้แตกต่างกันไปตามขนาดตัวอย่างของคุณ ยิ่งขนาดตัวอย่างของคุณใหญ่ขึ้นเท่าใดจำนวนการวนซ้ำที่สูงขึ้นควรจะทำให้แน่ใจว่าการสังเกตทุกครั้งจะถูกนำมาพิจารณา
- คุณหมายถึง "ผลลัพธ์ที่แตกต่างกันในแต่ละครั้ง"? จำได้ว่าในทุกขั้นตอน bootstrap การสังเกตจะถูกวาดใหม่พร้อมการเปลี่ยน ดังนั้นคุณน่าจะมีสัมประสิทธิ์การถดถอยต่างกันเล็กน้อยเนื่องจากการสังเกตของคุณแตกต่างกัน แต่อย่างที่ฉันได้พูดไป: คุณไม่ได้สนใจผลการบูทสแตรปเดี่ยว เมื่อจำนวนการทำซ้ำของคุณสูงพอ bootstrap ควรให้ช่วงความมั่นใจและจุดประเมินใกล้เคียงกันทุกครั้ง
นี่คือตัวอย่างใน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 แสดงสัมประสิทธิ์การถดถอยดั้งเดิม ("ต้นฉบับ") และอคติของพวกเขาซึ่งเป็นความแตกต่างระหว่างสัมประสิทธิ์ดั้งเดิมกับคนที่ถูกบีบอัด นอกจากนี้ยังให้ข้อผิดพลาดมาตรฐาน โปรดทราบว่ามีขนาดใหญ่กว่าข้อผิดพลาดมาตรฐานดั้งเดิมเล็กน้อย
จากช่วงความเชื่อมั่นมักต้องการอคติที่ถูกต้อง ("bca") มันให้ช่วงความมั่นใจในระดับเดิม สำหรับช่วงความเชื่อมั่นสำหรับอัตราส่วนอัตราต่อรองเพียงแค่ชี้แจงขีด จำกัด ของความเชื่อมั่น