spls {mixOmics} | R Documentation

## Sparse Partial Least Squares (sPLS)

### Description

Function to perform sparse Partial Least Squares (sPLS). The sPLS approach combines both integration and variable selection simultaneously on two data sets in a one-step strategy.

### Usage

    spls(
      X,
      Y,
      ncomp = 2,
      mode = c("regression", "canonical", "invariant", "classic"),
      keepX,
      keepY,
      scale = TRUE,
      tol = 1e-06,
      max.iter = 100,
      near.zero.var = FALSE,
      logratio = "none",
      multilevel = NULL,
      all.outputs = TRUE
    )

### Arguments

`X` | numeric matrix of predictors with the rows as individual observations. missing values (`NA`s) are allowed.
`Y` | numeric matrix of response(s) with the rows as individual observations matching `X`. missing values (`NA`s) are allowed.
`ncomp` | Positive Integer. The number of components to include in the model. Default to 2.
`mode` | Character string indicating the type of PLS algorithm to use. One of `"regression"`, `"canonical"`, `"invariant"` or `"classic"`. See Details.
`keepX` | numeric vector of length `ncomp`, the number of variables to keep in X-loadings. By default all variables are kept in the model.
`keepY` | numeric vector of length `ncomp`, the number of variables
`scale` | Logical. If scale = TRUE, each block is standardized to zero means and unit variances (default: TRUE)
`tol` | Positive numeric used as convergence criteria/tolerance during the iterative process. Default to `1e-06`.
`max.iter` | Integer, the maximum number of iterations. Default to 100.
`near.zero.var` | Logical, 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.
`logratio` | Character, one of ('none','CLR') specifies the log ratio transformation to deal with compositional values that may arise from specific normalisation in sequencing data. Default to 'none'. See `?logratio.transfo` for details.
`multilevel` | Numeric, design matrix for repeated measurement analysis, where multilevel decomposition is required. For a one factor decomposition, the repeated measures on each individual, i.e. the individuals ID is input as the first column. For a 2 level factor decomposition then 2nd AND 3rd columns indicate those factors. See examples.
`all.outputs` | Logical. Computation can be faster when some specific (and non-essential) outputs are not calculated. Default = `TRUE`.

### Details

`spls` function fit sPLS models with 1, … ,`ncomp` components. Multi-response models are fully supported. The `X` and `Y` datasets can contain missing values.

### Value

`spls` returns an object of class `"spls"`, a list that contains the following components:

`X` | the centered and standardized original predictor matrix.
`Y` | the centered and standardized original response vector or matrix.
`ncomp` | the number of components included in the model.
`mode` | the algorithm used to fit the model.
`keepX` | number of X variables kept in the model on each component.
`keepY` | number of Y variables kept in the model on each component.
`variates` | list containing the variates.
`loadings` | list containing the estimated loadings for the X and Y variates.
`names` | list containing the names to be used for individuals and variables.
`tol` | the tolerance used in the iterative algorithm, used for subsequent S3 methods
`iter` | Number of iterations of the algorithm for each component
`max.iter` | the maximum number of iterations, used for subsequent S3 methods
`nzv` | list containing the zero- or near-zero predictors information.
`scale` | whether scaling was applied per predictor.
`logratio` | whether log ratio transformation for relative proportion data was applied, and if so, which type of transformation.
`prop_expl_var` | Proportion of variance explained per component (note that contrary to PCA, this amount may not decrease as the aim of the method is not to maximise the variance, but the covariance between data sets).
`input.X` | numeric matrix of predictors in X that was input, before any saling / logratio / multilevel transformation.
`mat.c` | matrix of coefficients from the regression of X / residual matrices X on the X-variates, to be used internally by `predict`.
`defl.matrix` | residual matrices X for each dimension.

### missing values

The estimation of the missing values can be performed using the `impute.nipals` function. Otherwise, missing values are handled by element-wise deletion in the `pls` function without having to delete the rows with missing data.

### multilevel

Multilevel (s)PLS enables the integration of data measured on two different data sets on the same individuals. This approach differs from multilevel sPLS-DA as the aim is to select subsets of variables from both data sets that are highly positively or negatively correlated across samples. The approach is unsupervised, i.e. no prior knowledge about the sample groups is included.

### logratio and multilevel

logratio transform and multilevel analysis are performed sequentially as internal pre-processing step, through `logratio.transfo` and `withinVariation` respectively.

