The first step in the PLS Regression is to calculate the weights, and as we said, there is one weight for every term of the regression, and we get them in the pls argument $weights, so in the case of the regression of the previous post the first weight is:
Now we have to project our samples spectra over this first weight to get the scores that we store in a vector "t_1", and with all the vectors (t_1, t_2,...., t_a) we will get the "T" matrix of pls scores.
To project the samples is a matrix multiplication:
Where X is the spectra matrix treated with MSC and centered and w1 is the first weight.
As you know, to multiply matrices the number of columns of the first matrix must be the same as the number of rows of the second matrix.
So let´s check if our calculated values are the same as the PLS regression scores for the first PLS term:
t1_pls<-X_msc_centered[odd,] %*% Xodd_pls3_w1
#We get TRUE for all the values