我有一个用plsr()
函数在R中制成的PLS模型(来自软件包pls
);我通过交叉验证选择了正确数量的组件,并且运行良好,R^2_predicted
的级别很高(> 0.85,这对我的应用程序来说是相当不错的)。
我试图检查使用PLS
回归工具分析相同数据集时,在R下构建的模型是否与Minitab可以得到的模型相同
(菜单状态->回归-> PLS )。
我正在R和Minitab中使用完全相同的数据集,但无法获得相同的模型:当我使用
比较R模型中的系数时coef(PLS_model, ncomp = N_selected, intercept = TRUE)
使用Minitab(Coefficents
表)的输出,我得到了不同的结果。
我尝试了几种算法(kernelpls
,simpls
,oscorespls
,它们都可以在函数plsr()
中使用)以及不同的函数(例如pls1_nipals()
来自软件包chemometrics
),但它们都给出了非常相似的答案,而且都没有关闭Minitab输出。
根据手册,Minitab应该使用NIPALS算法,oscorespls
也会这样做。
使用以下语法为软件包pls
构建模型:
PLS_model_a = plsr(Y~., data=train_data, n_comp_max=20, validation="LOO", method="kernelpls")
和此软件包“化学计量学” :
PLS_model_b = pls1_nipals(X, Y, 20,)
以这两种方式生成的模型是相同的,但是对于这两种方式,其系数与Minitab输出有显着差异。请注意,Minitab模型也是R^2_pred
高的好模型。
有人试图做同样的比较吗?有什么建议吗? 感谢您的帮助!