Learn R Programming

sparseR: Sift smartly through interactions & polynomials with ranked sparsity

What is ranked sparsity?

The ranked sparsity methods such as the sparsity-ranked lasso (SRL) have been developed for model selection and estimation in the presence of interactions and polynomials (Peterson & Cavanaugh 2022)[https://doi.org/10.1007/s10182-021-00431-7]. The main idea is that an algorithm should be more skeptical of higher-order polynomials and interactions a priori compared to main effects, by a predetermined amount.

Package overview

The sparseR package has many features designed to streamline sifting through the high-dimensional space of interaction terms and polynomials, including functions for variable pre-processing, variable selection, post-selection inference, and post-fit model visualization under ranked sparsity. The package implements ranked-sparsity-based versions of the lasso, elastic net, MCP, and SCAD. We also provide a (preliminary) version of an sparsity-ranked extension to Bayesian Information Criterion (and corresponding stepwise approaches).

Installation


## Via GitHub: 
# install.packages("devtools")
devtools::install_github("petersonR/sparseR")

# or via CRAN
install.packages("sparseR")

Example

library(sparseR)
data(iris)
srl <- sparseR(Sepal.Width ~ ., data = iris, k = 1, poly = 2, seed = 1)
srl
#> 
#> Model summary @ min CV:
#> -----------------------------------------------------
#>   lasso-penalized linear regression with n=150, p=21
#>   (At lambda=0.0023):
#>     Nonzero coefficients: 7
#>     Cross-validation error (deviance): 0.07
#>     R-squared: 0.62
#>     Signal-to-noise ratio: 1.64
#>     Scale estimate (sigma): 0.267
#> 
#>   SR information:
#>              Vartype Total Selected Saturation Penalty
#>          Main effect     6        2      0.333    2.45
#>  Order 1 interaction    12        3      0.250    3.46
#>   Order 2 polynomial     3        2      0.667    3.00
#> 
#> 
#> Model summary @ CV1se:
#> -----------------------------------------------------
#>   lasso-penalized linear regression with n=150, p=21
#>   (At lambda=0.0074):
#>     Nonzero coefficients: 6
#>     Cross-validation error (deviance): 0.08
#>     R-squared: 0.57
#>     Signal-to-noise ratio: 1.35
#>     Scale estimate (sigma): 0.284
#> 
#>   SR information:
#>              Vartype Total Selected Saturation Penalty
#>          Main effect     6        2      0.333    2.45
#>  Order 1 interaction    12        2      0.167    3.46
#>   Order 2 polynomial     3        2      0.667    3.00

par(mfrow = c(2,1), mar = c(4, 4, 3, 1))
plot(srl, plot_type = "both")


summary(srl, at = "cv1se")
#> lasso-penalized linear regression with n=150, p=21
#> At lambda=0.0074:
#> -------------------------------------------------
#>   Nonzero coefficients         :   6
#>   Expected nonzero coefficients:   1.22
#>   Average mfdr (6 features)    :   0.204
#> 
#>                                Estimate      z      mfdr Selected
#> Species_setosa                  0.80638 18.013   < 1e-04        *
#> Sepal.Length_poly_1             0.19734  9.713   < 1e-04        *
#> Petal.Width_poly_2              0.09871  4.614 0.0011579        *
#> Petal.Width:Species_versicolor  0.27739  3.259 0.1328700        *
#> Sepal.Length_poly_2            -0.03363 -2.804 0.3663287        *
#> Sepal.Length:Species_setosa     0.04275  2.190 0.7229428        *
effect_plot(srl, "Petal.Width", by = "Species", at = "cv1se", legend_location = "topright")

For more examples and a closer look at how to use this package, check out the package website.

Many thanks to the authors and maintainers of ncvreg and recipes.

Copy Link

Version

Install

install.packages('sparseR')

Monthly Downloads

314

Version

0.3.2

License

GPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Ryan Andrew Peterson

Last Published

April 14th, 2025

Functions in sparseR (0.3.2)

step_center_to

Centering numeric data to a value besides their mean
sparseRBIC_sampsplit

Sample split procedure for stepwise regression
sparseR_prep

Preprocess & create a model matrix with interactions + polynomials
effect_plot

Plot relevant effects of a sparseR object
sparseR-package

sparseR: Implement ranked sparsity for selecting interactions and polynomials
get_penalties

Helper function to help set up penalties
print.sparseR

Print sparseR object
sparseR

Fit a ranked-sparsity model with regularized regression
plot.sparseR

Plot relevant properties of sparseR objects
predict.sparseR

Predict coefficients or responses for sparseR object
%>%

Pipe operator
EBIC

Custom IC functions for stepwise models
summary.sparseR

Summary of sparseR model coefficients
sparseRBIC_bootstrap

Bootstrap procedure for stepwise regression
datasets

Data sets
sparseRBIC_step

Fit a ranked-sparsity model with forward stepwise RBIC (experimental)