Fit the Poisson lognormal for LDA with a variational algorithm. Use the (g)lm syntax for model specification (covariates, offsets).

`PLNLDA(formula, data, subset, weights, grouping, control = PLN_param())`

- formula
an object of class "formula": a symbolic description of the model to be fitted.

- data
an optional data frame, list or environment (or object coercible by as.data.frame to a data frame) containing the variables in the model. If not found in data, the variables are taken from environment(formula), typically the environment from which lm is called.

- subset
an optional vector specifying a subset of observations to be used in the fitting process.

- weights
an optional vector of observation weights to be used in the fitting process.

- grouping
a factor specifying the class of each observation used for discriminant analysis.

- control
a list-like structure for controlling the optimization, with default generated by

`PLN_param()`

. See the associated documentation

an R6 object with class `PLNLDAfit()`

The parameter `control`

is a list controlling the optimization with the following entries:

"covariance" character setting the model for the covariance matrix. Either "full" or "spherical". Default is "full".

"trace" integer for verbosity.

"inception" Set up the initialization. By default, the model is initialized with a multivariate linear model applied on log-transformed data. However, the user can provide a PLNfit (typically obtained from a previous fit), which often speed up the inference.

"ftol_rel" stop when an optimization step changes the objective function by less than ftol multiplied by the absolute value of the parameter. Default is 1e-8

"ftol_abs" stop when an optimization step changes the objective function by less than ftol multiplied by the absolute value of the parameter. Default is 0

"xtol_rel" stop when an optimization step changes every parameters by less than xtol multiplied by the absolute value of the parameter. Default is 1e-6

"xtol_abs" stop when an optimization step changes every parameters by less than xtol multiplied by the absolute value of the parameter. Default is 0

"maxeval" stop when the number of iteration exceeds maxeval. Default is 10000

"maxtime" stop when the optimization time (in seconds) exceeds maxtime. Default is -1 (no restriction)

"algorithm" the optimization method used by NLOPT among LD type, i.e. "CCSAQ", "MMA", "LBFGS", "VAR1", "VAR2". See NLOPT documentation for further details. Default is "CCSAQ".

The class `PLNLDAfit`

```
data(trichoptera)
trichoptera <- prepare_data(trichoptera$Abundance, trichoptera$Covariate)
myPLNLDA <- PLNLDA(Abundance ~ 1, grouping = Group, data = trichoptera)
#>
#> Performing discriminant Analysis...
#> DONE!
```