R: PLS-derived methods: one function to rule them all!

mixOmics {mixOmics} | R Documentation

## PLS-derived methods: one function to rule them all!

### Description

This function performs one of the PLS derived methods included in the mixOmics package that is the most appropriate for your input data, one of (mint).(block).(s)pls(da) depending on your input data (single data, list of data, discrete outcome, ...)

### Usage

    mixOmics(X,
    Y,
    indY,
    study,
    ncomp,
    keepX,
    keepY,
    design,
    tau = NULL,# rgcca, number between 0,1 or "optimal"
    scheme,
    mode,
    scale,
    init,
    tol =  1e-06,
    max.iter = 100,
    near.zero.var = FALSE)

### Arguments

`X` | Input data. Either a matrix or a list of data sets (called 'blocks') matching on the same samples. Data should be arranged in samples x variables, with samples order matching in all data sets.
`Y` | Outcome. Either a numeric matrix of responses or a factor or a class vector for the discrete outcome.
`indY` | To supply if Y is missing, indicates the position of the outcome in the list X
`study` | grouping factor indicating which samples are from the same study
`ncomp` | If `X` is a data matrix, `ncomp` is a single value. If `X` is a list of data sets, `ncomp` is a numeric vector of length the number of blocks in `X`. The number of components to include in the model for each block (does not necessarily need to take the same value for each block).
`keepX` | Number of variables to keep in the X-loadings
`keepY` | Number of variables to keep in the Y-loadings
`design` | numeric matrix of size (number of blocks) x (number of blocks) with only 0 or 1 values. A value of 1 (0) indicates a relationship (no relationship) between the blocks to be modelled. If `Y` is provided instead of `indY`, the `design` matrix is changed to include relationships to `Y`.
`tau` | numeric vector of length the number of blocks in `X`. Each regularization parameter will be applied on each block and takes the value between 0 (no regularisation) and 1. If tau = "optimal" the shrinkage paramaters are estimated for each block and each dimension using the Schafer and Strimmer (2005) analytical formula.
`scheme` | Either "horst", "factorial" or "centroid" (Default: "centroid"), see reference paper.
`mode` | character string. What type of algorithm to use, (partially) matching one of `"regression"`, `"canonical"`, `"invariant"` or `"classic"`. See Details.
`scale` | boleean. If scale = TRUE, each block is standardized to zero means and unit variances (default: TRUE)
`init` | Mode of initialization use in the algorithm, either by Singular Value Decompostion of the product of each block of X with Y ("svd") or each block independently ("svd.single") . Default to "svd".
`tol` | Convergence stopping value.
`max.iter` | integer, the maximum number of iterations.
`near.zero.var` | boolean, see the internal `nearZeroVar` function (should be set to TRUE in particular for data with many zero values). Setting this argument to FALSE (when appropriate) will speed up the computations. Default value is FALSE

### Details

This function performs one of the PLS derived methods included in the mixOmics package that is the most appropriate for your input data, one of (mint).(block).(s)pls(da).

If your input data `X` is a matrix, then the algorithm is directed towards one of (mint).(s)pls(da) depending on your input data `Y` (factor for the discrete outcome directs the algorithm to DA analysis) and whether you input a `study` parameter (MINT analysis) or a `keepX` parameter (sparse analysis).

If your input data `X` is a list of matrices, then the algorithm is directed towards one of (mint).block.(s)pls(da) depending on your input data `Y` (factor for the discrete outcome directs the algorithm to DA analysis) and whether you input a `study` parameter (MINT analysis) or a `keepX` parameter (sparse analysis).

More details about the PLS modes in `?pls`.

### Author(s)

Florian Rohart

### References

mixOmics article:

Rohart F, Gautier B, Singh A, Lê Cao K-A. mixOmics: an R package for 'omics feature selection and multiple data integration. PLoS Comput Biol 13(11): e1005752

MINT models:

Rohart F, Eslami A, Matigian, N, Bougeard S, Lê Cao K-A (2017). MINT: A multivariate integrative approach to identify a reproducible biomarker signature across multiple experiments and platforms. BMC Bioinformatics 18:128.

Eslami, A., Qannari, E. M., Kohler, A., and Bougeard, S. (2013). Multi-group PLS Regression: Application to Epidemiology. In New Perspectives in Partial Least Squares and Related Methods, pages 243-255. Springer.

Integration of omics data sets:

Singh A, Gautier B, Shannon C, Vacher M, Rohart F, Tebbutt S, Lê Cao K-A. DIABLO: an integrative, multi-omics, multivariate method for multi-group classification. http://biorxiv.org/content/early/2016/08/03/067611

Lê Cao, K.-A., Martin, P.G.P., Robert-Granie, C. and Besse, P. (2009). Sparse canonical methods for biological data integration: application to a cross-platform study. BMC Bioinformatics 10:34.

Lê Cao, K.-A., Rossouw, D., Robert-Granie, C. and Besse, P. (2008). A sparse PLS for variable selection when integrating Omics data. Statistical Applications in Genetics and Molecular Biology 7, article 35.

