plot.boot {boot} | R Documentation

## Plots of the Output of a Bootstrap Simulation

### Description

This takes a bootstrap object and produces plots for the bootstrap replicates of the variable of interest.

### Usage

    ## S3 method for class 'boot':
    plot(x, index=1, t0=NULL, t=NULL, jack=FALSE, qdist="norm",
         nclass=NULL, df, ...)

### Arguments

`x` | An object of class `"boot"` returned from one of the bootstrap generation functions.
`index` | The index of the variable of interest within the output of `boot.out`. This is ignored if `t` and `t0` are supplied.
`t0` | The original value of the statistic. This defaults to `boot.out$t0[index]` unless `t` is supplied when it defaults to `NULL`. In that case no vertical line is drawn on the histogram.
`t` | The bootstrap replicates of the statistic. Usually this will take on its default value of `boot.out$t[,index]`, however it may be useful sometimes to supply a different set of values which are a function of `boot.out$t`.
`jack` | A logical value indicating whether a jackknife-after-bootstrap plot is required. The default is not to produce such a plot.
`qdist` | The distribution against which the Q-Q plot should be drawn. At present `"norm"` (normal distribution - the default) and `"chisq"` (chi-squared distribution) are the only possible values.
`nclass` | An integer giving the number of classes to be used in the bootstrap histogram. The default is the integer between 10 and 100 closest to `ceiling(length(t)/25)`.
`df` | If `qdist` is `"chisq"` then this is the degrees of freedom for the chi-squared distribution to be used. It is a required argument in that case.
`...` | When `jack` is `TRUE` additional parameters to `jack.after.boot` can be supplied. See the help file for `jack.after.boot` for details of the possible parameters.

### Details

This function will generally produce two side-by-side plots. The left plot will be a histogram of the bootstrap replicates. Usually the breaks of the histogram will be chosen so that `t0` is at a breakpoint and all intervals are of equal length. A vertical dotted line indicates the position of `t0`. This cannot be done if `t` is supplied but `t0` is not and so, in that case, the breakpoints are computed by `hist` using the `nclass` argument and no vertical line is drawn.

The second plot is a Q-Q plot of the bootstrap replicates. The order statistics of the replicates can be plotted against normal or chi-squared quantiles. In either case the expected line is also plotted. For the normal, this will have intercept `mean(t)` and slope `sqrt(var(t))` while for the chi-squared it has intercept 0 and slope 1.

If `jack` is `TRUE` a third plot is produced beneath these two. That plot is the jackknife-after-bootstrap plot. This plot may only be requested when nonparametric simulation has been used. See `jack.after.boot` for further details of this plot.

### Value

`boot.out` is returned invisibly.

### Side Effects

All screens are closed and cleared and a number of plots are produced on the current graphics device. Screens are closed but not cleared at termination of this function.

### See Also

`boot`, `jack.after.boot`, `print.boot`

### Examples

    # We fit an exponential model to the air-conditioning data and use
    # that for a parametric bootstrap.  Then we look at plots of the
    # resampled means.
    air.rg <- function(data, mle)
         rexp(length(data), 1/mle)

    data(aircondit)
    air.boot <- boot(aircondit$hours, mean, R=999, sim="parametric",
                     ran.gen=air.rg, mle=mean(aircondit$hours))
    plot(air.boot)

    # In the difference of means example for the last two series of the
    # gravity data
    data(gravity)
    grav1 <- gravity[as.numeric(gravity[,2])>=7,]
    grav.fun <- function(dat, w)
    {    strata <- tapply(dat[, 2], as.numeric(dat[, 2]))
         d <- dat[, 1]
         ns <- tabulate(strata)
         w <- w/tapply(w, strata, sum)[strata]
         mns <- tapply(d * w, strata, sum)
         mn2 <- tapply(d * d * w, strata, sum)
         s2hat <- sum((mn2 - mns^2)/ns)
         c(mns[2]-mns[1],s2hat)
    }

    grav.boot <- boot(grav1, grav.fun, R=499, stype="w", strata=grav1[,2])
    plot(grav.boot)
    # now suppose we want to look at the studentized differences.
    grav.z <- (grav.boot$t[,1]-grav.boot$t0[1])/sqrt(grav.boot$t[,2])
    plot(grav.boot,t=grav.z,t0=0)

    # In this example we look at the one of the partial correlations for the
    # head dimensions in the dataset frets.
    pcorr <- function( x )
    {
    #  Function to find the correlations and partial correlations between
    #  the four measurements.
         v <- cor(x);
         v.d <- diag(var(x));
         iv <- solve(v);
         iv.d <- sqrt(diag(iv));
         iv <- - diag(1/iv.d) %*% iv %*% diag(1/iv.d);
         q <- NULL;
         n <- nrow(v);
         for (i in 1:(n-1))
              q <- rbind( q, c(v[i,1:i],iv[i,(i+1):n]) );
         q <- rbind( q, v[n,] );
         diag(q) <- round(diag(q));
         q
    }

    frets.fun <- function( data, i )
    {    d <- data[i,];
         v <- pcorr( d );
         c(v[1,],v[2,],v[3,],v[4,])
    }
    data(frets)
    frets.boot <- boot(log(as.matrix(frets)), frets.fun, R=999)
    plot(frets.boot, index=7, jack=TRUE, stinf=FALSE, useJ=FALSE)

[Package Contents]