Multi-Step Adaptive Estimation Methods for Sparse Regressions

Multi-step adaptive elastic-net (MSAENet) algorithm for feature selection in high-dimensional regressions proposed in Xiao and Xu (2015) , with support for multi-step adaptive MCP-net (MSAMNet) and multi-step adaptive SCAD-net (MSASNet) methods.

Build Status AppVeyor Build Status CRAN Version Downloads from the RStudio CRAN mirror

msaenet implements the multi-step adaptive elastic-net (MSAENet) algorithm for feature selection in high-dimensional regressions proposed in Xiao and Xu (2015) <DOI:10.1080/00949655.2015.1016944> (PDF).

Nonconvex multi-step adaptive estimations based on MCP-net or SCAD-net are also supported.

Paper Citation

Formatted citation:

Nan Xiao and Qing-Song Xu. (2015). Multi-step adaptive elastic-net: reducing false positives in high-dimensional variable selection. Journal of Statistical Computation and Simulation 85(18), 3755-3765.

BibTeX entry:

  title={Multi-step adaptive elastic-net: reducing false positives in high-dimensional variable selection},
  author={Xiao, Nan and Xu, Qing-Song},
  journal={Journal of Statistical Computation and Simulation},
  publisher={Taylor \& Francis}


Adaptive Elastic-Net / Multi-Step Adaptive Elastic-Net


Adaptive MCP-Net / Multi-Step Adaptive MCP-Net


Adaptive SCAD-Net / Multi-Step Adaptive SCAD-Net



To download and install msaenet from CRAN:


Or try the development version on GitHub:

# install.packages("devtools")

Browse the vignette (can be opened with vignette("msaenet") in R) for a quick-start.


To contribute to this project, please take a look at the Contributing Guidelines first. Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.


msaenet is free and open source software, licensed under GPL-3.


msaenet 3.0 (2018-12-14)

New Features

  • Added a new argument penalty.factor.init to support customized penalty factor applied to each coefficient in the initial estimation step. This is useful for incorporating prior information about variable weights, for example, emphasizing specific clinical variables. We thank Xin Wang from University of Michigan for this feedback [#4].

msaenet 2.9 (2018-05-13)


msaenet 2.8 (2018-01-05)

New Features

  • Added a Cleveland dot plot option type = "dotplot" in plot.msaenet(). This plot offers a direct visualization of the model coefficients at the optimal step.

msaenet 2.7 (2017-09-24)

Bug Fixes

  • Fixed the missing arguments issue when init = "ridge".

msaenet 2.6 (2017-04-23)


  • Added two arguments lower.limits and upper.limits to support coefficient constraints in aenet() and msaenet() [#1].

msaenet 2.5 (2017-03-24)


  • Better code indentation style.
  • Update gallery images in

msaenet 2.4 (2017-02-17)


  • Improved graphical details for coefficient path plots, following the general graphic style in the ESL (The Elements of Statistical Learning) book.
  • More options available in plot.msaenet() for extra flexibility: it is now possible to set important properties of the label appearance such as position, offset, font size, and axis titles via the new arguments label.pos, label.offset, label.cex, xlab, and ylab.

msaenet 2.3 (2017-02-09)


  • Reduced model saturation cases and improved speed at the initialization step for MCP-net and SCAD-net based models when init = "ridge", by using the ridge estimation implementation from glmnet. As a benefit, we now have a more aligned baseline for the comparison between elastic-net based models and MCP-net/SCAD-net based models when init = "ridge".
  • Style improvements in code and examples: reduced whitespace with a new formatting scheme.

msaenet 2.2 (2017-02-02)

New Features

  • Added BIC, EBIC, and AIC in addition to k-fold cross-validation for model selection.
  • Added new arguments tune and tune.nsteps to controls this for selecting the optimal model for each step, and the optimal model among all steps (i.e. the optimal step).
  • Added arguments ebic.gamma and ebic.gamma.nsteps to control the EBIC tuning parameter, if ebic is specified by tune or tune.nsteps.
  • Redesigned plot function: now supports two types of plots (coefficient path, screeplot of the optimal step selection criterion), optimal step highlighting, variable labeling, and color palette customization. See ?plot.msaenet for details.


  • Renamed previous argument gamma (scaling factor for adaptive weights) to scale to avoid possible confusion.
  • Reset the default values of candidate concavity parameter gammas to be 3.7 for SCAD-net and 3 for MCP-net.
  • Unified the supported model family in all model types to be "gaussian", "binomial", "poisson", and "cox".

msaenet 2.1 (2017-01-15)

New Features

  • Added functions msaenet.sim.binomial(), msaenet.sim.poisson(), msaenet.sim.cox() to generate simulation data for logistic, Poisson, and Cox regression models.
  • Added function msaenet.fn() for computing the number of false negative selections in msaenet models.
  • Added function msaenet.mse() for computing mean squared error (MSE).


  • Speed improvements in msaenet.sim.gaussian() by more vectorization when generating correlation matrices.
  • Added parameters max.iter and epsilon for MCP-net and SCAD-net related functions to have finer control over convergence criterion. By default, max.iter = 10000 and epsilon = 1e-4.

msaenet 2.0 (2017-01-05)

New Features

  • Added support for adaptive MCP-net. See ?amnet for details.
  • Added support for adaptive SCAD-net. See ?asnet for details.
  • Added support for multi-step adaptive MCP-net (MSAMNet). See ?msamnet for details.
  • Added support for multi-step adaptive SCAD-net (MSASNet). See ?msasnet for details.
  • Added msaenet.nzv.all() for displaying the indices of non-zero variables in all adaptive estimation steps.


  • More flexible predict.msaenet method allowing users to specify prediction type.

msaenet 1.1 (2016-12-28)

New Features

  • Added method coef for extracting model coefficients. See ?coef.msaenet for details.


  • New documentation website generated by pkgdown, with a full set of function documentation and vignettes available.
  • Added Windows continuous integration support using AppVeyor.

msaenet 1.0 (2016-09-20)

New Features

  • Initial version of the msaenet package

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


3.1 by Nan Xiao, a year ago,

Report a bug at

Browse source code at

Authors: Nan Xiao [aut, cre] , Qing-Song Xu [aut]

Documentation:   PDF Manual  

GPL-3 | file LICENSE license

Imports glmnet, ncvreg, foreach, mvtnorm, survival, Matrix

Suggests knitr, rmarkdown, doParallel

See at CRAN