### Author(s)

Sébastien Déjean, Ignacio González, Florian Rohart, Kim-Anh Lê Cao, Al J abadi

### References

Sparse PLS: canonical and regression modes:

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.

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 methods: Tenenhaus, M. (1998). La regression PLS: theorie et pratique. Paris: Editions Technic. Chapters 9 and 11.

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

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.

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.

### See Also

`pls`, `summary`, `plotIndiv`, `plotVar`, `cim`, `network`, `predict`, `perf` and http://www.mixOmics.org for more details.

### Examples

    data(liver.toxicity)
    X <- liver.toxicity$gene
    Y <- liver.toxicity$clinic

    toxicity.spls <- spls(X, Y, ncomp = 2, keepX = c(50, 50),
    keepY = c(10, 10))

    toxicity.spls <- spls(X, Y[,1:2,drop=FALSE], ncomp = 5, keepX = c(50, 50))#,  mode="canonical")

    ## Not run:

    ## Second example: one-factor multilevel analysis with sPLS, selecting a subset of variables
    #--------------------------------------------------------------

    data(liver.toxicity)
    # note: we made up those data, pretending they are repeated measurements
    repeat.indiv <- c(1, 2, 1, 2, 1, 2, 1, 2, 3, 3, 4, 3, 4, 3, 4, 4, 5, 6, 5, 5,
    6, 5, 6, 7, 7, 8, 6, 7, 8, 7, 8, 8, 9, 10, 9, 10, 11, 9, 9,
    10, 11, 12, 12, 10, 11, 12, 11, 12, 13, 14, 13, 14, 13, 14,
    13, 14, 15, 16, 15, 16, 15, 16, 15, 16)
    summary(as.factor(repeat.indiv)) # 16 rats, 4 measurements each

    # this is a spls (unsupervised analysis) so no need to mention any factor in design
    # we only perform a one level variation split
    design <- data.frame(sample = repeat.indiv)
    res.spls.1level <- spls(X = liver.toxicity$gene,
    Y=liver.toxicity$clinic,
    multilevel = design,
    ncomp = 3,
    keepX = c(50, 50, 50), keepY = c(5, 5, 5),
    mode = 'canonical')

    # set up colors and pch for plotIndiv
    col.stimu <- 1:nlevels(design$stimu)

    plotIndiv(res.spls.1level, rep.space = 'X-variate', ind.names = FALSE,
    group = liver.toxicity$treatment$Dose.Group,
    pch = 20, main = 'Gene expression subspace',
    legend = TRUE)

    plotIndiv(res.spls.1level, rep.space = 'Y-variate', ind.names = FALSE,
    group = liver.toxicity$treatment$Dose.Group,
    pch = 20, main = 'Clinical measurements ssubpace',
    legend = TRUE)

    plotIndiv(res.spls.1level, rep.space = 'XY-variate', ind.names = FALSE,
    group = liver.toxicity$treatment$Dose.Group,
    pch = 20, main = 'Both Gene expression and Clinical subspaces',
    legend = TRUE)

    ## Third example: two-factor multilevel analysis with sPLS, selecting a subset of variables
    #--------------------------------------------------------------

    data(liver.toxicity)
    dose <- as.factor(liver.toxicity$treatment$Dose.Group)
    time <- as.factor(liver.toxicity$treatment$Time.Group)
    # note: we made up those data, pretending they are repeated measurements
    repeat.indiv <- c(1, 2, 1, 2, 1, 2, 1, 2, 3, 3, 4, 3, 4, 3, 4, 4, 5, 6, 5, 5,
    6, 5, 6, 7, 7, 8, 6, 7, 8, 7, 8, 8, 9, 10, 9, 10, 11, 9, 9,
    10, 11, 12, 12, 10, 11, 12, 11, 12, 13, 14, 13, 14, 13, 14,
    13, 14, 15, 16, 15, 16, 15, 16, 15, 16)
    summary(as.factor(repeat.indiv)) # 16 rats, 4 measurements each
    design <- data.frame(sample = repeat.indiv, dose = dose, time = time)

    res.spls.2level = spls(liver.toxicity$gene,
    Y = liver.toxicity$clinic,
    multilevel = design,
    ncomp=2,
    keepX = c(10,10), keepY = c(5,5))

    ## End(Not run)

[Package mixOmics version 6.14.1 Index]