Skip to content

bootstrap: boot package

6 messages · Rob Gould (local), Brian Ripley, Frank E Harrell Jr +2 more

#
I'm teaching a class and using R for the first time.  We're talking 
about the bootstrap, and I've been trying to get R to replicate some 
simple bootstrap programs with no success.  I'd like to be able to use 
the boot.ci function to produce confidence intervals (non-parametric) 
for some simple statistics, and this requires first creating a "boot" 
object.  The boot object, in turn, requires a statistic that takes two 
inputs: the data and the second a vector of indices, frequencies, or 
weights which "define" the bootstrap.  My question, I guess, is which 
option do I choose to "define" an ordinary sample-with-replacement?  And 
where does this vector come from?  Suppose I want to bootstrap a 
confidence interval for the mean.  Do i have to write my own "mean" 
function to provide for this defining vector of indices?

Just to clarify, I want to use the boot command to replicate this:
bstraps <- c()
for (i in 1:R){
bstraps <- c(mean(sample(data,replace=T,n=length(data))), bstraps)}

thanks,
Rob

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
#
This doesn't answer Rob's general question but here is some code that is very fast for running the nonparametric bootstrap percentile method for a mean, in S-Plus.  If anyone knows the corresponding R internal function to sample.index (special case where "prob" argument not needed) I would appreciate knowing it.  Thanks -Frank Harrell

smean.cl.boot <- function(x, conf.int=.95, B=1000, na.rm=TRUE) {
  if(na.rm) x <- x[!is.na(x)]
  n <- length(x)
  xbar <- mean(x)
  if(n < 2) return(Mean=xbar, Lower=NA, Upper=NA)
  z <- unlist(lapply(1:B, function(i,x,N)
        sum(x[.Internal(sample.index(N, N, TRUE),
 			 "S_sample",TRUE,0)]), x=x, N=n)) / n
  quant <- quantile(z, c((1-conf.int)/2,(1+conf.int)/2))
  names(quant) <- NULL
  c(Mean=xbar, Lower=quant[1], Upper=quant[2])
}


On Fri, 25 Jan 2002 10:48:13 -0800
Rob Gould (local) <rgould at stat.ucla.edu> wrote:

            

  
    
#
On Fri, 25 Jan 2002, Rob Gould wrote:

            
Following the example in Venables & Ripley for the median:

data.boot <- boot(data, function(x, i) mean(x[i]), R=R)
boot.ci(data.boot, more options)

Pretty simple, I think, Frank?
#
Brian - I wasn't talking about simplicity, but speed, for this special case.  -Frank

On Fri, 25 Jan 2002 19:31:46 +0000 (GMT)
Prof Brian D Ripley <ripley at stats.ox.ac.uk> wrote:

            

  
    
#
Hi Rob, here's an example I worked out:
ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = data, statistic = f, R = 1000)


Bootstrap Statistics :
       original      bias    std. error
t1* -0.07986221 0.008121274  0.09311031
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 1000 bootstrap replicates

CALL : 
boot.ci(boot.out = b, type = "perc")

Intervals : 
Level     Percentile     
95%   (-0.2264,  0.1228 )  
Calculations and Intervals on Original Scale


-roger
_______________________________
UCLA Department of Statistics
rpeng at stat.ucla.edu
http://www.stat.ucla.edu/~rpeng
On Fri, 25 Jan 2002, Rob Gould wrote:

            
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
2 days later
#
Rob Gould <rgould at stat.ucla.edu> writes:
The bootstrap is surprisingly easy to do in R. I have a brief and simple
section in my R notes (www.myatt.demon.co.uk) that I use as a teaching
example. Selvin:

        Selvin, S, ?Modern Applied Biostatistical Methods Using S-Plus?,
        Oxford University Press, New York, 1998

Covers this quite well.

Mark


--
Mark Myatt


-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._