Tôi muốn thực hiện một cuộc biểu tình trong lớp, trong đó tôi so sánh một khoảng thời gian t với khoảng thời gian bootstrap và tính xác suất bao phủ của cả hai. Tôi muốn dữ liệu đến từ một phân phối sai lệch vì vậy tôi đã chọn tạo dữ liệu như exp(rnorm(10, 0, 2)) + 1
một mẫu có kích thước 10 từ một logic bất thường thay đổi. Tôi đã viết một kịch bản để vẽ 1000 mẫu và, cho mỗi mẫu, tính toán cả khoảng thời gian 95% t và khoảng cách phần trăm bootstrap 95% dựa trên 1000 lần lặp.
Khi tôi chạy tập lệnh, cả hai phương thức đều cho các khoảng rất giống nhau và cả hai đều có xác suất bao phủ là 50-60%. Tôi đã rất ngạc nhiên vì tôi nghĩ khoảng thời gian bootstrap sẽ tốt hơn.
Câu hỏi của tôi là, tôi có
- mắc lỗi trong mã?
- mắc lỗi trong tính toán các khoảng?
- đã phạm sai lầm bằng cách hy vọng khoảng thời gian bootstrap có thuộc tính bảo hiểm tốt hơn?
Ngoài ra, có cách nào để xây dựng một CI đáng tin cậy hơn trong tình huống này không?
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