我有一个用 R 制作的带有plsr()
功能的 PLS 模型(来自 package 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
它们都可以在 function 中使用plsr()
)以及不同的函数(例如pls1_nipals()
from package chemometrics
),但它们都给出了非常相似的答案,并且没有一个接近 Minitab 输出。根据手册,Minitab 应该使用 NIPALS 算法,oscorespls
同样如此。
这些模型是使用以下语法构建的 package 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
。
有人尝试过同样的比较吗?有什么建议吗?谢谢你的帮助!