我对R比较新,目前正在使用pls包构建PLS模型。我有两个相同大小的独立数据集,第一个用于校准模型。对于28个观测,数据集包括多个响应变量(y)和101个解释变量(x)。然而,响应变量将分别包含在PLS模型中。代码电流如下所示:
# load data
data <- read.table("....txt", header=TRUE)
data <- as.data.frame(data)
# define response variables (y)
HEIGHT <- as.numeric(unlist(data[2]))
FBM <- as.numeric(unlist(data[3]))
N <- as.numeric(unlist(data[4]))
C <- as.numeric(unlist(data[5]))
CHL <- as.numeric(unlist(data[6]))
# generate matrix containing the explanatory (x) variables only
spectra <-(data[8:ncol(data)])
# calibrate PLS model using LOO and 20 components
library(pls)
refl.pls <- plsr(N ~ as.matrix(spectra), ncomp=20, validation = "LOO", jackknife = TRUE)
# visualize RMSEP -vs- number of components
plot(RMSEP(refl.pls), legendpos = "topright")
# calculate explained variance for x & y variables
summary(refl.pls)
我现在已经到了我需要为每个响应变量确定要包含在我的PLS模型中的最佳组件数的点。 RMSEP值已经提供了适当的指示。但是,我还想根据与我正在进行的各种研究相比较的各种研究,将我的决定建立在PRESS(预测残差平方和)统计量上。简而言之,我想用 n 组件为每个PLS模型提取PRESS统计量。
我浏览了pls包文档和整个网络,但遗憾的是无法找到答案。如果有人在这里可以帮助我朝着正确的方向前进,那将非常感激!
答案 0 :(得分:0)
您可以在mvr
对象中找到PRESS值。
refl.pls$validation$PRESS
您可以通过直接使用str
浏览对象或更彻底地浏览文档来查看此信息。您会注意到,如果您查看?mvr
,您会看到以下内容:
validation if validation was requested, the results of the
cross-validation. See mvrCv for details.
确实要求验证,因此我们按照?mvrCv
进行验证:
PRESS a matrix of PRESS values for models with 1, ...,
ncomp components. Each row corresponds to one response variable.