Question about rescaling in plsregress()

11 views (last 30 days)
Mads
Mads on 18 Jul 2012
I trying to do Partial Least Squares regression (PLSR) by using the plsregress() function in matlab on two datamatrices X and Y. I have also done extracted factors by Principal Component Analysis (PCA) by the function princomp(). In PCA I understand that the factors depend upon whether X is rescaled by zscore() or not. However, to my knowledge, the factors/Xscores extracted by plsregress() shouldn't differ when X and Y are rescaled, since the algorithm deflates X and Y, but when I use plsregress(), the results does depend upon whether X and Y have been rescaled.
Am I wrong? And if so, is it because plsregress() uses SIMPLS and not NIPALS?
Thanks!
Mads

Answers (1)

Ilya
Ilya on 18 Jul 2012
I am no expert on SIMPLS vs NIPALS. But the doc for plsregress states that
XLOADINGS = X0'*XSCORES
(with a similar relationship for Y), and X0 is centered but not scaled. So if you change the scale for X0, this change must propagate either into the loadings or scores.
Deflation amounts to orthogonalization; it can be performed on scaled or unscaled variables.
  1 Comment
Mads
Mads on 19 Jul 2012
Thanks for the answer!
I didn't know that deflation refered to orthogonalization. Accepting that rescaling change the loadings and scores, I am now in doubt what would be the wisest choice, when it comes to interpret the scores in terms of the original variables. In Principal component analysisi (PCA) the weights are very sensitive to the scaling of the variables. That is the result depends on whether a variable is measured in grams or kilo grams, as an example, but rescaling removes this problem. Is this also a problem in partial least squares regression?
cheers,
Mads

Sign in to comment.

Categories

Find more on Dimensionality Reduction and Feature Extraction in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!