[R] Selecting Bootstrap Statistics in the boot package

David Winsemius dwinsemius at comcast.net
Wed Apr 1 04:29:52 CEST 2009


Greetings Jorge;

There certainly did not seem to be something readily apparent with  
str(bmean), so the next logical place to look would be for a print  
method. If you look at print.boot with:

getAywhere(print.boot)

  ... you see that the first portion sets up an internal structure  
called "op" and the last of the function prints this with optional  
headers. If you strip out the sections with headers you get:

lim.boot <- function (x, digits = getOption("digits"), index =  
1L:ncol(boot.out$t),
     ...)
{
     boot.out <- x
     sim <- boot.out$sim
     cl <- boot.out$call
     t <- matrix(boot.out$t[, index], nrow = nrow(boot.out$t))
     allNA <- apply(t, 2L, function(t) all(is.na(t)))
     ind1 <- index[allNA]
     index <- index[!allNA]
     t <- matrix(t[, !allNA], nrow = nrow(t))
     rn <- paste("t", index, "*", sep = "")
     if (length(index) == 0L)
         op <- NULL
     else if (is.null(t0 <- boot.out$t0)) {
         if (is.null(boot.out$call$weights))
             op <- cbind(apply(t, 2L, mean, na.rm = TRUE), sqrt(apply(t,
                 2L, function(t.st) var(t.st[!is.na(t.st)]))))
         else {
             op <- NULL
             for (i in index) op <- rbind(op, imp.moments(boot.out,
                 index = i)$rat)
             op[, 2L] <- sqrt(op[, 2])
         }
         dimnames(op) <- list(rn, c("mean", "std. error"))
     }
     else {
         t0 <- boot.out$t0[index]
         if (is.null(boot.out$call$weights)) {
             op <- cbind(t0, apply(t, 2L, mean, na.rm = TRUE) -
                 t0, sqrt(apply(t, 2L, function(t.st) var(t.st[! 
is.na(t.st)]))))
             dimnames(op) <- list(rn, c("original", " bias  ",
                 " std. error"))
         }
         else {
             op <- NULL
             for (i in index) op <- rbind(op, imp.moments(boot.out,
                 index = i)$rat)
             op <- cbind(t0, op[, 1L] - t0, sqrt(op[, 2L]), apply(t,
                 2L, mean, na.rm = TRUE))
             dimnames(op) <- list(rn, c("original", " bias  ",
                 " std. error", " mean(t*)"))
         }
     }

     cat("\n\nBootstrap Statistics :\n")
     if (!is.null(op))
         print(op, digits = digits)
     if (length(ind1) > 0L)
         for (j in ind1) cat(paste("WARNING: All values of t",
             j, "* are NA\n", sep = ""))
     invisible(boot.out)
}
#--------------------------------
lim.boot(bmean)


Bootstrap Statistics :
      original      bias    std. error
t1* 0.0904059 0.004641537  0.09239923

Probably too much in that function, but it does what was requested.

-- 
David Winsemius


On Mar 31, 2009, at 5:49 PM, Jorge Ivan Velez wrote:
>
> Let's say I have the following:
>
> # Loading the boot package
> # install.packages(boot)
> library(boot)
>
> # Generating data
> set.seed(123)
> x <- rnorm(100)
>
> # Bootstrap for the sample mean
> bmean <- boot(x, function(x,d) mean(x[d]), R=1000)
> bmean
> #
> #ORDINARY NONPARAMETRIC BOOTSTRAP
> #
> #
> #Call:
> #boot(data = x, statistic = function(x, d) mean(x[d]), R = 1000)
> #
> #
> #Bootstrap Statistics :
> #     original      bias    std. error
> #t1* 0.0904059 0.004641537  0.09239923
>
>
> and I would like to get just this:
>
>
> Bootstrap Statistics :
>     original      bias    std. error
> t1* 0.0904059 0.004641537  0.09239923
>
>
> How can I do that?  I'm running R 2.8.1 Patched on XP SP2. Here is my
> sessionInfo():
>
>
David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list