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!