Overlapping Group Lasso (OGLasso)
oglasso( x, y, delta = NULL, group, fused = NULL, family = c("gaussian", "binomial", "coxph"), nlambda = 100L, lambda = NULL, lambda.min.ratio = NULL, lambda.fused = 0, alpha = NULL, group.weights = NULL, adaptive.lasso = FALSE, adaptive.fused = FALSE, penalty.factor = NULL, penalty.factor.fused = NULL, gamma = 1, standardize = TRUE, intercept = TRUE, compute.se = FALSE, rho = NULL, dynamic.rho = TRUE, maxit = 500L, abs.tol = 1e-05, rel.tol = 1e-05, irls.tol = 1e-05, irls.maxit = 100L )
x | input matrix of dimension nobs by nvars. Each row is an observation, each column corresponds to a covariate |
---|---|
y | numeric response vector of length nobs |
delta | vector of length equal to the number of observations with values in 1 and 0, where a 1 indicates the observed time is a death and a 0 indicates the observed time is a censoring event |
group | A list of length equal to the number of groups containing vectors of integers
indicating the variable IDs for each group. For example, |
fused | matrix specifying generalized lasso penalty formulation. Each column corresponds to each variable and each row corresponds to a new penalty term, ie if row 1 has the first entry of 1 and the second entry of -1, then the penalty term lambda.fused * |beta_1 - beta_2| will be added. Not available now |
family | "gaussian" for least squares problems, "binomial" for binary response |
nlambda | The number of lambda values. Default is 100. |
lambda | A user-specified sequence of lambda values. Left unspecified, the a sequence of lambda values is automatically computed, ranging uniformly on the log scale over the relevant range of lambda values. |
lambda.min.ratio | Smallest value for lambda, as a fraction of lambda.max, the (data derived) entry
value (i.e. the smallest value for which all parameter estimates are zero). The default
depends on the sample size nobs relative to the number of variables nvars. If
|
lambda.fused | tuning parameter for fused (generalized) lasso penalty |
alpha | currently not used. Will be used later for fused lasso |
group.weights | A vector of values representing multiplicative factors by which each group's penalty is to be multiplied. Often, this is a function (such as the square root) of the number of predictors in each group. The default is to use the square root of group size for the group selection methods. |
adaptive.lasso | Flag indicating whether or not to use adaptive lasso weights. If set to |
adaptive.fused | Flag indicating whether or not to use adaptive fused lasso weights. |
penalty.factor | vector of weights to be multiplied to the tuning parameter for the group lasso penalty. A vector of length equal to the number of groups |
penalty.factor.fused | vector of weights to be multiplied to the tuning parameter for the fused lasso penalty. A vector of length equal to the number of variables. mostly for internal usage |
gamma | power to raise the MLE estimated weights by for the adaptive lasso. defaults to 1 |
standardize | Logical flag for |
intercept | Should intercept(s) be fitted ( |
compute.se | Should standard errors be computed? If |
rho | ADMM parameter. must be a strictly positive value. By default, an appropriate value is automatically chosen |
dynamic.rho |
|
maxit | integer. Maximum number of ADMM iterations. Default is 500. |
abs.tol | absolute convergence tolerance for ADMM iterations for the relative dual and primal residuals.
Default is |
rel.tol | relative convergence tolerance for ADMM iterations for the relative dual and primal residuals.
Default is |
irls.tol | convergence tolerance for IRLS iterations. Only used if |
irls.maxit | integer. Maximum number of IRLS iterations. Only used if |
An object with S3 class "oglasso"
library(vennLasso) set.seed(123) n.obs <- 1e3 n.vars <- 50 true.beta <- c(rep(0,2), 1, -1, rep(0, 8), 0.5, -0.5, 1, rep(0, 35)) x <- matrix(rnorm(n.obs * n.vars), n.obs, n.vars) y <- rnorm(n.obs, sd = 3) + drop(x %*% true.beta) groups <- c(list(c(1,2), c(2,3), c(3,4,5), 5:10, 6:12, 7:15), lapply(16:50, function(x) x)) if (FALSE) { fit <- oglasso(x = x, y = y, group = groups) }