R中的PLS:提取PRESS统计值

时间:2015-12-29 12:37:21

标签: r pls

我对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包文档和整个网络,但遗憾的是无法找到答案。如果有人在这里可以帮助我朝着正确的方向前进,那将非常感激!

1 个答案:

答案 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.