rq.pen.cv {rqPen} | R Documentation |
Does k-folds cross validation for rq.pen. If multiple values of a are specified then does a grid based search for best value of \lambda
and a.
Description
Does k-folds cross validation for rq.pen. If multiple values of a are specified then does a grid based search for best value of \lambda
and a.
Usage
rq.pen.cv(
x,
y,
tau = 0.5,
lambda = NULL,
penalty = c("LASSO", "Ridge", "ENet", "aLASSO", "SCAD", "MCP"),
a = NULL,
cvFunc = NULL,
nfolds = 10,
foldid = NULL,
nlambda = 100,
groupError = TRUE,
cvSummary = mean,
tauWeights = rep(1, length(tau)),
printProgress = FALSE,
weights = NULL,
...
)
Arguments
x |
Matrix of predictors. |
y |
Vector of responses. |
tau |
Quantiles to be modeled. |
lambda |
Values of |
penalty |
Choice of penalty between LASSO, Ridge, Elastic Net (ENet), Adaptive Lasso (aLASSO), SCAD and MCP. |
a |
Tuning parameter of a. LASSO and Ridge has no second tuning parameter, but for notation is set to 1 or 0 respectively, the values for elastic net. Defaults are Ridge () |
cvFunc |
Loss function for cross-validation. Defaults to quantile loss, but user can specify their own function. |
nfolds |
Number of folds. |
foldid |
Ids for folds. If set will override nfolds. |
nlambda |
Number of lambda, ignored if lambda is set. |
groupError |
If set to false then reported error is the sum of all errors, not the sum of error for each fold. |
cvSummary |
Function to summarize the errors across the folds, default is mean. User can specify another function, such as median. |
tauWeights |
Weights for the different tau models. Only used in group tau results (gtr). |
printProgress |
If set to TRUE prints which partition is being worked on. |
weights |
Weights for the quantile loss objective function. |
... |
Additional arguments passed to rq.pen() |
Details
Two cross validation results are returned. One that considers the best combination of a and lambda for each quantile. The second considers the best combination of the tuning
parameters for all quantiles. Let y_{b,i}
, x_{b,i}
, and m_{b,i}
index the response, predictors, and weights of observations in
fold b. Let \hat{\beta}_{\tau,a,\lambda}^{-b}
be the estimator for a given quantile and tuning parameters that did not use the bth fold. Let n_b
be the number of observations in fold
b. Then the cross validation error for fold b is
\mbox{CV}(b,\tau) = \frac{1}{n_b} \sum_{i=1}^{n_b} m_{b,i} \rho_\tau(y_{b,i}-x_{b,i}^\top\hat{\beta}_{\tau,a,\lambda}^{-b}).
Note that \rho_\tau()
can be replaced by a different function by setting the cvFunc parameter. The function returns two different cross-validation summaries. The first is btr, by tau results.
It provides the values of lambda
and a
that minimize the average, or whatever function is used for cvSummary
, of \mbox{CV}(b)
. In addition it provides the
sparsest solution that is within one standard error of the minimum results.
The other approach is the group tau results, gtr. Consider the case of estimating Q quantiles of \tau_1,\ldots,\tau_Q
with quantile (tauWeights) of v_q
. The gtr returns the values of lambda
and a
that minimizes the average, or again whatever function is used for cvSummary
, of
\sum_{q=1}^Q v_q\mbox{CV}(b,\tau_q).
If only one quantile is modeled then the gtr results can be ignored as they provide the same minimum solution as btr.
Value
An rq.pen.seq.cv object.
- cverr:
Matrix of cvSummary function, default is average, cross-validation error for each model, tau and a combination, and lambda.
- cvse:
Matrix of the standard error of cverr foreach model, tau and a combination, and lambda.
- fit:
The rq.pen.seq object fit to the full data.
- btr:
A data.table of the values of a and lambda that are best as determined by the minimum cross validation error and the one standard error rule, which fixes a. In btr the values of lambda and a are selected seperately for each quantile.
- gtr:
A data.table for the combination of a and lambda that minimize the cross validation error across all tau.
- gcve:
Group, across all quantiles, cross-validation error results for each value of a and lambda.
- call:
Original call to the function.
Author(s)
Ben Sherwood, ben.sherwood@ku.edu
Examples
## Not run:
x <- matrix(runif(800),ncol=8)
y <- 1 + x[,1] + x[,8] + (1+.5*x[,3])*rnorm(100)
r1 <- rq.pen.cv(x,y) #lasso fit for median
# Elastic net fit for multiple values of a and tau
r2 <- rq.pen.cv(x,y,penalty="ENet",a=c(0,.5,1),tau=c(.25,.5,.75))
#same as above but more weight given to median when calculating group cross validation error.
r3 <- rq.pen.cv(x,y,penalty="ENet",a=c(0,.5,1),tau=c(.25,.5,.75),tauWeights=c(.25,.5,.25))
# uses median cross-validation error instead of mean.
r4 <- rq.pen.cv(x,y,cvSummary=median)
#Cross-validation with no penalty on the first variable.
r5 <- rq.pen.cv(x,y,penalty.factor=c(0,rep(1,7)))
## End(Not run)