Learn R Programming

pls (version 2.3-0)

cppls.fit: CPPLS (Indahl et al.)

Description

Fits a PLS model using the CPPLS algorithm.

Usage

cppls.fit(X, Y, ncomp, Y.add = NULL, stripped = FALSE, lower = 0.5, upper = 0.5, trunc.pow = FALSE, weights = NULL, ...)

Arguments

X
a matrix of observations. NAs and Infs are not allowed.
Y
a vector or matrix of responses. NAs and Infs are not allowed.
ncomp
the number of components to be used in the modelling.
Y.add
a vector or matrix of additional responses containing relevant information about the observations.
stripped
logical. If TRUE the calculations are stripped as much as possible for speed; this is meant for use with cross-validation or simulations when only the coefficients are needed. Defaults to FALSE.
lower
a vector of lower limits for power optimisation. Defaults to 0.5.
upper
a vector of upper limits for power optimisation. Defaults to 0.5.
trunc.pow
logical . If TRUE an experimental alternative power algorithm is used. (Optional)
weights
a vector of individual weights for the observations. (Optional)
...
other arguments. Currently ignored.

Value

  • A list containing the following components is returned:
  • coefficientsan array of regression coefficients for 1, ..., ncomp components. The dimensions of coefficients are c(nvar, npred, ncomp) with nvar the number of X variables and npred the number of variables to be predicted in Y.
  • scoresa matrix of scores.
  • loadingsa matrix of loadings.
  • loading.weightsa matrix of loading weights.
  • Yscoresa matrix of Y-scores.
  • Yloadingsa matrix of Y-loadings.
  • projectionthe projection matrix used to convert X to scores.
  • Xmeansa vector of means of the X variables.
  • Ymeansa vector of means of the Y variables.
  • fitted.valuesan array of fitted values. The dimensions of fitted.values are c(nobj, npred, ncomp) with nobj the number samples and npred the number of Y variables.
  • residualsan array of regression residuals. It has the same dimensions as fitted.values.
  • Xvara vector with the amount of X-variance explained by each number of components.
  • Xtotvartotal variance in X.
  • gammasgamma-values obtained in power optimisation.
  • canonical.correlationsCanonical correlation values from the calculations of loading weights.
  • Amatrix containing vectors of weights a from canonical correlation (cor(Za,Yb)).
  • smallNormsvector of indices of explanatory variables of length close to or equal to 0.
  • If stripped is TRUE, only the components coefficients, Xmeans, Ymeans and gammas are returned.

encoding

latin1

Details

This function should not be called directly, but through the generic functions cppls or mvr with the argument method="cppls". Canonical Powered PLS (CPPLS) is a generalisation of PLS incorporating discrete and continuous responses (also simultaneously), additional responses, individual weighting of observations and power methodology for sharpening focus on groups of variables. Depending on the input to cppls it can produce the following special cases:
  • PLS: uni-response continuousY
  • PPLS: uni-response continuousY,(lower || upper) != 0.5
  • PLS-DA (using correlation maximisation - B/W): dummy-coded descrete responseY
  • PPLS-DA: dummy-coded descrete responseY,(lower || upper) != 0.5
  • CPLS: multi-responseY(continuous, discrete or combination)
  • CPPLS: multi-responseY(continuous, discrete or combination),(lower || upper) != 0.5
The name "canonical" comes from canonical correlation analysis which is used when calculating vectors of loading weights, while "powered" refers to a reparameterisation of the vectors of loading weights which can be optimised over a given interval.

References

Indahl, U. (2005) A twist to partial least squares regression. Journal of Chemometrics, 19, 32--44. Liland, K.H and Indahl, U.G (2009) Powered partial least squares discriminant analysis, Journal of Chemometrics, 23, 7--18.

Indahl, U.G., Liland, K.H. and N�s, T. (2009) Canonical partial least squares - a unified PLS approach to classification and regression problems. Journal of Chemometrics, 23, 495--504.

See Also

mvr plsr pcr widekernelpls.fit simpls.fit oscorespls.fit

Examples

Run this code
data(mayonnaise)
# Create dummy response
mayonnaise$dummy <- I(model.matrix(~y-1, data.frame(y=factor(mayonnaise$oil.type))))

# Predict CPLS scores for test data
may.cpls <- cppls(dummy ~ NIR, 10, data = mayonnaise, subset = train)
may.test <- predict(may.cpls, newdata = mayonnaise[!mayonnaise$train,], type = "score")

# Predict CPLS scores for test data (experimental used design as additional Y information)
may.cpls.yadd <- cppls(dummy ~ NIR, 10, data = mayonnaise, subset = train, Y.add=design)
may.test.yadd <- predict(may.cpls.yadd, newdata = mayonnaise[!mayonnaise$train,], type = "score")

# Classification by linear discriminant analysis (LDA)
library(MASS)
error <- matrix(ncol = 10,nrow = 2)
dimnames(error) <- list(Model=c('CPLS','CPLS (Y.add)'), ncomp=1:10)
for(i in 1:10){
  error[1,i] <- ( 42 - sum(predict(lda(oil.type ~ NIR.score,
    data = data.frame(oil.type = mayonnaise$oil.type[ mayonnaise$train ], NIR.score = I(may.cpls$scores[,1:i,drop=FALSE]))),
    newdata = data.frame(NIR.score = I(may.test[,1:i,drop=FALSE])))$class == mayonnaise$oil.type[!mayonnaise$train])) / 42
  error[2,i] <- ( 42 - sum(predict(lda(oil.type ~ NIR.score,
    data = data.frame(oil.type = mayonnaise$oil.type[mayonnaise$train], NIR.score = I(may.cpls.yadd$scores[,1:i,drop=FALSE]))),
    newdata = data.frame(NIR.score = I(may.test.yadd[,1:i,drop=FALSE])))$class == mayonnaise$oil.type[!mayonnaise$train])) / 42
}
round(error,2)

Run the code above in your browser using DataLab