Learn R Programming

grpSLOPE (version 0.3.3)

admmSolverGroupSLOPE: Alternating direction method of multipliers

Description

Compute the coefficient estimates for the Group SLOPE problem.

Usage

admmSolverGroupSLOPE(
  y,
  A,
  group,
  wt,
  lambda,
  rho = NULL,
  max.iter = 10000,
  verbose = FALSE,
  absolute.tol = 1e-04,
  relative.tol = 1e-04,
  z.init = NULL,
  u.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

iter

Number of iterations of the ADMM method

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\)

rho

Penalty parameter in the augmented Lagrangian (see Boyd et al., 2011)

max.iter

Maximal number of iterations to carry out

verbose

A logical specifying whether to print output or not

absolute.tol

The absolute tolerance used in the stopping criteria for the primal and dual feasibility conditions (see Boyd et al., 2011, Sec. 3.3.1)

relative.tol

The relative tolerance used in the stopping criteria for the primal and dual feasibility conditions (see Boyd et al., 2011, Sec. 3.3.1)

z.init

An optional initial value for the iterative algorithm

u.init

An optional initial value for the iterative algorithm

...

Options passed to prox_sorted_L1

Details

admmSolverGroupSLOPE computes the coefficient estimates for the Group SLOPE model. The employed optimization algorithm is the alternating direction method of multipliers (ADMM).

References

S. Boyd, N. Parikh, E. Chu, B. Peleato, and J. Eckstein (2011) Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers. Foundations and Trends in Machine Learning 3 (1).

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 <- admmSolverGroupSLOPE(y = y, A = A, group = grp, wt = wt,
                               lambda=lam, rho = 1, verbose = FALSE)
result$x
#           [,1]
#  [1,] 0.000000
#  [2,] 0.000000
#  [3,] 3.856002
#  [4,] 2.080742
#  [5,] 0.000000
#  [6,] 0.000000
#  [7,] 0.000000
#  [8,] 0.000000
#  [9,] 0.000000
# [10,] 3.512829

Run the code above in your browser using DataLab