This code does not calculate the scale scores using PLS weights, but instead applies numerical optimization (by default BFGS) to maximize or minimize an optimization criterion. The default criterion is to maximize the R2 of the regression between the scale scores, but I have also implemented other criteria and it is easy to implement your own.
When the data are very reliable, then indicator weighting does not matter much. You can check this by comparing all the indicator weight systems implemented in matrixpls:
cbind(matrixpls(cov(PoliticalDemocracy),model, weightFun = weightFun.optim),
matrixpls(cov(PoliticalDemocracy),model, weightFun = weightFun.fixed),
matrixpls(cov(PoliticalDemocracy),model, weightFun = weightFun.pls),
matrixpls(cov(PoliticalDemocracy),model, weightFun = weightFun.principal),
matrixpls(cov(PoliticalDemocracy),model, weightFun = weightFun.factor))
They all produce nearly identical results.
[,1] [,2] [,3] [,4] [,5]
dem60~ind60 0.46193397 0.3931697 0.4027185 0.3962893 0.4252621
dem65~ind60 0.19440196 0.2004695 0.1960200 0.1964309 0.1710589
dem65~dem60 0.77472958 0.7823229 0.7858439 0.7844442 0.7860951
Note that PLS weights have important problems that you should be aware of. See for example here:
I am pretty sure that all the problems of PLS weights apply also if you optimize the weights to maximize R2, but I do not think that anyone has studied this.
Mikko