R:偏最小二乘回归

时间:2015-04-15 19:13:31

标签: r statistics

如何获得用于计算R中pls分量的每个步骤中使用的X和Y矩阵?

我知道下面的命令会给k个pls组件

library(pls)
plsr(Y ~ ., ncomp=k,   data=as.data.frame(X), scale=TRUE, validation="LOO")

但有没有办法使用以下命令按k次恢复k个pls组件?

plsr(Y ~ ., ncomp=1,   data=as.data.frame(X), scale=TRUE, validation="LOO")   

1 个答案:

答案 0 :(得分:0)

根据基于得分和加载向量的偏最小二乘法的每一步的更新规则,可以尝试一次生成一个pls组件.'trainx'是包含协变量的矩阵,'trainy'是响应变量矩阵。

require("pls")
require('chemometrics')    

pls_s1<-pls1_nipals(trainx,trainy,a=1,scale=TRUE)
pls_s11<-plsr(trainy~., data=as.data.frame(trainx),ncomp=1,scale=TRUE)
yscores[,kk]<-Yscores(pls_s11)
yloadings[kk]<-Yloadings(pls_s11)
T[,kk]<-pls_s1$T
P[,kk]<-pls_s1$P
X=scale(trainx)-T[,kk]%*%t(P[,kk])
Y=scale(trainy)-nn1$predictions%*%t(yloadings[kk])
pls_rs<-pls1_nipals(X,Y,a=1,scale=FALSE)
pls_rs1<-plsr(Y~., data=as.data.frame(X),ncomp=1,scale=TRUE)
yscores[,kk]<-Yscores(pls_rs1)
yloadings[kk]<-Yloadings(pls_rs1)
T[,kk]<-pls_rs$T
P[,kk]<-pls_rs$P
X=scale(X,scale=FALSE)-T[,kk]%*%t(P[,kk])
Y=scale(Y,scale=FALSE)-nnrs1$predictions%*%t(yloadings[kk])

并以同样的方式继续......