SLOPE: Sorted L1 Penalized Estimation

Share:

Description

Performs variable selection using SLOPE (Sorted L1 Penalized Estimation). Given a design matrix X and a response vector y, find the coefficient vector β minimizing

\frac{1}{2} \Vert Xβ - y \Vert_2^2 + σ \cdot ∑_{i=1}^p λ_i |β|_{(i)},

where the λ sequence is chosen to control the false discovery rate associated with nonzero components of β.

Usage

1
2
SLOPE(X, y, fdr = 0.2, lambda = "gaussian", sigma = NULL,
  normalize = TRUE, solver = c("default", "matlab"), ...)

Arguments

X

the n-by-p design matrix

y

response vector of length n

fdr

target FDR (false discovery rate)

lambda

specifcation of λ, either one of "bhq" or "gaussian", or a vector of length p, sorted in decreasing order (see create_lambda)

sigma

noise level. If omitted, estimated from the data (see Details).

normalize

whether to center the input data and re-scale the columns of the design matrix to have unit norm. Do not disable this unless you are certain that your data is appropriately pre-processed.

solver

which SLOPE solver to use (see Details)

...

additional arguments to pass to the solver (see the relevant solver)

Details

At present, two solvers for the SLOPE problem are supported. By default, we use SLOPE_solver, which is mostly written in R but uses a fast prox implemented in C. If you have MATLAB installed, it is also possible to use the TFOCS solver for SLOPE. This requires the MATLAB package TFOCS and the R package R.matlab.

If the noise level is unknown, it is estimated from the data using one of two methods. When n is large enough compared to p, the classical unbiased estimate of σ^2 is used. Otherwise, the iterative SLOPE algorithm is used, in which a decreasing sequence of σ^2 estimates is used until the set of selected variables stabilizes. For details, see Section 3.2.3 of the SLOPE paper.

Value

An object of class SLOPE.result. This object is a list containing at least the following components:

lambda

the λ sequence used

lambda_method

method of λ construction ("bhq", "gaussian", or "user")

sigma

(sequence of) noise level(s) used

beta

optimized coefficient vector β

selected

selected variables (variables i with β_i > 0)

See Also

SLOPE_solver