I have a question regarding bootstrap coverage.  I am trying to understand the benefits of using the bootstrap for small sample sets.  To do this I created a normal population and then picked 10 from the populations and applied both traditional statistical methods and the Bootstrap (bcanon, 5000 bootstrap samples) to calculate a 95% confidence interval of on the mean.  I saved the width of the confidence interval and how many misses, repeated this 1000 times, and output the summary on the CI width and the number of misses for each method (actual script below) . I had expected to see about 5% of the CI to miss the actual mean.  For the traditional method about 6% missed but for the Bootstrap it was over 11%.  
 
Traditional:
 
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.4531  1.1460  1.3550  1.3690  1.5900  2.4330 
[1] 0.062
 
 
Bootstrap:
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.3661  0.9455  1.1290  1.1380  1.3220  2.0160 
[1] 0.113

 
 
The bootstrap method consistently missed almost twice as many times as the traditional method.
 
What am I missing?  Is this the best that can be expected when working with a sample set of only 10 pieces?  
 
Although this experiment was done using a normal distribution,  my real datasets would be non-normal of an unknown distribution.
 
 
 
Thanks for any help,
 
 
Art Nuzzo
 
 
Motorola
 
 
 
 
***************************************************************************************
 
library(bootstrap)
 
CImiss = function(M, lower, upper) {lower > M || upper < M }
CIr = function(lower, upper) {upper - lower}
 
C = c(); B = c()     # CI Range
Ccov = 0;  Bcov = 0  # Number of Ci Misses
cnt = 1000;  # reps
 
x = rnorm(10000)  # create population
m = mean(x)
 
for (i in 1:cnt) {
s = sample(x,10,replace=F)  # sample population
 
tresults = t.test(s)
attach(tresults)
C[i] = CIr(conf.int[1],conf.int[2])
if (CImiss(m,conf.int[1],conf.int[2])) Ccov = Ccov + 1
detach(tresults)
 
bcaresults <- bcanon(s,5000,mean,alpha=c(.025,.975))  
attach(bcaresults)
B[i] = CIr(confpoints[1,2],confpoints[2,2])
if (CImiss(m,confpoints[1,2],confpoints[2,2])) Bcov = Bcov + 1
detach(bcaresults)
 
}
 
print(summary (C))
print(Ccov/cnt) 
 
print(summary (B))
print(Bcov/cnt)


	[[alternative HTML version deleted]]


