[R] Parsing results from boot

Martin Maechler maechler at stat.math.ethz.ch
Tue Jun 15 09:51:41 CEST 2004

>>>>> "Scott" == Scott Norton <nortonsm at verizon.net>
>>>>>     on Tue, 15 Jun 2004 00:09:03 -0400 writes:

    Scott> This probably has a super easy answer...but I claim
    Scott> newbie status! (I did search help lists but this
    Scott> question is hard to isolate keyword-wise)

    Scott> Basically, I'm trying to figure out how to parse the
    Scott> results from executing boot().  I'm mainly interested
    Scott> in assigning the standard error estimate to a scalar
    Scott> variable.

    Scott> For example:
    Scott> --------------------------------------------------------------
    >> b<-c(100,100,120,130,1000,1200,1100,1150,125)
    >> b.boot <- boot(b, function(b,i) median(b[i]), R=1000)
    >> b.boot


    Scott> Call:
    Scott> boot(data = b, statistic = function(b, i) median(b[i]), R = 1000)

    Scott> Bootstrap Statistics :
    Scott> original  bias    std. error
    Scott> t1*      130  354.75    450.9763
    Scott> ------------------------------------------------------------------
    Scott> I'm interested in the value for std.error (i.e. 450.9763).  

    Scott> Now executing the folling:
    Scott> ------------------------------------------------------------------
    >> summary(b.boot)
    Scott>           Length Class  Mode     
    Scott> t0           1   -none- numeric  
    Scott> t         1000   -none- numeric  
    Scott> R            1   -none- numeric  
    Scott> data         9   -none- numeric  
    Scott> seed       626   -none- numeric  
    Scott> statistic    1   -none- function 
    Scott> sim          1   -none- character
    Scott> call         4   -none- call     
    Scott> stype        1   -none- character
    Scott> strata       9   -none- numeric  
    Scott> weights      9   -none- numeric  
    Scott> -------------------------------------------------------------------

which shows that summary.default() is called because there's no
summary() method for 'boot' objects [comment see below].

    Scott> seems to imply that it's not actually assigned to an
    Scott> output variable...but it is shown when I just type "b.boot"
    Scott>  Where is the std.error being assigned?

Logically, it must be in the print() method for 'boot' objects..
    Scott>   and how to I access it?

     getS3method("print", class = "boot")
or   getAnywhere("print.class")

gives a humongous function listing, and somewhere in there

        t0 <- boot.out$t0[index]
        if (is.null(boot.out$call$weights)) {
            op <- cbind(t0, apply(t, 2, mean, na.rm = TRUE) - 
                t0, sqrt(apply(t, 2, function(t.st) var(t.st[!is.na(t.st)]))))
            dimnames(op) <- list(rn, c("original", " bias  ", 
                " std. error"))

(which is not sufficient to understand the code).
So you see that this is really computed inside the print method.

If boot was programmed as we do other typical ``classes''.
The print method would print much less,
the summary method would compute all the interested quantities
and return an object of class "summary.boot" and there would be
a simple  print.summary.boot() method.

I assume Brian Ripley (as maintainer of 'boot') would accept
(well-written) user contributions to implement these, instead of
the current print.boot() mess^H^H^H^Himplementation.

Martin Maechler

More information about the R-help mailing list