ฉันต้องการทำการสาธิตคลาสที่ฉันเปรียบเทียบช่วงเวลา t กับช่วง bootstrap และคำนวณความน่าจะเป็นที่ครอบคลุมของทั้งคู่ ฉันต้องการข้อมูลที่มาจากการแจกแจงแบบเบ้ดังนั้นฉันเลือกที่จะสร้างข้อมูลเป็นexp(rnorm(10, 0, 2)) + 1
ตัวอย่างขนาด 10 จาก lognormal ที่เปลี่ยนไป ฉันเขียนสคริปต์เพื่อวาดตัวอย่าง 1,000 รายการและสำหรับแต่ละตัวอย่างให้คำนวณทั้งช่วงเวลา 95% t และช่วงเวลาบูตเปอร์เซ็นต์ไทล์ 95% จากการจำลองซ้ำ 1,000 ครั้ง
เมื่อฉันเรียกใช้สคริปต์วิธีการทั้งสองให้ช่วงเวลาที่คล้ายกันมากและทั้งสองมีโอกาสครอบคลุม 50-60% ฉันประหลาดใจเพราะฉันคิดว่าช่วงบูทสแตรปจะดีกว่า
คำถามของฉันคือฉันมี
- ทำผิดพลาดในรหัส?
- ทำผิดพลาดในการคำนวณช่วงเวลาหรือไม่?
- ทำผิดพลาดโดยคาดหวังว่าช่วงเวลา bootstrap จะมีคุณสมบัติครอบคลุมที่ดีขึ้นหรือไม่
นอกจากนี้ยังมีวิธีการสร้าง CI ที่น่าเชื่อถือมากขึ้นในสถานการณ์นี้หรือไม่?
tCI.total <- 0
bootCI.total <- 0
m <- 10 # sample size
true.mean <- exp(2) + 1
for (i in 1:1000){
samp <- exp(rnorm(m,0,2)) + 1
tCI <- mean(samp) + c(1,-1)*qt(0.025,df=9)*sd(samp)/sqrt(10)
boot.means <- rep(0,1000)
for (j in 1:1000) boot.means[j] <- mean(sample(samp,m,replace=T))
bootCI <- sort(boot.means)[c(0.025*length(boot.means), 0.975*length(boot.means))]
if (true.mean > min(tCI) & true.mean < max(tCI)) tCI.total <- tCI.total + 1
if (true.mean > min(bootCI) & true.mean < max(bootCI)) bootCI.total <- bootCI.total + 1
}
tCI.total/1000 # estimate of t interval coverage probability
bootCI.total/1000 # estimate of bootstrap interval coverage probability