Robust penalized elastic net S and MM estimator for linear regression. The method is described in detail in Cohen Freue, G. V., Kepplinger, D., Salibian-Barrera, M., and Smucler, E. (2017) < https://gcohenfr.github.io/pdfs/PENSE_manuscript.pdf>.

This R package implements the Penalized Elastic Net S-Estimator (PENSE) and MM-estimator (PENSEM) for linear regression.

The main functions in the package are

`pense()`

… to compute a robust elastic net S-estimator for linear regression`pensem()`

… to compute a robust elastic net MM-estimator either directly from the data matrix or from an S-estimator previously computed with`pense()`

.

Both of these functions perform k-fold cross-validation to choose the optimal penalty level
`lambda`

, but the optimal balance between the L1 and the L2 penalties (the `alpha`

parameter) needs
to be pre-specified by the user.

The default breakdown point is set to 25%. If the user needs an estimator with a higher breakdown
point, the `delta`

argument in the `pense_options()`

and `initest_options()`

can be set to the
desired breakdown point (.e.g, `delta = 0.5`

).

The package also exports an efficient classical elastic net algorithm available via the functions
`elnet()`

and `elnet_cv()`

which chooses an optimal penalty parameter based on cross-validation.
The elastic net solution is computed either by the augmented LARS algorithm
(`en_options_aug_lars()`

) or via the Dual Augmented Lagrangian algorithm (Tomioka, et al. 2011)
selected with `en_options_dal()`

which is much faster in case of a large number of predictors
(> 500) and a small number of observations (< 200).

To install the latest release from CRAN, run the following R code in the R console:

`install.packages("pense")`

The most recent stable version as well as the developing version might not yet be available on CRAN. These can be directly installed from github using the devtools package:

`# Install the most recent stable version:install_github("dakep/pense-rpkg")# Install the (unstable) develop version:install_github("dakep/pense-rpkg", ref = "develop")`

Tomioka, R., Suzuki, T., and Sugiyama, M. (2011). Super-linear convergence of dual augmented lagrangian
algorithm for sparsity regularized estimation. *The Journal of Machine Learning Research*, **12**:1537–1586.

- prepare for changes to the upcoming
*Rcpp*(make compatible with`STRICT_R_HEADERS`

) - fix a bug in computing PSCs when using the augmented ridge algorithm for EN.

- Changed the internal scaling of the regularization parameter for
`pense`

and`pensem`

.**Note**: The*lambda*values in this release are not the same as in previous releases! - Fixed a bug when standardizing predictor variables with a MAD of 0 (thanks @hadjipantelis for reporting).
- The maximum value for the regularization parameter lambda is now chosen exactly.
- Fixed a bug when computing "exact" principal sensitivity components.

- Fix error with robustbase-0.92-8 as reported by Martin Maechler.
- Fix undefined behavior in C++ code resulting in build error on Solaris (x86).
- Fix
`predict()`

function for`pensem`

objects if computed from a fitted`pense`

object. - Always use
`delta`

and`cc`

specified in`pense_options()`

for the initial estimator. Remove`delta`

and`cc`

arguments from`initest_options()`

and instead add them to`enpy()`

. - Add further measure of the prediction performance (
`resid_size`

) to`obj$cv_lambda_grid`

, where`obj`

is of class`pense`

or`pensem`

.

- Initial stable release of the package.