I have a PLS model made in R with plsr() function (from package pls); I have chosen the right number of components with cross validation and it runs fine, with high levels of R^2_predicted (>0,85 which is reasonably good for my application). I was trying to check if the model built under R it's the same I can get with Minitab when analyzing the same data set with the PLS regression tool

(Menu Stat -> Regression -> PLS).

I'm using exactly the same data set in R and in Minitab but no way to obtain the same model: when I compare the coefficients in the R model using

coef(PLS_model, ncomp = N_selected, intercept = TRUE)

with the output from Minitab (Coefficents table) I get different results.

I have tried several algorithms (kernelpls, simpls, oscorespls which all can be used in function plsr()) and also different functions (like pls1_nipals() from package chemometrics) but they all give very similar answers and none of them goes close the Minitab output. According to the manuals, Minitab should use the NIPALS algorithm, as oscorespls also does.

The models are built with the following syntax for package pls:

PLS_model_a = plsr(Y~., data=train_data, n_comp_max=20, validation="LOO", method="kernelpls")

and this one for package "chemometrics":

PLS_model_b = pls1_nipals(X, Y, 20,)

The model generated in these two ways are identical but for both of them the coefficients differ significantly from the Minitab output. Please note that also the Minitab model is a good one with high R^2_pred.

Anyone tried to do the same comparison? Any suggestion? Thanks for your help!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.