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.

  • 6
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值