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.

## 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)
```