ใช่คุณสามารถประมาณโดยP ( ˉ X ∗ n ≤ x )แต่ไม่เหมาะ นี่เป็นรูปแบบของ bootstrap เปอร์เซ็นไทล์ อย่างไรก็ตาม bootstrap เปอร์เซ็นไทล์ทำงานได้ไม่ดีถ้าคุณกำลังหาข้อสรุปเกี่ยวกับค่าเฉลี่ยประชากรยกเว้นว่าคุณมีตัวอย่างขนาดใหญ่ (มันทำงานได้ดีกับปัญหาการอนุมานอื่น ๆ รวมถึงเมื่อขนาดของกลุ่มตัวอย่างมีขนาดเล็ก) ฉันใช้ข้อสรุปนี้จากสถิติสมัยใหม่ของวิลค็อกซ์สำหรับสังคมและพฤติกรรมศาสตร์ , CRC Press, 2012 หลักฐานทางทฤษฎีอยู่เหนือฉันฉันกลัว .P(X¯n≤x)P(X¯∗n≤x)
ความแตกต่างของวิธีการที่อยู่ตรงกลางไปที่ขั้นตอนถัดไปและปรับขนาดสถิติการบูตของคุณให้อยู่กึ่งกลางด้วยค่าเบี่ยงเบนมาตรฐานตัวอย่างใหม่และขนาดตัวอย่างการคำนวณแบบเดียวกับที่สถิติ ควอนไทล์จากการแจกแจงสถิติ t เหล่านี้สามารถใช้เพื่อสร้างช่วงความมั่นใจหรือทำการทดสอบสมมติฐาน นี่เป็นวิธี bootstrap-t และให้ผลลัพธ์ที่เหนือกว่าเมื่อทำการอนุมานเกี่ยวกับค่าเฉลี่ย
s∗
T∗=X¯∗n−X¯s∗/n√
T∗μ
X¯−T∗0.975sn√,X¯−T∗0.025sn√
พิจารณาผลการจำลองด้านล่างแสดงให้เห็นว่าด้วยการแจกแจงแบบผสมที่เบ้อย่างไม่ดีช่วงความเชื่อมั่นจากวิธีนี้จะมีมูลค่าที่แท้จริงบ่อยกว่าวิธีการบูตสแตรปเปอร์เซ็นไทล์หรือการแทรกซึมแบบดั้งเดิมที่สถิติ
compare.boots <- function(samp, reps = 599){
# "samp" is the actual original observed sample
# "s" is a re-sample for bootstrap purposes
n <- length(samp)
boot.t <- numeric(reps)
boot.p <- numeric(reps)
for(i in 1:reps){
s <- sample(samp, replace=TRUE)
boot.t[i] <- (mean(s)-mean(samp)) / (sd(s)/sqrt(n))
boot.p[i] <- mean(s)
}
conf.t <- mean(samp)-quantile(boot.t, probs=c(0.975,0.025))*sd(samp)/sqrt(n)
conf.p <- quantile(boot.p, probs=c(0.025, 0.975))
return(rbind(conf.t, conf.p, "Trad T test"=t.test(samp)$conf.int))
}
# Tests below will be for case where sample size is 15
n <- 15
# Create a population that is normally distributed
set.seed(123)
pop <- rnorm(1000,10,1)
my.sample <- sample(pop,n)
# All three methods have similar results when normally distributed
compare.boots(my.sample)
สิ่งนี้ให้สิ่งต่อไปนี้ (conf.t คือเมธอด bootstrap t; conf.p เป็นเมธอด bootstrap แบบเปอร์เซ็นต์ไทล์)
97.5% 2.5%
conf.t 9.648824 10.98006
conf.p 9.808311 10.95964
Trad T test 9.681865 11.01644
ด้วยตัวอย่างเดียวจากการแจกแจงแบบเบ้:
# create a population that is a mixture of two normal and one gamma distribution
set.seed(123)
pop <- c(rnorm(1000,10,2),rgamma(3000,3,1)*4, rnorm(200,45,7))
my.sample <- sample(pop,n)
mean(pop)
compare.boots(my.sample)
สิ่งนี้ให้สิ่งต่อไปนี้ โปรดทราบว่า "conf.t" - เวอร์ชัน bootstrap t - ให้ช่วงความมั่นใจที่กว้างกว่าอีกสองรายการ โดยพื้นฐานแล้วจะเป็นการดีกว่าที่จะตอบสนองต่อการกระจายตัวที่ผิดปกติของประชากร
> mean(pop)
[1] 13.02341
> compare.boots(my.sample)
97.5% 2.5%
conf.t 10.432285 29.54331
conf.p 9.813542 19.67761
Trad T test 8.312949 20.24093
ในที่สุดนี่คือการจำลองหนึ่งพันครั้งเพื่อดูว่าเวอร์ชันใดให้ช่วงความมั่นใจที่ถูกต้องบ่อยที่สุด:
# simulation study
set.seed(123)
sims <- 1000
results <- matrix(FALSE, sims,3)
colnames(results) <- c("Bootstrap T", "Bootstrap percentile", "Trad T test")
for(i in 1:sims){
pop <- c(rnorm(1000,10,2),rgamma(3000,3,1)*4, rnorm(200,45,7))
my.sample <- sample(pop,n)
mu <- mean(pop)
x <- compare.boots(my.sample)
for(j in 1:3){
results[i,j] <- x[j,1] < mu & x[j,2] > mu
}
}
apply(results,2,sum)
สิ่งนี้จะให้ผลลัพธ์ด้านล่าง - ตัวเลขคือจำนวนครั้งที่ 1,000 จากช่วงความเชื่อมั่นที่มีค่าจริงของประชากรที่จำลอง ขอให้สังเกตว่าอัตราความสำเร็จที่แท้จริงของทุกรุ่นนั้นน้อยกว่า 95%
Bootstrap T Bootstrap percentile Trad T test
901 854 890