Documentation 
Partial leastsquares regression
[XL,YL] = plsregress(X,Y,ncomp)
[XL,YL,XS] = plsregress(X,Y,ncomp)
[XL,YL,XS,YS] = plsregress(X,Y,ncomp)
[XL,YL,XS,YS,BETA] = PLSREGRESS(X,Y,ncomp,...)
[XL,YL,XS,YS,BETA,PCTVAR] = plsregress(X,Y,ncomp)
[XL,YL,XS,YS,BETA,PCTVAR,MSE] = plsregress(X,Y,ncomp)
[XL,YL,XS,YS,BETA,PCTVAR,MSE] = plsregress(...,param1,val1,param2,val2,...)
[XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] = PLSREGRESS(X,Y,ncomp,...)
[XL,YL] = plsregress(X,Y,ncomp) computes a partial leastsquares (PLS) regression of Y on X, using ncomp PLS components, and returns the predictor and response loadings in XL and YL, respectively. X is an nbyp matrix of predictor variables, with rows corresponding to observations and columns to variables. Y is an nbym response matrix. XL is a pbyncomp matrix of predictor loadings, where each row contains coefficients that define a linear combination of PLS components that approximate the original predictor variables. YL is an mbyncomp matrix of response loadings, where each row contains coefficients that define a linear combination of PLS components that approximate the original response variables.
[XL,YL,XS] = plsregress(X,Y,ncomp) returns the predictor scores XS, that is, the PLS components that are linear combinations of the variables in X. XS is an nbyncomp orthonormal matrix with rows corresponding to observations and columns to components.
[XL,YL,XS,YS] = plsregress(X,Y,ncomp) returns the response scores YS, that is, the linear combinations of the responses with which the PLS components XS have maximum covariance. YS is an nbyncomp matrix with rows corresponding to observations and columns to components. YS is neither orthogonal nor normalized.
plsregress uses the SIMPLS algorithm, first centering X and Y by subtracting off column means to get centered variables X0 and Y0. However, it does not rescale the columns. To perform PLS with standardized variables, use zscore to normalize X and Y.
If ncomp is omitted, its default value is min(size(X,1)1,size(X,2)).
The relationships between the scores, loadings, and centered variables X0 and Y0 are:
XL = (XS\X0)' = X0'*XS,
YL = (XS\Y0)' = Y0'*XS,
XL and YL are the coefficients from regressing X0 and Y0 on XS, and XS*XL' and XS*YL' are the PLS approximations to X0 and Y0.
plsregress initially computes YS as:
YS = Y0*YL = Y0*Y0'*XS,
By convention, however, plsregress then orthogonalizes each column of YS with respect to preceding columns of XS, so that XS'*YS is lower triangular.
[XL,YL,XS,YS,BETA] = PLSREGRESS(X,Y,ncomp,...) returns the PLS regression coefficients BETA. BETA is a (p+1)bym matrix, containing intercept terms in the first row:
Y = [ones(n,1),X]*BETA + Yresiduals,
Y0 = X0*BETA(2:end,:) + Yresiduals. Here Yresiduals is the vector of response residuals.
[XL,YL,XS,YS,BETA,PCTVAR] = plsregress(X,Y,ncomp) returns a 2byncomp matrix PCTVAR containing the percentage of variance explained by the model. The first row of PCTVAR contains the percentage of variance explained in X by each PLS component, and the second row contains the percentage of variance explained in Y.
[XL,YL,XS,YS,BETA,PCTVAR,MSE] = plsregress(X,Y,ncomp) returns a 2by(ncomp+1) matrix MSE containing estimated meansquared errors for PLS models with 0:ncomp components. The first row of MSE contains meansquared errors for the predictor variables in X, and the second row contains meansquared errors for the response variable(s) in Y.
[XL,YL,XS,YS,BETA,PCTVAR,MSE] = plsregress(...,param1,val1,param2,val2,...) specifies optional parameter name/value pairs from the following table to control the calculation of MSE.
Parameter  Value 

'cv'  The method used to compute MSE.
The default is 'resubstitution'. 
'mcreps'  A positive integer indicating the number of MonteCarlo repetitions for crossvalidation. The default value is 1. The value must be 1 if the value of 'cv' is 'resubstitution'. 
options  A structure that specifies whether to run in parallel, and specifies the random stream or streams. Create the options structure with statset. Option fields:

[XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] = PLSREGRESS(X,Y,ncomp,...) returns a structure stats with the following fields:
W — A pbyncomp matrix of PLS weights so that XS = X0*W.
T2 — The T^{2} statistic for each point in XS.
Xresiduals — The predictor residuals, that is, X0XS*XL'.
Yresiduals — The response residuals, that is, Y0XS*YL'.
[1] de Jong, S. "SIMPLS: An Alternative Approach to Partial Least Squares Regression." Chemometrics and Intelligent Laboratory Systems. Vol. 18, 1993, pp. 251–263.
[2] Rosipal, R., and N. Kramer. "Overview and Recent Advances in Partial Least Squares." Subspace, Latent Structure and Feature Selection: Statistical and Optimization Perspectives Workshop (SLSFS 2005), Revised Selected Papers (Lecture Notes in Computer Science 3940). Berlin, Germany: SpringerVerlag, 2006, pp. 34–51.