R语言实现偏最小二乘分析(PLS)

首先打开Rstudio,点击tools—>global options创建工作环境

这部分设置工作目录,一般数据和结果就放这里面。

a<-read.csv("训练集整合.csv",header = TRUE,sep = ",")//读取数据,数据为.CSV格式(excel另存为.csv)
install.packages("pls")//安装pls包
library(pls)//载入pls包

数据存储格式如上图所示,第一列为因变量,后面几列为自变量,第一行为变量名称(注意:不能有中文!!)

出现如上图所示表示安装成功。

搜索有√表示载入成功。

y<-a[1]//将数据第一列作为因变量
x<-a[2:11]//将2到11列作为自变量
y<-scale(y)//将y数据类型转化为数值型,scale是将数据做标准化,标准化数据直接转化为数值型
x<-scale(x)//将x数据类型转化为数值型
pls1<-plsr(y~x,validation="LOO",jackknife=TRUE)//y对x做回归,验证方式为留一法
summary(pls1)//查看pls回归结果
plot(RMSEP(pls1))//绘制误差图

cv越小越好,确定主成分数为3。

更新pls1

pls1<-plsr(y~x,validation="LOO",ncomp=3,jackknife=TRUE)
summary(pls1)

结果如上图所示,cv代表的是误差,下面x,y表示的是可以解释自变量和因变量的百分比。

loading.weights(pls1)//系数

结果如下图所示:

第一列为主成分为1时的x的系数,其它列以此类推,数据没有是因为太小了显示不出来可以用

c<-loading.weights(pls1)
fix(c)
coef(pls1)

结果如图

上图为标准化后的系数,求原始系数需要将上述系数逆标准化。

x

会出现如下结果

为均值

为标准差

设标准化前的公式为(注意:此公式经过中心化,已经没有常数项)

标准化后公式为

根据公式 表示标准差即可求出标准化前的公式(可能还需要逆中心化,这个我也不清楚)(y的标准差在程序中输入y后就能得到)。更具体的还原方法可见R语言之主成分回归与偏最小二乘xt8.3&xt8.4(这个写的好像有问题)还有偏最小二乘回归方法r语言代码

关于主成分的选取有不同的说法,还有一说是

还有一说是误差稳定的就可以选,知道怎么选的欢迎评论区留言讨论。

参考:

1.PLS R语言操作

2.李小辰. 面向生产线的鱼体新鲜度与形态参数检测技术研究[D].大连工业大学,2020.DOI:10.26992/d.cnki.gdlqc.2020.000504.

3.牛金玉. 基于三维点云的奶牛体尺测量与体重预测方法研究[D].西北农林科技大学,2018.

4.齐琛,方秋莲.偏最小二乘建模在R软件中的实现及实证分析[J].数学理论与应用,2013,33(02):103-111.

猜你喜欢

转载自blog.csdn.net/mengzhilv11/article/details/129113932