Skip to content
Prev 246366 / 398502 Next

Resampling to find Confidence intervals

Axolotl9250 wrote:
Below a simplified and self-consistent version of your code, and some
changes

Dieter

# resample
d = data.frame(x=rnorm(10))
d$y = d$x*3+rnorm(10,0.01)

# if you do this, you only get ONE bootstrap sample
d1 = d[sample(1:nrow(d),10,TRUE),]
d1.coef = coef(lm(y~x,data=d1))
d1.coef
# No error below, because you compute the sd of (Intercept) and slope
# but result is wrong!
sd(d1.coef)

# We have to do this over and over
# Check ?replicate for a more R-ish approach....
nsamples = 1000
allboot = NULL
for (i in 1:1000) {
  d1 = d[sample(1:nrow(d),10,TRUE),]
  d1.coef = coef(lm(y~x,data=d1))
  allboot = rbind(allboot,d1.coef) # Not very efficient, preallocate!
}
head(allboot) # display first of nsamples lines
apply(allboot,2,mean) # Compute mean
apply(allboot,2,sd) # compute sd
# After you are sure you understood the above, you might try package boot.