LassoBT: Fit linear models with interactions using the Lasso.

View source: R/LassoBT.R

LassoBTR Documentation

Fit linear models with interactions using the Lasso.

Description

Computes a number of Lasso solution paths with increasing numbers of interactions present in the design matrices corresponding to each path. Previous paths are used to speed up computation of subsequent paths so the process is very fast.

Usage

LassoBT(
  x,
  y,
  nlambda = 100L,
  iter_max = 1L,
  lambda.min.ratio = ifelse(nobs < nvars, 0.01, 1e-04),
  lambda = NULL,
  thresh = 1e-07,
  verbose = FALSE,
  inter_orig
)

Arguments

x

input matrix of dimension nobs by nvars; each row is an observation vector.

y

response variable; shoud be a numeric vector.

nlambda

the number of lambda values. Must be at least 3.

iter_max

the number of iterations of the Backtracking algorithm to run. iter_max=1 corresponds to a single lasso or elasticnet fit. Values greater than 1 will fit interactions.

lambda.min.ratio

smallest value in lambda as a fraction of the largest value at which all main effects coefficients are 0.

lambda

user supplied lambda sequence of decreasing penalty parameters. Typical usage is to allow the function to compute its own lambda sequence. Inappropriate sequences may cause convergence problems.

thresh

convergence threshold for coordinate descent. Each inner coordinate descent loop continues until either the maximum change in the objective after any coefficient update is less than thresh or 1E5 iterations have been performed.

verbose

if TRUE will print iteration numbers.

inter_orig

an optional 2-row matrix with each column giving interactions that are to be added to the design matrix before the algorithm begins.

Details

The Lasso optimisations are performed using coordinate descent similarly to the glmnet package. An intercept term is always included. Variables are centred and scaled to have equal empirical variance. Interactions are constructed from these centred and scaled variables, and the interactions themselves are also centred and scaled. Note the coefficients are returned on the original scale of the variables. Coefficients returned for interactions are for simple pointwise products of the original variables with no scaling.

Value

An object with S3 class "BT".

call

the call that produced the object

a0

list of intercept vectors

beta

list of matrices of coefficients stored in sparse column format (CsparseMatrix)

fitted

list of fitted values

lambda

the sequence of lambda values used

nobs

the number of observations

nvars

the number of variables

var_indices

the indices of the non-constant columns of the design matrix

interactions

a 2-row matrix with columns giving the interactions that were added to the design matrix

path_lookup

a matrix with columns corresponding to iterations and rows to lambda values. Entry ij gives the component of the a0 and beta lists that gives the coefficients for the ith lambda value and jth iteration

l_start

a vector with component entries giving the minimimum lambda index in the corresponding copmonents of beta and a0

References

Shah, R. D. (2016) Shah, R. D. (2016) Modelling interactions in high-dimensional data with Backtracking. JMLR, 17, 1-31 https://www.jmlr.org/papers/volume17/13-515/13-515.pdf

See Also

predict.BT, coef.BT methods and the cvLassoBT function.

Examples

x <- matrix(rnorm(100*250), 100, 250)
y <- x[, 1] + x[, 2] - x[, 1]*x[, 2] + x[, 3] + rnorm(100)
out <- LassoBT(x, y, iter_max=10)

LassoBacktracking documentation built on Dec. 8, 2022, 5:12 p.m.