tilt.boot {boot} | R Documentation |
Non-parametric Tilted Bootstrap
Description
This function will run an initial bootstrap with equal resampling probabilities (if required) and will use the output of the initial run to find resampling probabilities which put the value of the statistic at required values. It then runs an importance resampling bootstrap using the calculated probabilities as the resampling distribution.
Usage
tilt.boot(data, statistic, R, sim = "ordinary", stype = "i",
strata = rep(1, n), L = NULL, theta = NULL,
alpha = c(0.025, 0.975), tilt = TRUE, width = 0.5,
index = 1, ...)
Arguments
data |
The data as a vector, matrix or data frame. If it is a matrix or data frame then each row is considered as one (multivariate) observation. |
statistic |
A function which when applied to data returns a vector containing the
statistic(s) of interest. It must take at least two arguments. The first
argument will always be |
R |
The number of bootstrap replicates required. This will generally be
a vector, the first value stating how many uniform bootstrap
simulations are to be performed at the initial stage. The remaining
values of |
sim |
This is a character string indicating the type of bootstrap
simulation required. There are only two possible values that this
can take: |
stype |
A character string indicating the type of second argument expected
by |
strata |
An integer vector or factor representing the strata for multi-sample problems. |
L |
The empirical influence values for the statistic of interest. They
are used only for exponential tilting when |
theta |
The required parameter value(s) for the tilted distribution(s).
There should be one value of |
alpha |
The alpha level to which tilting is required. This parameter is
ignored if |
tilt |
A logical variable which if |
width |
This argument is used only if |
index |
The index of the statistic of interest in the output from
|
... |
Any additional arguments required by |
Value
An object of class "boot"
with the following components
t0 |
The observed value of the statistic on the original data. |
t |
The values of the bootstrap replicates of the statistic. There will
be |
R |
The input vector of the number of bootstrap replicates. |
data |
The original data as supplied. |
statistic |
The |
sim |
The simulation type used in the bootstrap(s), it can either be
|
stype |
The type of statistic supplied, it is the same as the input value
|
call |
A copy of the original call to |
strata |
The strata as supplied. |
weights |
The matrix of weights used. If |
theta |
The values of |
References
Booth, J.G., Hall, P. and Wood, A.T.A. (1993) Balanced importance resampling for the bootstrap. Annals of Statistics, 21, 286–298.
Davison, A.C. and Hinkley, D.V. (1997) Bootstrap Methods and Their Application. Cambridge University Press.
Hinkley, D.V. and Shi, S. (1989) Importance sampling and the nested bootstrap. Biometrika, 76, 435–446.
See Also
boot
, exp.tilt
, Imp.Estimates
, imp.weights
, smooth.f
Examples
# Note that these examples can take a while to run.
# Example 9.9 of Davison and Hinkley (1997).
grav1 <- gravity[as.numeric(gravity[,2]) >= 7, ]
grav.fun <- function(dat, w, orig) {
strata <- tapply(dat[, 2], as.numeric(dat[, 2]))
d <- dat[, 1]
ns <- tabulate(strata)
w <- w/tapply(w, strata, sum)[strata]
mns <- as.vector(tapply(d * w, strata, sum)) # drop names
mn2 <- tapply(d * d * w, strata, sum)
s2hat <- sum((mn2 - mns^2)/ns)
c(mns[2]-mns[1],s2hat,(mns[2]-mns[1]-orig)/sqrt(s2hat))
}
grav.z0 <- grav.fun(grav1, rep(1, 26), 0)
tilt.boot(grav1, grav.fun, R = c(249, 375, 375), stype = "w",
strata = grav1[,2], tilt = TRUE, index = 3, orig = grav.z0[1])
# Example 9.10 of Davison and Hinkley (1997) requires a balanced
# importance resampling bootstrap to be run. In this example we
# show how this might be run.
acme.fun <- function(data, i, bhat) {
d <- data[i,]
n <- nrow(d)
d.lm <- glm(d$acme~d$market)
beta.b <- coef(d.lm)[2]
d.diag <- boot::glm.diag(d.lm)
SSx <- (n-1)*var(d$market)
tmp <- (d$market-mean(d$market))*d.diag$res*d.diag$sd
sr <- sqrt(sum(tmp^2))/SSx
c(beta.b, sr, (beta.b-bhat)/sr)
}
acme.b <- acme.fun(acme, 1:nrow(acme), 0)
acme.boot1 <- tilt.boot(acme, acme.fun, R = c(499, 250, 250),
stype = "i", sim = "balanced", alpha = c(0.05, 0.95),
tilt = TRUE, index = 3, bhat = acme.b[1])