glmpath {glmpath}R Documentation

Fits the entire L1 regularization path for generalized linear models

Description

This algorithm uses predictor-corrector method to compute the entire regularization path for generalized linear models with L1 penalty.

Usage

  glmpath(x, y, data, family = binomial, weight = rep(1,length(y)),
          lambda2 = 1e-5, max.steps = NULL, max.norm = 100*ncol(x),
          min.lambda = 0, max.arclength = Inf, add.newvars = 1,
          bshoot.threshold = 0.1, relax.lambda = 1e-8,
          eps = .Machine$double.eps, trace = FALSE)

Arguments

x matrix of features
y response
data a list consisting of x: a matrix of features and y: response. data is not needed if above x and y are input separately.
family name of a family function that represents the distribution of y to be used in the model. It must be binomial, gaussian, or poisson. For each one, the canonical link function is used; logit for binomial, identity for gaussian, and log for poisson distribution. Default is binomial.
weight an optional vector of weights for observations
lambda2 regularization parameter for the L2 norm of the coefficients. Default is 1e-5.
max.steps an optional bound for the number of steps to be taken. Default is 10 * min{nrow(x), ncol(x)}.
max.norm an optional bound for the L1 norm of the coefficients. Default is 100 * ncol(x).
min.lambda an optional (lower) bound for the size of λ. Default is 0 for ncol(x) < nrow(x) cases and 1e-6 otherwise.
max.arclength an optional bound for arc length (L1 norm) of a step. If max.arclength is extremely small, an exact nonlinear path is produced. Default is Inf.
add.newvars add.newvars candidate variables (that are currently not in the active set) are used in the corrector step as potential active variables. Default is 1.
bshoot.threshold If the absolute value of a coefficient is larger than bshoot.threshold at the first corrector step it becomes nonzero (therefore when λ is considered to have been decreased too far), λ is increased again. i.e. A backward distance in λ that makes the coefficient zero is computed. Default is 0.1.
relax.lambda A variable joins the active set if |l'(β)| > λ(1-relax.lambda). Default is 1e-8. If no variable joins the active set even after many (>20) steps, the user should increase relax.lambda to 1e-7 or 1e-6, but not more than that. This adjustment is sometimes needed because of the numerical precision/error propagation problems. In general, the paths are less accurate with relaxed lambda.
eps an effective zero
trace If TRUE, the algorithm prints out its progress.

Details

This algorithm implements the predictor-corrector method to determine the entire path of the coefficient estimates as the amount of regularization varies; it computes a series of solution sets, each time estimating the coefficients with less regularization, based on the previous estimate. The coefficients are estimated with no error at the knots, and the values are connected, thereby making the paths piecewise linear.

We thank Michael Saunders of SOL, Stanford University for providing the solver used for the convex optimization in corrector steps of glmpath.

Value

A glmpath object is returned.

lambda vector of λ values for which exact coefficients are computed
lambda2 λ_2 used
step.length vector of step lengths in λ
corr matrix of l'(β) values (derivatives of the log-likelihood)
new.df vector of degrees of freedom (to be used in the plot function)
df vector of degrees of freedom at each step
deviance vector of deviance computed at each step
aic vector of AIC values
bic vector of BIC values
b.predictor matrix of coefficient estimates from the predictor steps
b.corrector matrix of coefficient estimates from the corrector steps
actions actions taken at each step
meanx means of the columns of x
sdx standard deviations of the columns of x
xnames column names of x
family family used
weight weights used

Author(s)

Mee Young Park and Trevor Hastie

References

Mee Young Park and Trevor Hastie (2006) L1 Regularization Path Algorithm for Generalized Linear Models - available at the authors' websites, http://www.stanford.edu/~mypark or http://stat.stanford.edu/~hastie/pub.htm.

See Also

cv.glmpath, plot.glmpath, predict.glmpath

Examples

data(heart.data)
attach(heart.data)
fit.a <- glmpath(x, y, family=binomial)
fit.b <- glmpath(x, y, family=gaussian)
detach(heart.data)

[Package glmpath version 0.91 Index]