proximalGradientSolverGroupSLOPE {grpSLOPE} | R Documentation |
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,
...
)
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 |
max.iter |
Maximal number of iterations to carry out |
verbose |
A |
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 |
Details
proximalGradientSolverGroupSLOPE
computes the coefficient estimates
for the Group SLOPE model. The employed optimization algorithm is FISTA with
backtracking Lipschitz search.
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
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. 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. doi:10.1145/2808719.2808743
Examples
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