predab.resample {rms} | R Documentation |
Predictive Ability using Resampling
Description
predab.resample
is a general-purpose
function that is used by functions for specific models.
It computes estimates of optimism of, and bias-corrected estimates of a vector
of indexes of predictive accuracy, for a model with a specified
design matrix, with or without fast backward step-down of predictors. If bw=TRUE
, the design
matrix x
must have been created by ols
, lrm
, or cph
.
If bw=TRUE
, predab.resample
stores as the kept
attribute a logical matrix encoding which
factors were selected at each repetition.
Usage
predab.resample(fit.orig, fit, measure,
method=c("boot","crossvalidation",".632","randomization"),
bw=FALSE, B=50, pr=FALSE, prmodsel=TRUE,
rule="aic", type="residual", sls=.05, aics=0,
tol=1e-12, force=NULL, estimates=TRUE,
non.slopes.in.x=TRUE, kint=1,
cluster, subset, group=NULL,
allow.varying.intercepts=FALSE, debug=FALSE, ...)
Arguments
fit.orig |
object containing the original full-sample fit, with the x=TRUE and
y=TRUE options specified to the model fitting function. This model
should be the FULL model including all candidate variables ever excluded
because of poor associations with the response.
|
fit |
a function to fit the model, either the original model fit, or a fit in a
sample. fit has as arguments x ,y , iter , penalty , penalty.matrix ,
xcol , and other arguments passed to predab.resample .
If you don't want iter
as an argument inside the definition of fit , add ... to the end of its
argument list. iter is passed to fit to inform the function of the
sampling repetition number (0=original sample). If bw=TRUE , fit should
allow for the possibility of selecting no predictors, i.e., it should fit an
intercept-only model if the model has intercept(s). fit must return
objects coef and fail (fail=TRUE if fit failed due to singularity or
non-convergence - these cases are excluded from summary statistics). fit
must add design attributes to the returned object if bw=TRUE .
The penalty.matrix parameter is not used if penalty=0 . The xcol
vector is a vector of columns of X to be used in the current model fit.
For ols and psm it includes a 1 for the intercept position.
xcol is not defined if iter=0 unless the initial fit had been from
a backward step-down. xcol is used to select the correct rows and columns
of penalty.matrix for the current variables selected, for example.
|
measure |
a function to compute a vector of indexes of predictive accuracy for a given fit.
For method=".632" or method="crossval" , it will make the most sense for
measure to compute only indexes that are independent of sample size. The
measure function should take the following arguments or use ...: xbeta
(X beta for
current fit), y , evalfit , fit , iter , and fit.orig . iter is as in fit .
evalfit is set to TRUE
by predab.resample if the fit is being evaluated on the sample used to make the
fit, FALSE otherwise; fit.orig is the fit object returned by the original fit on the whole
sample. Using evalfit will sometimes save computations. For example, in
bootstrapping the area under an ROC curve for a logistic regression model,
lrm already computes the area if the fit is on the training sample.
fit.orig
is used to pass computed configuration parameters from the original fit such as
quantiles of predicted probabilities that are used as cut points in other samples.
The vector created by measure should have names() associated with it.
|
method |
The default is "boot" for ordinary bootstrapping (Efron, 1983,
Eq. 2.10). Use ".632" for Efron's .632 method (Efron,
1983, Section 6 and Eq. 6.10), "crossvalidation" for grouped
cross–validation, "randomization" for the randomization
method. May be abbreviated down to any level, e.g. "b" ,
"." , "cross" , "rand" .
|
bw |
Set to TRUE to do fast backward step-down for each training
sample. Default is FALSE .
|
B |
Number of repetitions, default=50. For method="crossvalidation" ,
this is also the number of groups the original sample is split into.
|
pr |
TRUE to print results for each sample. Default is FALSE .
|
prmodsel |
set to FALSE to suppress printing of model selection output such
as that from fastbw .
|
rule |
Stopping rule for fastbw, "aic" or "p" . Default is
"aic" to use Akaike's information criterion.
|
type |
Type of statistic to use in stopping rule for fastbw, "residual"
(the default) or "individual" .
|
sls |
Significance level for stopping in fastbw if rule="p" . Default is
.05 .
|
aics |
Stopping criteria for rule="aic" . Stops deleting factors when
chi-square - 2 times d.f. falls below aics . Default is 0 .
|
tol |
Tolerance for singularity checking. Is passed to fit and fastbw .
|
force |
see fastbw
|
estimates |
see print.fastbw
|
non.slopes.in.x |
set to FALSE if the design matrix x
does not have columns for intercepts and these columns are needed
|
kint |
For multiple intercept models such as the ordinal logistic model, you may
specify which intercept to use as kint . This affects the linear
predictor that is passed to measure .
|
cluster |
Vector containing cluster identifiers. This can be specified only if
method="boot" . If it is present, the bootstrap is done using sampling
with replacement from the clusters rather than from the original records.
If this vector is not the same length as the number of rows in the data
matrix used in the fit, an attempt will be made to use naresid on
fit.orig to conform cluster to the data.
See bootcov for more about this.
|
subset |
specify a vector of positive or negative integers or a logical vector when
you want to have the measure function compute measures of accuracy on
a subset of the data. The whole dataset is still used for all model development.
For example, you may want to validate or calibrate a model by
assessing the predictions on females when the fit was based on males and
females. When you use cr.setup to build extra observations for fitting the
continuation ratio ordinal logistic model, you can use subset to specify
which cohort or observations to use for deriving indexes of predictive
accuracy. For example, specify subset=cohort=="all" to validate the
model for the first layer of the continuation ratio model (Prob(Y=0)).
|
group |
a grouping variable used to stratify the sample upon bootstrapping.
This allows one to handle k-sample problems, i.e., each bootstrap
sample will be forced to selected the same number of observations from
each level of group as the number appearing in the original dataset.
|
allow.varying.intercepts |
set to TRUE to not throw an error
if the number of intercepts varies from fit to fit
|
debug |
set to TRUE to print subscripts of all training and
test samples
|
... |
The user may add other arguments here that are passed to fit and
measure .
|
Details
For method=".632"
, the program stops with an error if every observation
is not omitted at least once from a bootstrap sample. Efron's ".632" method
was developed for measures that are formulated in terms on per-observation
contributions. In general, error measures (e.g., ROC areas) cannot be
written in this way, so this function uses a heuristic extension to
Efron's formulation in which it is assumed that the average error measure
omitting the i
th observation is the same as the average error measure
omitting any other observation. Then weights are derived
for each bootstrap repetition and weighted averages over the B
repetitions
can easily be computed.
Value
a matrix of class "validate"
with rows corresponding
to indexes computed by measure
, and the following columns:
index.orig |
indexes in original overall fit
|
training |
average indexes in training samples
|
test |
average indexes in test samples
|
optimism |
average training-test except for method=".632" - is .632 times
(index.orig - test)
|
index.corrected |
index.orig-optimism
|
n |
number of successful repetitions with the given index non-missing
|
.
Also contains an attribute keepinfo
if measure
returned
such an attribute when run on the original fit.
Author(s)
Frank Harrell
Department of Biostatistics, Vanderbilt University
fh@fharrell.com
References
Efron B, Tibshirani R (1997). Improvements on cross-validation: The .632+ bootstrap method. JASA 92:548–560.
See Also
rms
, validate
, fastbw
,
lrm
, ols
, cph
,
bootcov
, setPb
Examples
# See the code for validate.ols for an example of the use of
# predab.resample
[Package
rms version 6.8-1
Index]