Description Usage Arguments Details Value Author(s) References Examples
Fits the solution of a group lasso problem for a model of type
grpl.model
.
1 2 3 4 5 6 7 8 9 10 11 12 13 | grplasso(x, ...)
## S3 method for class 'formula'
grplasso(formula, nonpen = ~ 1, data, weights,
subset, na.action, lambda, coef.init, penscale = sqrt,
model = LogReg(), center = TRUE, standardize = TRUE,
control = grpl.control(), contrasts = NULL, ...)
## Default S3 method:
grplasso(x, y, index, weights = rep(1, length(y)), offset = rep(0,
length(y)), lambda, coef.init = rep(0, ncol(x)),
penscale = sqrt, model = LogReg(), center = TRUE,
standardize = TRUE, control = grpl.control(), ...)
|
x |
design matrix (including intercept) |
y |
response vector |
formula |
|
nonpen |
|
data |
|
index |
vector which defines the grouping of the
variables. Components sharing the same
number build a group. Non-penalized coefficients are marked with
|
weights |
vector of observation weights. |
subset |
an optional vector specifying a subset of observations to be used in the fitting process. |
na.action |
a function which indicates what should happen when the data contain 'NA's. |
offset |
vector of offset values; needs to have the same length as the response vector. |
lambda |
vector of penalty parameters. Optimization starts with the first component. See details below. |
coef.init |
initial vector of parameter estimates corresponding
to the first component in the vector |
penscale |
rescaling function to adjust the value of the penalty parameter to the degrees of freedom of the parameter group. See the reference below. |
model |
an object of class |
center |
logical. If true, the columns of the design matrix will be centered (except a possible intercept column). |
standardize |
logical. If true, the design matrix will be blockwise orthonormalized such that for each block X^TX = n 1 (*after* possible centering). |
control |
options for the fitting algorithm, see
|
contrasts |
an optional list. See the 'contrasts.arg' of 'model.matrix.default'. |
... |
additional arguments to be passed to the functions defined
in |
When using grplasso.formula
, the grouping of the variables is
derived from the type of the variables: The dummy variables of a
factor will be automatically treated as a group.
The optimization process starts using the first component of
lambda
as penalty parameter λ and with starting
values defined in coef.init
for the parameter vector. Once
fitted, the next component of lambda
is considered as penalty
parameter with starting values defined as the (fitted) coefficient
vector based on the previous component of lambda
.
A grplasso
object is returned, for which coef
,
print
, plot
and predict
methods exist.
coefficients |
coefficients with respect to the original input
variables (even if |
lambda |
vector of lambda values where coefficients were calculated. |
index |
grouping index vector. |
Lukas Meier, meier@stat.math.ethz.ch
Lukas Meier, Sara van de Geer and Peter B\"uhlmann (2008), The Group Lasso for Logistic Regression, Journal of the Royal Statistical Society, 70 (1), 53 - 71
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 | ## Use the Logistic Group Lasso on the splice data set
data(splice)
## Define a list with the contrasts of the factors
contr <- rep(list("contr.sum"), ncol(splice) - 1)
names(contr) <- names(splice)[-1]
## Fit a logistic model
fit.splice <- grplasso(y ~ ., data = splice, model = LogReg(), lambda = 20,
contrasts = contr, center = TRUE, standardize = TRUE)
## Perform the Logistic Group Lasso on a random dataset
set.seed(79)
n <- 50 ## observations
p <- 4 ## variables
## First variable (intercept) not penalized, two groups having 2 degrees
## of freedom each
index <- c(NA, 2, 2, 3, 3)
## Create a random design matrix, including the intercept (first column)
x <- cbind(1, matrix(rnorm(p * n), nrow = n))
colnames(x) <- c("Intercept", paste("X", 1:4, sep = ""))
par <- c(0, 2.1, -1.8, 0, 0)
prob <- 1 / (1 + exp(-x %*% par))
mean(pmin(prob, 1 - prob)) ## Bayes risk
y <- rbinom(n, size = 1, prob = prob) ## binary response vector
## Use a multiplicative grid for the penalty parameter lambda, starting
## at the maximal lambda value
lambda <- lambdamax(x, y = y, index = index, penscale = sqrt,
model = LogReg()) * 0.5^(0:5)
## Fit the solution path on the lambda grid
fit <- grplasso(x, y = y, index = index, lambda = lambda, model = LogReg(),
penscale = sqrt,
control = grpl.control(update.hess = "lambda", trace = 0))
## Plot coefficient paths
plot(fit)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.