Tenenhaus A., Phillipe C., Guillemot V., Lê Cao K-A. , Grill J. , Frouin V. (2014), Variable selection for generalized canonical correlation analysis, Biostatistics, doi: 10.1093/biostatistics. PMID: 24550197.

Sparse SVD:

Shen, H. and Huang, J. Z. (2008). Sparse principal component analysis via regularized low rank matrix approximation. Journal of Multivariate Analysis 99, 1015-1034.

PLS-DA:

Lê Cao K-A, Boitard S and Besse P (2011). Sparse PLS Discriminant Analysis: biologically relevant feature selection and graphical displays for multiclass problems. BMC Bioinformatics 12:253.

PLS:

Tenenhaus, M. (1998). La regression PLS: theorie et pratique. Paris: Editions Technic.

Wold H. (1966). Estimation of principal components and related models by iterative least squares. In: Krishnaiah, P. R. (editors), Multivariate Analysis. Academic Press, N.Y., 391-420.

Abdi H (2010). Partial least squares regression and projection on latent structure regression (PLS Regression). Wiley Interdisciplinary Reviews: Computational Statistics, 2(1), 97-106.

On multilevel analysis:

Liquet, B., Lê Cao, K.-A., Hocini, H. and Thiebaut, R. (2012) A novel approach for biomarker selection and the integration of repeated measures experiments from two platforms. BMC Bioinformatics 13:325.

Westerhuis, J. A., van Velzen, E. J., Hoefsloot, H. C., and Smilde, A. K. (2010). Multivariate paired data analysis: multilevel PLSDA versus OPLSDA. Metabolomics, 6(1), 119-128.

Visualisations:

González I., Lê Cao K.-A., Davis, M.D. and Déjean S. (2013) Insightful graphical outputs to explore relationships between two omics data sets. BioData Mining 5:19.

### See Also

`pls`, `spls`, `plsda`, `splsda`, `mint.pls`, `mint.spls`, `mint.plsda`, `mint.splsda`, `block.pls`, `block.spls`, `block.plsda`, `block.splsda`, `mint.block.pls`, `mint.block.spls`, `mint.block.plsda`, `mint.block.splsda`

### Examples

    ## -- directed towards PLS framework because X is a matrix and the study argument is missing
    # ----------------------------------------------------
    data(liver.toxicity)
    X = liver.toxicity$gene
    Y = liver.toxicity$clinic
    Y.factor = as.factor(liver.toxicity$treatment[, 4])

    # directed towards PLS
    out = mixOmics(X, Y, ncomp = 2)

    # directed towards sPLS because of keepX and/or keepY
    out = mixOmics(X, Y, ncomp = 2, keepX = c(50, 50), keepY = c(10, 10))

    # directed towards PLS-DA because Y is a factor
    out = mixOmics(X, Y.factor, ncomp = 2)

    # directed towards sPLS-DA because Y is a factor and there is a keepX
    out = mixOmics(X, Y.factor, ncomp = 2, keepX = c(20, 20))

    ## -- directed towards block.pls framework because X is a list
    # ----------------------------------------------------
    data(nutrimouse)
    Y = unmap(nutrimouse$diet)
    data = list(gene = nutrimouse$gene, lipid = nutrimouse$lipid, Y = Y)

    # directed towards block PLS
    out = mixOmics(X = data, Y = Y,ncomp = 3)

    # directed towards block sPLS because of keepX and/or keepY
    out = mixOmics(X = data, Y = Y,ncomp = 3,
    keepX = list(gene = c(10,10), lipid = c(15,15)))

    # directed towards block PLS-DA because Y is a factor
    out = mixOmics(X = data, Y = nutrimouse$diet, ncomp = 3)

    # directed towards block sPLS-DA because Y is a factor and there is a keepX
    out = mixOmics(X = data, Y = nutrimouse$diet, ncomp = 3,
    keepX = list(gene = c(10,10), lipid = c(15,15)))

    ## -- directed towards mint.pls framework because of the study factor
    # ----------------------------------------------------
    data(stemcells)
    # directed towards PLS
    out = mixOmics(X = stemcells$gene, Y = unmap(stemcells$celltype), ncomp = 2)

    # directed towards mint.PLS
    out = mixOmics(X = stemcells$gene, Y = unmap(stemcells$celltype),
    ncomp = 2, study = stemcells$study)

    # directed towards mint.sPLS because of keepX and/or keepY
    out = mixOmics(X = stemcells$gene, Y = unmap(stemcells$celltype),
    ncomp = 2, study = stemcells$study, keepX = c(10, 5, 15))

    # directed towards mint.PLS-DA because Y is a factor
    out = mixOmics(X = stemcells$gene, Y = stemcells$celltype, ncomp = 2,
    study = stemcells$study)

    # directed towards mint.sPLS-DA because Y is a factor and there is a keepX
    out = mixOmics(X = stemcells$gene, Y = stemcells$celltype, ncomp = 2,
    study = stemcells$study, keepX = c(10, 5, 15))

[Package mixOmics version 6.3.2 Index]