1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
\name{exp.tilt}
\alias{exp.tilt}
\title{
Exponential Tilting
}
\description{
This function calculates exponentially tilted multinomial distributions
such that the resampling distributions of the linear approximation to a
statistic have the required means.
}
\usage{
exp.tilt(L, theta = NULL, t0 = 0, lambda = NULL,
strata = rep(1, length(L)))
}
\arguments{
\item{L}{
The empirical influence values for the statistic of interest based on the
observed data. The length of \code{L} should be the same as the size of the
original data set. Typically \code{L} will be calculated by a call to \code{empinf}.
}
\item{theta}{
The value at which the tilted distribution is to be centred. This is not
required if \code{lambda} is supplied but is needed otherwise.
}
\item{t0}{
The current value of the statistic. The default is that the statistic equals 0.
}
\item{lambda}{
The Lagrange multiplier(s). For each value of \code{lambda} a multinomial
distribution
is found with probabilities proportional to \code{exp(lambda * L)}. In general
\code{lambda} is not known and so \code{theta} would be supplied, and the corresponding
value of \code{lambda} found. If both \code{lambda} and \code{theta} are supplied then
\code{lambda} is ignored and the multipliers for tilting to \code{theta} are found.
}
\item{strata}{
A vector or factor of the same length as \code{L} giving the strata for the
observed data and the empirical influence values \code{L}.
}}
\value{
A list with the following components :
\item{p}{
The tilted probabilities. There will be \code{m} distributions where \code{m} is the
length of \code{theta} (or \code{lambda} if supplied). If \code{m} is 1 then \code{p} is a vector
of \code{length(L)} probabilities. If \code{m} is greater than 1 then \code{p} is a matrix
with \code{m} rows, each of which contain \code{length(L)} probabilities. In this case
the vector \code{p[i,]} is the distribution tilted to \code{theta[i]}. \code{p} is
in the form required by the argument \code{weights} of the function \code{boot} for
importance resampling.
}
\item{lambda}{
The Lagrange multiplier used in the equation to determine the tilted
probabilities. \code{lambda} is a vector of the same length as \code{theta}.
}
\item{theta}{
The values of \code{theta} to which the distributions have been tilted. In general
this will be the input value of \code{theta} but if \code{lambda} was supplied then
this is the vector of the corresponding \code{theta} values.
}}
\details{
Exponential tilting involves finding a set of weights for a data set to
ensure that the bootstrap distribution of the linear approximation to a
statistic of interest has mean \code{theta}. The weights chosen to achieve this
are given by \code{p[j]} proportional to
\code{exp(lambda*L[j]/n)}, where \code{n} is the number of data points.
\code{lambda} is then
chosen to make the mean of the bootstrap
distribution, of the linear approximation to the statistic of interest, equal
to the required value \code{theta}. Thus \code{lambda} is defined as the
solution of a nonlinear equation.
The equation is solved by minimizing the Euclidean distance between
the left and right hand sides of the equation using the function \code{nlmin}.
If this minimum is not equal to zero then the method fails.
Typically exponential tilting is used to find suitable weights for importance
resampling. If a small tail probability or quantile of the distribution of
the statistic of interest is required then a more efficient simulation is to
centre the resampling distribution close to the point of interest and
then use the functions \code{imp.prob} or \code{imp.quantile} to estimate the required
quantity.
Another method of achieving a similar shifting of the distribution is through
the use of \code{smooth.f}. The function \code{tilt.boot} uses \code{exp.tilt} or \code{smooth.f}
to find the weights for a tilted bootstrap.
}
\references{
Davison, A. C. and Hinkley, D. V. (1997)
\emph{Bootstrap Methods and Their Application}. Cambridge University Press.
Efron, B. (1981) Nonparametric standard errors and confidence intervals
(with Discussion). \emph{Canadian Journal of Statistics}, \bold{9}, 139--172.
}
\seealso{
\code{\link{empinf}}, \code{\link{imp.prob}}, \code{\link{imp.quantile}}, \code{\link{optim}}, \code{\link{smooth.f}}, \code{\link{tilt.boot}}
}
\examples{
# Example 9.8 of Davison and Hinkley (1997) requires tilting the resampling
# distribution of the studentized statistic to be centred at the observed
# value of the test statistic 1.84. This can be achieved as follows.
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)
grav.L <- empinf(data = grav1, statistic = grav.fun, stype = "w",
strata = grav1[,2], index = 3, orig = grav.z0[1])
grav.tilt <- exp.tilt(grav.L, grav.z0[3], strata = grav1[,2])
boot(grav1, grav.fun, R = 499, stype = "w", weights = grav.tilt$p,
strata = grav1[,2], orig = grav.z0[1])
}
\keyword{nonparametric}
\keyword{smooth}
% Converted by Sd2Rd version 1.15.
|