mint.block.spls {mixOmics} | R Documentation

## NP-integration for integration with variable selection

### Description

Function to integrate data sets measured on the same samples (N-integration) and to combine multiple independent studies (P-integration) using variants of sparse multi-group and generalised PLS with variable selection (unsupervised analysis).

### Usage

    mint.block.spls(
      X,
      Y,
      indY,
      study,
      ncomp = 2,
      keepX,
      keepY,
      design,
      scheme,
      mode,
      scale = TRUE,
      init,
      tol = 1e-06,
      max.iter = 100,
      near.zero.var = FALSE,
      all.outputs = TRUE
    )

### Arguments

`X` | A named list of data sets (called 'blocks') measured on the same samples. Data in the list should be arranged in samples x variables, with samples order matching in all data sets.
`Y` | Matrix or vector response for a multivariate regression framework. Data should be continuous variables (see `?mint.block.splsda` for supervised classification and factor response).
`indY` | To be supplied if Y is missing, indicates the position of the matrix / vector response in the list `X`
`study` | Factor, indicating the membership of each sample to each of the studies being combined
`ncomp` | the number of components to include in the model. Default to 2. Applies to all blocks.
`keepX` | A named list of same length as X. Each entry is the number of variables to select in each of the blocks of X for each component. By default all variables are kept in the model.
`keepY` | Only if Y is provided (and not `indY`). Each entry is the number of variables to select in each of the blocks of Y for each component.
`design` | numeric matrix of size (number of blocks in X) x (number of blocks in X) with values between 0 and 1. Each value indicates the strenght of the relationship to be modelled between two blocks; a value of 0 indicates no relationship, 1 is the maximum value. Alternatively, one of c('null', 'full') indicating a disconnected or fully connected design, respecively, or a numeric between 0 and 1 which will designate all off-diagonal elements of a fully connected design (see examples in `block.splsda`). If `Y` is provided instead of `indY`, the `design` matrix is changed to include relationships to `Y`.
`scheme` | Character, one of 'horst', 'factorial' or 'centroid'. Default = `'horst'`, see reference.
`mode` | Character string indicating the type of PLS algorithm to use. One of `"regression"`, `"canonical"`, `"invariant"` or `"classic"`. See Details.
`scale` | Logical. 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 Decomposition of the product of each block of X with Y ('svd') or each block independently ('svd.single'). Default = `svd.single`.
`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.
`all.outputs` | Logical. Computation can be faster when some specific (and non-essential) outputs are not calculated. Default = `TRUE`.

### Details

The function fits sparse multi-group generalised PLS models with a specified number of `ncomp` components. An outcome needs to be provided, either by `Y` or by its position `indY` in the list of blocks `X`.

Multi (continuous)response are supported. `X` and `Y` can contain missing values. Missing values are handled by being disregarded during the cross product computations in the algorithm `block.pls` without having to delete rows with missing data. Alternatively, missing data can be imputed prior using the `nipals` function.

The type of algorithm to use is specified with the `mode` argument. Four PLS algorithms are available: PLS regression `("regression")`, PLS canonical analysis `("canonical")`, redundancy analysis `("invariant")` and the classical PLS algorithm `("classic")` (see References and more details in `?pls`).

### Value

`mint.block.spls` returns an object of class `"mint.spls", "block.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 for each block.
`mode` | the algorithm used to fit the model.
`mat.c` | matrix of coefficients from the regression of X / residual matrices X on the X-variates, to be used internally by `predict`.
`variates` | list containing the X and Y variates.
`loadings` | list containing the estimated loadings for the variates.
`names` | list containing the names to be used for individuals and variables.
`nzv` | list containing the zero- or near-zero predictors information.
`tol` | the tolerance used in the iterative algorithm, used for subsequent S3 methods
`max.iter` | the maximum number of iterations, used for subsequent S3 methods
`iter` | Number of iterations of the algorithm for each component

### Author(s)

Florian Rohart, Benoit Gautier, Kim-Anh Lê Cao, Al J Abadi

### References

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. (2014). Algorithms for multi-group PLS. J. Chemometrics, 28(3), 192-201.

### See Also

`spls`, `summary`, `plotIndiv`, `plotVar`, `predict`, `perf`, `mint.block.pls`, `mint.block.plsda`, `mint.block.splsda` and http://www.mixOmics.org/mixMINT for more details.

### Examples

    data(breast.TCGA)

    # for the purpose of this example, we create data that fit in the context of
    # this function.
    # We consider the training set as study1 and the test set as another
    # independent study2.

    study = c(rep("study1",150), rep("study2",70))

    # to put the data in the MINT format, we rbind the two studies
    mrna = rbind(breast.TCGA$data.train$mrna, breast.TCGA$data.test$mrna)
    mirna = rbind(breast.TCGA$data.train$mirna, breast.TCGA$data.test$mirna)

    # For the purpose of this example, we create a continuous response by
    # taking the first mrna variable, and removing it from the data
    Y = mrna[,1]
    mrna = mrna[,-1]

    data = list(mrna = mrna, mirna = mirna)

    # we can now apply the function
    res = mint.block.splsda(data, Y, study=study, ncomp=2,
    keepX = list(mrna=c(10,10), mirna=c(20,20)))

    res

[Package mixOmics version 6.16.3 Index]