Skip to contents

Conduct log-ratio lasso regression for continuous, binary and survival outcomes.

Usage

FLORAL(
  x,
  y,
  ncov = 0,
  family = "gaussian",
  longitudinal = FALSE,
  id = NULL,
  tobs = NULL,
  failcode = NULL,
  length.lambda = 100,
  lambda.min.ratio = NULL,
  ncov.lambda.weight = 0,
  a = 1,
  mu = 1,
  ncv = 5,
  ncore = 1,
  intercept = FALSE,
  foldid = NULL,
  step2 = TRUE,
  progress = TRUE,
  plot = TRUE
)

Arguments

x

Feature matrix, where rows specify subjects and columns specify features. The first ncov columns should be patient characteristics and the rest columns are microbiome absolute counts corresponding to various taxa. If x contains longitudinal data, the rows must be sorted in the same order of the subject IDs used in y.

y

Outcome. For a continuous or binary outcome, y is a vector. For survival outcome, y is a Surv object.

ncov

An integer indicating the number of first ncov columns in x that will not be subject to the zero-sum constraint.

family

Available options are gaussian, binomial, cox, finegray.

longitudinal

TRUE or FALSE, indicating whether longitudinal data matrix is specified for input x. (Still under development. Please use with caution)

id

If longitudinal is TRUE, id specifies subject IDs corresponding to the rows of input x.

tobs

If longitudinal is TRUE, tobs specifies time points corresponding to the rows of input x.

failcode

If family = finegray, failcode specifies the failure type of interest. This must be a positive integer.

length.lambda

Number of penalty parameters used in the path

lambda.min.ratio

Ratio between the minimum and maximum choice of lambda. Default is NULL, where the ratio is chosen as 1e-2.

ncov.lambda.weight

Weight of the penalty lambda applied to the first ncov covariates. Default is 0 such that the first ncov covariates are not penalized.

a

A scalar between 0 and 1: a is the weight for lasso penalty while 1-a is the weight for ridge penalty.

mu

Value of penalty for the augmented Lagrangian

ncv

Folds of cross-validation. Use NULL if cross-validation is not wanted.

ncore

Number of cores for parallel computing for cross-validation. Default is 1.

intercept

TRUE or FALSE, indicating whether an intercept should be estimated.

foldid

A vector of fold indicator. Default is NULL.

step2

TRUE or FALSE, indicating whether a second-stage feature selection for specific ratios should be performed for the features selected by the main lasso algorithm. Will only be performed if cross validation is enabled.

progress

TRUE or FALSE, indicating whether printing progress bar as the algorithm runs.

plot

TRUE or FALSE, indicating whether returning plots of model fitting.

Value

A list with path-specific estimates (beta), path (lambda), and others. Details can be found in README.md.

References

Fei T, Funnell T, Waters N, Raj SS et al. Scalable Log-ratio Lasso Regression Enhances Microbiome Feature Selection for Predictive Models. bioRxiv 2023.05.02.538599.

Author

Teng Fei. Email: feit1@mskcc.org

Examples


set.seed(23420)

# Continuous outcome
dat <- simu(n=50,p=30,model="linear")
fit <- FLORAL(dat$xcount,dat$y,family="gaussian",ncv=2,progress=FALSE,step2=TRUE)

# Binary outcome
# dat <- simu(n=50,p=30,model="binomial")
# fit <- FLORAL(dat$xcount,dat$y,family="binomial",progress=FALSE,step2=TRUE)

# Survival outcome
# dat <- simu(n=50,p=30,model="cox")
# fit <- FLORAL(dat$xcount,survival::Surv(dat$t,dat$d),family="cox",progress=FALSE,step2=TRUE)

# Competing risks outcome
# dat <- simu(n=50,p=30,model="finegray")
# fit <- FLORAL(dat$xcount,survival::Surv(dat$t,dat$d,type="mstate"),failcode=1,
#               family="finegray",progress=FALSE,step2=FALSE)