### generate sample data
set.seed(2023)
n <- 50
p <- 30
X <- matrix(rnorm(n*p), n, p)
### Example 1, LASSO penalty
beta <- apply(matrix(rnorm(p, sd = 1), p, 1), 1, fdaSP::softhresh, 1.5)
y <- X %*% beta + rnorm(n, sd = sqrt(crossprod(X %*% beta)) / 20)
### set regularization parameter grid
lam <- 10^seq(0, -2, length.out = 30)
### set the hyper-parameters of the ADMM algorithm
maxit <- 1000
adaptation <- TRUE
rho <- 1
reltol <- 1e-5
abstol <- 1e-5
### run example
mod <- lmSP(X = X, y = y, penalty = "LASSO", standardize.data = FALSE, intercept = FALSE,
lambda = lam, control = list("adaptation" = adaptation, "rho" = rho,
"maxit" = maxit, "reltol" = reltol,
"abstol" = abstol, "print.out" = FALSE))
### graphical presentation
matplot(log(lam), mod$sp.coef.path, type = "l", main = "Lasso solution path",
bty = "n", xlab = latex2exp::TeX("$\\log(\\lambda)$"), ylab = "")
### Example 2, sparse group-LASSO penalty
beta <- c(rep(4, 12), rep(0, p - 13), -2)
y <- X %*% beta + rnorm(n, sd = sqrt(crossprod(X %*% beta)) / 20)
### define groups of dimension 3 each
group1 <- rep(1:10, each = 3)
### set regularization parameter grid
lam <- 10^seq(1, -2, length.out = 30)
### set the alpha parameter
alpha <- 0.5
### set the hyper-parameters of the ADMM algorithm
maxit <- 1000
adaptation <- TRUE
rho <- 1
reltol <- 1e-5
abstol <- 1e-5
### run example
mod <- lmSP(X = X, y = y, penalty = "spGLASSO", groups = group1, standardize.data = FALSE,
intercept = FALSE, lambda = lam, alpha = 0.5,
control = list("adaptation" = adaptation, "rho" = rho,
"maxit" = maxit, "reltol" = reltol, "abstol" = abstol,
"print.out" = FALSE))
### graphical presentation
matplot(log(lam), mod$sp.coef.path, type = "l", main = "Sparse Group Lasso solution path",
bty = "n", xlab = latex2exp::TeX("$\\log(\\lambda)$"), ylab = "")
Run the code above in your browser using DataLab