赖江山的博客分享 http://blog.sciencenet.cn/u/laijiangshan 生态、统计与R语言

博文

如何在R里面实现偏最小二乘回归法(partial least squares 回归

已有 25471 次阅读 2016-12-20 16:04 |系统分类:科研笔记| 偏最小二乘回归

偏最小二乘回归法(为什么用这个名字我还搞不清楚)用于处理环境因子变量多于样本量多元线性回归情况。普通的多元线性回归,环境因子的数量一定要小于样本量,不然求不出那么多回归系数,那怎么办?只能先通过主成分分析或因子分析方法来处理这个问题:即先通过主成分(或因子分析)获取原始环境变量的线性组合(即新的变量),这样用新的变量代替原来的变量,一减少了变量的个数,就可以求出回归系数,然后在通过回归系数与因子的荷载量再来求响应变量与原始环境因子之间的系数。偏最小二乘回归法与普通做法(先不管响应变量y,然后先主成分分析,然后做直接拿主成分做回归)的区别在于前者在主成分分析过程充分考虑到响应变量的角色,即得到的主成分是要让响应变量与主成分之间的回归R2最大,而不是普通的主成分那样让前两几轴承载更多的方差。

偏最小二乘回归法在R里面用pls程序包来运行。


install.packages("pls")

library(pls)

n <- 50

x1 <- rnorm(n); xx1 <- scale(x1)

x2 <- rnorm(n); xx2 <- scale(x2)

y <- x1 + x2 + rnorm(n,0,0.1); yy <- scale(y)

p <- plsr(yy ~ xx1+xx2, ncomp=1)

#这一步是PLS的语句,xx1,xx2代表解释变量,这里是两个解释变量,也可以多个解释变量,yy是响应变量,可以是向量,也可以是矩阵,其实根本不必看前面这些代码, PLS就这个代码就能搞定,不必管上下这些代码,都是解释性的。

#

( w <- loading.weights(p) )#看这个主成分与原始xx1与xx2之间的回归系数

a <- w["xx1",]

b <- w["xx2",]

a^2+b^2

cor(y, a*xx1+b*xx2)#a,b是如何确定的,就是让这个回归系数最大,也就是带有主成分回归模型R方最大

p$coef #这样就获取了yy跟xx1与xx2之间的回归系数的回归系数,如何获取的,请看下面的分析

x <- a*xx1+b*xx2

coef(lm(yy~0+x))

coef(lm(yy~0+x))*a

coef(lm(yy~0+x))*b

#有了上面这个系数,可以顺利写出yy跟xx1与xx2之间的回归回归方程





https://blog.sciencenet.cn/blog-267448-1022010.html

上一篇:R里面legend图例位置调整函数inset
下一篇:PCNM(邻体矩阵主坐标分析)
收藏 IP: 123.118.208.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-22 16:42

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部