Rev 5793 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
\name{boot.ci}\alias{boot.ci}\title{Nonparametric Bootstrap Confidence Intervals}\description{This function generates 5 different types of equi-tailed two-sidednonparametric confidence intervals. These are the first order normalapproximation, the basic bootstrap interval, the studentized bootstrapinterval, the bootstrap percentile interval, and the adjusted bootstrappercentile (BCa) interval. All or a subset of these intervals can begenerated.}\usage{boot.ci(boot.out, conf = 0.95, type = "all",index = 1:min(2,length(boot.out$t0)), var.t0 = NULL,var.t = NULL, t0 = NULL, t = NULL, L = NULL,h = function(t) t, hdot = function(t) rep(1,length(t)),hinv = function(t) t, \dots)}\arguments{\item{boot.out}{An object of class \code{"boot"} containing the output of a bootstrapcalculation.}\item{conf}{A scalar or vector containing the confidence level(s) of the requiredinterval(s).}\item{type}{A vector of character strings representing the type of intervalsrequired. The value should be any subset of the values\code{c("norm","basic", "stud", "perc", "bca")} or simply \code{"all"}which will compute all five types of intervals.}\item{index}{This should be a vector of length 1 or 2. The first element of\code{index} indicates the position of the variable of interest in\code{boot.out$t0} and the relevant column in \code{boot.out$t}. Thesecond element indicates the position of the variance of the variable ofinterest. If both \code{var.t0} and \code{var.t} are supplied then thesecond element of \code{index} (if present) is ignored. The default isthat the variable of interest is in position 1 and its variance is inposition 2 (as long as there are 2 positions in \code{boot.out$t0}).}\item{var.t0}{If supplied, a value to be used as an estimate of the variance ofthe statistic for the normal approximation and studentized intervals.If it is not supplied and \code{length(index)} is 2 then \code{var.t0}defaults to \code{boot.out$t0[index[2]]} otherwise \code{var.t0} isundefined. For studentized intervals \code{var.t0} must be defined.For the normal approximation, if \code{var.t0} is undefined it defaultsto \code{var(t)}. If a transformation is supplied through the argument\code{h} then \code{var.t0} should be the variance of the untransformedstatistic.}\item{var.t}{This is a vector (of length \code{boot.out$R}) of variances of thebootstrap replicates of the variable of interest. It is used only forstudentized intervals. If it is not supplied and \code{length(index)}is 2 then \code{var.t} defaults to \code{boot.out$t[,index[2]]},otherwise its value is undefined which will cause an error forstudentized intervals. If a transformation is supplied through theargument \code{h} then \code{var.t} should be the variance of theuntransformed bootstrap statistics.}\item{t0}{The observed value of the statistic of interest. The default valueis \code{boot.out$t0[index[1]]}. Specification of \code{t0} and\code{t} allows the user to get intervals for a transformed statisticwhich may not be in the bootstrap output object. See the second examplebelow. An alternative way of achieving this would be to supply thefunctions \code{h}, \code{hdot}, and \code{hinv} below.}\item{t}{The bootstrap replicates of the statistic of interest. It must be avector of length \code{boot.out$R}. It is an error to supply one of\code{t0} or \code{t} but not the other. Also if studentizedintervals are required and \code{t0} and \code{t} are supplied thenso should be \code{var.t0} and \code{var.t}. The default value is\code{boot.out$t[,index]}.}\item{L}{The empirical influence values of the statistic of interest for theobserved data. These are used only for BCa intervals. If atransformation is supplied through the parameter \code{h} then\code{L} should be the influence values for \code{t}; the values for\code{h(t)} are derived from these and \code{hdot} within thefunction. If \code{L} is not supplied then the values are calculatedusing \code{empinf} if they are needed.}\item{h}{A function defining a transformation. The intervals are calculatedon the scale of \code{h(t)} and the inverse function \code{hinv}applied to the resulting intervals. It must be a function of onevariable only and for a vector argument, it must return a vector ofthe same length, i.e. \code{h(c(t1,t2,t3))} should return\code{c(h(t1),h(t2),h(t3))}. The default is the identity function.}\item{hdot}{A function of one argument returning the derivative of \code{h}. Itis a required argument if \code{h} is supplied and normal,studentized or BCa intervals are required. The function is used forapproximating the variances of \code{h(t0)} and \code{h(t)} usingthe delta method, and also for finding the empirical influencevalues for BCa intervals. Like \code{h} it should be able to take avector argument and return a vector of the same length. The defaultis the constant function 1.}\item{hinv}{A function, like \code{h}, which returns the inverse of \code{h}.It is used to transform the intervals calculated on the scale of\code{h(t)} back to the original scale. The default is the identityfunction. If \code{h} is supplied but \code{hinv} is not, then theintervals returned will be on the transformed scale.}\item{\dots}{Any extra arguments that \code{boot.out$statistic} isexpecting. These arguments are needed only if BCa intervals are requiredand \code{L} is not supplied since in that case \code{L} is calculatedthrough a call to \code{empinf} which calls \code{boot.out$statistic}.}}\details{The formulae on which the calculations are based can be found inChapter 5 of Davison and Hinkley (1997). Function \code{boot} must berun prior to running this function to create the object to be passed as\code{boot.out}.Variance estimates are required for studentized intervals. The varianceof the observed statistic is optional for normal theory intervals. Ifit is not supplied then the bootstrap estimate of variance is used. Thenormal intervals also use the bootstrap bias correction.Interpolation on the normal quantile scale is used when a non-integer orderstatistic is required. If the order statistic used is the smallest orlargest of the R values in boot.out a warning is generated and suchintervals should not be considered reliable.}\value{An object of type \code{"bootci"} which contains the intervals.It has components\item{R}{The number of bootstrap replicates on which the intervals were based.}\item{t0}{The observed value of the statistic on the same scale as the intervals.}\item{call}{The call to \code{boot.ci} which generated the object.It will also contain one or more of the following components dependingon the value of \code{type} used in the call to \code{bootci}.}\item{normal}{A matrix of intervals calculated using the normal approximation. It willhave 3 columns, the first being the level and the other two being the upperand lower endpoints of the intervals.}\item{basic}{The intervals calculated using the basic bootstrap method.}\item{student}{The intervals calculated using the studentized bootstrap method.}\item{percent}{The intervals calculated using the bootstrap percentile method.}\item{bca}{The intervals calculated using the adjusted bootstrap percentile(BCa) method.These latter four components will be matrices with 5 columns, thefirst column containing the level, the next two containing theindices of the order statistics used in the calculations and thefinal two the calculated endpoints themselves.}}\references{Davison, A.C. and Hinkley, D.V. (1997)\emph{Bootstrap Methods and Their Application}, Chapter 5.Cambridge University Press.DiCiccio, T.J. and Efron B. (1996) Bootstrap confidence intervals (withDiscussion). \emph{Statistical Science}, \bold{11}, 189--228.Efron, B. (1987) Better bootstrap confidence intervals (with Discussion).\emph{Journal of the American Statistical Association}, \bold{82}, 171--200.}\seealso{\code{\link{abc.ci}}, \code{\link{boot}},\code{\link{empinf}}, \code{\link{norm.ci}}}\examples{# confidence intervals for the city dataratio <- function(d, w) sum(d$x * w)/sum(d$u * w)city.boot <- boot(city, ratio, R = 999, stype = "w", sim = "ordinary")boot.ci(city.boot, conf = c(0.90, 0.95),type = c("norm", "basic", "perc", "bca"))# studentized confidence interval for the two sample# difference of means problem using the final two series# of the gravity data.diff.means <- function(d, f){ n <- nrow(d)gp1 <- 1:table(as.numeric(d$series))[1]m1 <- sum(d[gp1,1] * f[gp1])/sum(f[gp1])m2 <- sum(d[-gp1,1] * f[-gp1])/sum(f[-gp1])ss1 <- sum(d[gp1,1]^2 * f[gp1]) - (m1 * m1 * sum(f[gp1]))ss2 <- sum(d[-gp1,1]^2 * f[-gp1]) - (m2 * m2 * sum(f[-gp1]))c(m1 - m2, (ss1 + ss2)/(sum(f) - 2))}grav1 <- gravity[as.numeric(gravity[,2]) >= 7, ]grav1.boot <- boot(grav1, diff.means, R = 999, stype = "f",strata = grav1[ ,2])boot.ci(grav1.boot, type = c("stud", "norm"))# Nonparametric confidence intervals for mean failure time# of the air-conditioning data as in Example 5.4 of Davison# and Hinkley (1997)mean.fun <- function(d, i){ m <- mean(d$hours[i])n <- length(i)v <- (n-1)*var(d$hours[i])/n^2c(m, v)}air.boot <- boot(aircondit, mean.fun, R = 999)boot.ci(air.boot, type = c("norm", "basic", "perc", "stud"))# Now using the log transformation# There are two ways of doing this and they both give the# same intervals.# Method 1boot.ci(air.boot, type = c("norm", "basic", "perc", "stud"),h = log, hdot = function(x) 1/x)# Method 2vt0 <- air.boot$t0[2]/air.boot$t0[1]^2vt <- air.boot$t[, 2]/air.boot$t[ ,1]^2boot.ci(air.boot, type = c("norm", "basic", "perc", "stud"),t0 = log(air.boot$t0[1]), t = log(air.boot$t[,1]),var.t0 = vt0, var.t = vt)}\keyword{nonparametric}\keyword{htest}