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

- 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.

- ranks
a vector of integer containing the successive ranks (or number of axes to be considered)

- control_init
a list for controlling the optimization at initialization. See details of function

`PLN()`

.- control_main
a list for controlling the main optimization process. See details.

an R6 object with class `PLNPCAfamily`

, which contains
a collection of models with class `PLNPCAfit`

The list of parameters `control_main`

controls the optimization of the main process, with the following entries:

"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".

"trace" integer for verbosity.

The classes `PLNPCAfamily`

and `PLNPCAfit`

```
#' ## Use future to dispatch the computations on 2 workers
if (FALSE) {
future::plan("multisession", workers = 2)
}
data(trichoptera)
trichoptera <- prepare_data(trichoptera$Abundance, trichoptera$Covariate)
myPCA <- PLNPCA(Abundance ~ 1 + offset(log(Offset)), data = trichoptera, ranks = 1:5)
#>
#> Initialization...
#>
#> Adjusting 5 PLN models for PCA analysis.
#> Rank approximation = 5
Rank approximation = 1
Rank approximation = 3
Rank approximation = 2
Rank approximation = 4
#> Post-treatments
#> DONE!
# Shut down parallel workers
if (FALSE) {
future::plan("sequential")
}
```