Bootstrap tilting probabilities

DESCRIPTION:

Estimate the probability that the bootstrap statistic value would exceed the observed value, if bootstrap sampling were to take place from a tilted distribution.

USAGE:

tiltBootProbs(tau, boot.obj, tilt = "exponential", 
              subset.statistic = 1, 
              observed = *, replicates = *, L = *, 
              indices = *, group = *, treatment = *, 
              weights = *, 
              normalizeWeights = T, 
              tol = 1e-06, maxiter = 50, 
              frame.eval = sys.parent(1)) 
* means that by default the argument is extracted from boot.obj, 
  and subscripted using subset.statistic if appropriate. 

REQUIRED ARGUMENTS:

tau
vector of tilting parameters
boot.obj
bootstrap object (created by or ).

OPTIONAL ARGUMENTS:

tilt
one of "exponential" or "ml", for exponential or maximum likelihood tilting.
subset.statistic
subscript expression; if the statistic that was bootstrapped has length greater than 1, use this to request intervals for just one element (parameters) of the statistic.
observed
observed statistic value.
replicates
values of the statistic from bootstrap samples.
L
vector of values to be used for tilting. Normally these are empirical influence values or other values that could be used in calculating a linear approximation for the statistic.
indices
matrix of indices that determine bootstrap samples.
group
NULL, or vector the same length as L, indicating stratified sampling or multiple-group problems; unique values of this vector determine groups.
treatment
vector indicating a two-sample application created by , by default extracted from boot.obj.
weights
NULL, or vector the same length as replicates, typically resulting from importance sampling.
normalizeWeights
logical; if TRUE weights are normalized to mean 1 before calling C code. If FALSE they are not normalized; this yields more accurate results when a good importance sampling design was used.
tol
Find lambda values such that tilting weights sum within each group to within tol of 1. Used only for multiple-group "ml" tilting.
maxiter
maximum number of iterations allowed for finding values of tau which bracket the solution for each q (after the root is bracketed additional iterations may be performed).
frame.eval
frame where the data and other objects used when creating boot.obj can be found. You need to specify this if objects can't be found by their original names, or have changed; see . This is used in calculating default values of L and indices.

VALUE:

list, with components
tau
the input tau.
p
the estimated probabilities.

DETAILS:

Exponential tilting places probability proportional to
weights * exp(tau * (L-Lbar))
on the values in L, where Lbar is the mean of L. Maximum likelihood tilting places probabilities proportional to
weights * 1/(1 - tau * (L-Lbar))
These weights are empirical maximum likelihood weights, in that they maximize the product of probabilities subject to the weighted mean matching a specified value.

For tau<0, the answer is an estimate of P(bootstrap replicate >= observed). For tau>0, the answer is an estimate of 1 - P(bootstrap replicate <= observed). See examples below.

Bootstrap tilting interval correspond to finding the values of tau that make p equal to specified confidence levels, using that tau to calculated tilting weights for the original observations, and recalculating the observed value using the original data but these weights. This process is performed by .

REFERENCES:

Hesterberg, T.C. (2003), "Tilting Calculations for Resampling Inferences and Approximations", Research Report No. 103, Research Department, Insightful Corp., 1700 Westlake Ave. N., Suite 500, Seattle, WA 98109.

SEE ALSO:

, .

EXAMPLES:

bfit <- bootstrap(1:30, mean, save.indices=T) 
tiltBootProbs(c(.01, .02, .03), bfit) 
 
# Information on what calculations are performed 
x <- 1:30 
boot <- bootstrap(1:30, mean, seed=0) 
tiltBootProbs(c(-.01, .01), boot) # 0.3127023 0.6711574 
tau <-  -0.01   # Case 1, tau < 0 
# Now do the calculations by hand, for comparison 
w <- tiltWeights(tau, resampGetL(boot))  # This is the general way 
w <- exp(tau * x); w <- w/sum(w)   # This gives the same answer here 
mean((boot$replicates >= boot$observed) * 
     indexProducts(30*w, resampGetIndices(boot))) 
# That gives 0.3127023, which matches tiltBootProbs 
tau <-  0.01   # Case 2: tau > 0 
w <- tiltWeights(tau, resampGetL(boot)) 
1 - mean((boot$replicates <= boot$observed) * 
         indexProducts(30*w, resampGetIndices(boot))) 
# That gives 0.6711574, which matches tiltBootProbs