# mvr

##### Partial Least Squares and Principal Component Regression

Functions to perform partial least squares regression (PLSR) or principal component regression (PCR), with a formula interface. Cross-validation can be used. Prediction, model extraction, plot, print and summary methods exist.

- Keywords
- multivariate, regression

##### Usage

```
mvr(formula, ncomp, data, subset, na.action,
method = c("kernelpls", "simpls", "oscorespls", "svdpc", "model.frame"),
scale = FALSE, validation = c("none", "CV", "LOO"),
model = TRUE, x = FALSE, y = FALSE, ...)
plsr(..., method = c("kernelpls", "simpls", "oscorespls", "model.frame"))
pcr(..., method = c("svdpc", "model.frame"))
```

##### Arguments

- formula
- a model formula. Most of the
`lm`

formula constructs are supported. See below. - ncomp
- the number of components to include in the model (see below).
- data
- an optional data frame with the data to fit the model from.
- subset
- an optional vector specifying a subset of observations to be used in the fitting process.
- na.action
- a function which indicates what should happen when the data contain missing values.
- method
- the multivariate regression method to be used. If
`"model.frame"`

, the model frame is returned. - scale
- numeric vector, or logical. If numeric vector, $X$
is scaled by dividing each variable with the corresponding element
of
`scale`

. If`scale`

is`TRUE`

, $X$ is scaled by dividing each variable by its sample st - validation
- character. What kind of (internal) validation to use. See below.
- model
- a logical. If
`TRUE`

, the model frame is returned. - x
- a logical. If
`TRUE`

, the model matrix is returned. - y
- a logical. If
`TRUE`

, the response is returned. - ...
- additional arguments, passed to the underlying fit
functions, and
`mvrCv`

.

##### Details

The functions fit PLSR or PCR models with 1, $\ldots$,
`ncomp`

number of components. Multi-response models are fully
supported.

Three PLSR algorithms are available: the kernel algorithm, SIMPLS and
the classical orthogonal scores algorithm. One PCR algorithm is
available: using the singular value decomposition. The type of
regression is specified with the `method`

argument. `pcr`

and `plsr`

are wrappers for `mvr`

, with different values for `method`

.

The `formula`

argument should be a symbolic formula of the form
`response ~ terms`

, where `response`

is the name of the
response vector or matrix (for multi-response models) and `terms`

is the name of one or more predictor matrices, usually separated by
`+`

, e.g., `water ~ FTIR`

or `y ~ X + Z`

. See
`lm`

for a detailed description. The named
variables should exist in the supplied `data`

data frame or in
the global environment. Note: Do not use ```
mvr(mydata$y ~
mydata$X, ...)
```

, instead use ```
mvr(y ~ X, data = mydata,
...)
```

. Otherwise, `predict.mvr`

will not work properly.
The chapter `Statistical models in R` of the manual `An
Introduction to R` distributed with Ris a good reference on
formulas in R.

The number of components to fit is specified with the argument
`ncomp`

. It this is not supplied, the maximal number of
components is used (taking account of any cross-validation).

If `validation = "CV"`

, cross-validation is performed. The number and
type of cross-validation segments are specified with the arguments
`segments`

and `segment.type`

. See `mvrCv`

for
details. If `validation = "LOO"`

, leave-one-out cross-validation
is performed. It is an error to specify the segments when
`validation = "LOO"`

is specified.

Note that the cross-validation is optimised for speed, and some
generality has been sacrificed. Especially, the model matrix is
calculated only once for the complete cross-validation, so models like
`y ~ msc(X)`

will not be properly cross-validated. However,
scaling requested by `scale = TRUE`

is properly cross-validated.
For proper cross-validation of models where the model matrix must be
updated/regenerated for each segment, use the separate function
`crossval`

.

##### Value

- If
`method = "model.frame"`

, the model frame is returned. Otherwise, an object of class`mvr`

is returned. The object contains all components returned by the underlying fit function. In addition, it contains the following components: validation if validation was requested, the results of the cross-validation. See `mvrCv`

for details.na.action if observations with missing values were removed, `na.action`

contains a vector with their indices. The class of this vector is used by functions like`fitted`

to decide how to treat the observations.ncomp the number of components of the model. method the method used to fit the model. See the argument `method`

for possible values.scale if scaling was requested (with `scale`

), the scaling used.call the function call. terms the model terms. model if `model = TRUE`

, the model frame.x if `x = TRUE`

, the model matrix.y if `y = TRUE`

, the model response.

##### encoding

latin1

##### References

Martens, H., N�s, T. (1989) *Multivariate calibration.*
Chichester: Wiley.

##### See Also

`kernelpls.fit`

,
`simpls.fit`

,
`oscorespls.fit`

,
`svdpc.fit`

,
`mvrCv`

,
`crossval`

,
`loadings`

,
`scores`

,
`loading.weights`

,
`coef.mvr`

,
`predict.mvr`

,
`R2`

,
`MSEP`

,
`RMSEP`

,
`plot.mvr`

##### Examples

```
data(NIR)
## Default methods:
NIR.pcr <- pcr(y ~ X, 6, data = NIR, validation = "CV")
NIR.pls <- plsr(y ~ X, 6, data = NIR, validation = "CV")
## Alternative methods:
NIR.oscorespls <- mvr(y ~ X, 6, data = NIR, validation = "CV",
method = "oscorespls")
NIR.simpls <- mvr(y ~ X, 6, data = NIR, validation = "CV",
method = "simpls")
data(sensory)
Pn <- scale(sensory$Panel)
Ql <- scale(sensory$Quality)
sens.pcr <- pcr(Ql ~ Pn, ncomp = 4)
sens.pls <- plsr(Ql ~ Pn, ncomp = 4)
```

*Documentation reproduced from package pls, version 1.2-1, License: GPL version 2*