Learn R Programming

grpSLOPE (version 0.3.3)

proximalGradientSolverGroupSLOPE: Proximal gradient method for Group SLOPE

Description

Compute the coefficient estimates for the Group SLOPE problem.

Usage

proximalGradientSolverGroupSLOPE(
  y,
  A,
  group,
  wt,
  lambda,
  max.iter = 10000,
  verbose = FALSE,
  dual.gap.tol = 1e-06,
  infeas.tol = 1e-06,
  x.init = NULL,
  ...
)

Value

A list with the entries:

x

Solution (n-by-1 matrix)

status

Convergence status: 1 if optimal, 2 if iteration limit reached

L

Approximation of the Lipschitz constant (step size)

iter

Iterations of the proximal gradient method

L.iter

Total number of iterations spent in Lipschitz search

Arguments

y

the response vector

A

the model matrix

group

A vector describing the grouping structure. It should contain a group id for each predictor variable.

wt

A vector of weights (per coefficient)

lambda

A decreasing sequence of regularization parameters \(\lambda\)

max.iter

Maximal number of iterations to carry out

verbose

A logical specifying whether to print output or not

dual.gap.tol

The tolerance used in the stopping criteria for the duality gap

infeas.tol

The tolerance used in the stopping criteria for the infeasibility

x.init

An optional initial value for the iterative algorithm

...

Options passed to prox_sorted_L1

Details

proximalGradientSolverGroupSLOPE computes the coefficient estimates for the Group SLOPE model. The employed optimization algorithm is FISTA with backtracking Lipschitz search.

References

D. Brzyski, A. Gossmann, W. Su, and M. Bogdan (2016) Group SLOPE -- adaptive selection of groups of predictors, https://arxiv.org/abs/1610.04960

D. Brzyski, A. Gossmann, W. Su, and M. Bogdan (2019) Group SLOPE -- adaptive selection of groups of predictors. Journal of the American Statistical Association 114 (525): 419–33. tools:::Rd_expr_doi("10.1080/01621459.2017.1411269")

A. Gossmann, S. Cao, Y.-P. Wang (2015) Identification of Significant Genetic Variants via SLOPE, and Its Extension to Group SLOPE. In Proceedings of ACM BCB 2015. tools:::Rd_expr_doi("10.1145/2808719.2808743")

Examples

Run this code
set.seed(1)
A   <- matrix(runif(100, 0, 1), 10, 10)
grp <- c(0, 0, 1, 1, 2, 2, 2, 2, 2, 3)
wt  <- c(2, 2, 2, 2, 5, 5, 5, 5, 5, 1)
x   <- c(0, 0, 5, 1, 0, 0, 0, 1, 0, 3)
y   <- A %*% x
lam <- 0.1 * (10:7)
result <- proximalGradientSolverGroupSLOPE(y=y, A=A, group=grp, wt=wt, lambda=lam, verbose=FALSE)
result$x
#           [,1]
#  [1,] 0.000000
#  [2,] 0.000000
#  [3,] 3.856005
#  [4,] 2.080736
#  [5,] 0.000000
#  [6,] 0.000000
#  [7,] 0.000000
#  [8,] 0.000000
#  [9,] 0.000000
# [10,] 3.512833

Run the code above in your browser using DataLab