本篇内容主要讲解“R语言怎么实现一元线性回归”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“R语言怎么实现一元线性回归”吧!
⑴简单线性回归
首先可以考虑最简单的情况,也即只有一个自变量和一个因变量。我们使用
R
自带的数据集
women
为例进行分析,
women
数据集中包含了
15
个年龄
30~39
岁的女性身高和体重信息,如下所示:
现实生活中身高是更容易观测的一个量,现在我们基于这些数据建模,通过身高来预测体重,如下所示:
fit=lm(weight~height, data=women)summary(fit)

在上面summary的结果中,Residuals为响应变量的残差情况;Coefficients为系数也即模型参数及其检验结果,其中Intercept为截距;最后一部分为复相关系数的平方也即R2的值及其检验结果。
接下来我们可以分别列出因变量观察值、拟合值、残差:
library(ggplot2)ggplot(women, mapping=aes(x=height, y=weight)) + geom_point(size=2) + geom_smooth(method=lm, se=TRUE, fullrange=TRUE, level=0.95) + theme(axis.title=element_text(size=15, color="black", face="bold", vjust=0.5, hjust=0.5))

回归模型构建后,必须要做模型诊断,来对其中的基础假设(正态性、独立性、线性、同方差性)进行检验,从而增强对其预测未知数据的信心。回归诊断最简单的一个方法就是将模型各种情况进行可视化,如下所示:
par(mfrow=c(2,2))plot(fit)
如下图所示:第一幅图是残差随拟合值的变化情况,可以检验线性假设,理论上来说如果线性模型十分吻合,残差应该是均匀分布的(也即残差与拟合值是无关的,红线近似水平),而图中的情况暗示很可能存在更高次项的相关。第二幅图是检验残差正态性假设的
Q-Q
图,根据正态性假设,当预测变量值固定时,因变量围绕拟合值(预测值)呈正态分布,那么残差应该服从均值为
0
的正态分布(即图中的点尽可能落在虚线上)。第三幅图是标准化残差绝对值的平方根随拟合值的变化情况,用来检验同方差性假设,如果满足假设,也即不同自变量水平下因变量方差是一样的,那么图中数据点应该是均匀分布的(红线近似水平)。第四幅图用来筛选离群点(包括因变量和自变量),一个点代表一个样品(对象),纵轴为标准化的残差,绝对值越大说明其因变量值与拟合值差别越大,横轴为杠杆值,杠杆值越大说明在自变量中是一个离群点。
⑵多项式回归
虽然各种检验结果均是显著的,但是上面的结果并不是很完美,因为我们从数据点的分布很明显看出weight关于height不完全是线性关系,这时候我们可以添加一个二次项来进行多项式回归:
fit2=lm(weight~height+I(height^2), data=women)summary(fit2)

这时的回归方程为weight=0.083*height2-7.35*height+261.88。同样我们可以作图展示:
ggplot(women, aes(x=height, y=weight)) + geom_point(size=2) + geom_smooth(method=lm, se=TRUE, formula=y~x+I(x^2)) + theme(axis.title=element_text(size=15, color="black", face="bold", vjust=0.5, hjust=0.5))

可以看出,在
ggplot2
里面通过
geom_smooth()
函数可以很方便的添加数据的回归线。在构造的多项式里,
x
与
x^2
并不一定是独立的,这有可能会产生附加问题,另一种方法是使用
poly()
函数产生正交多项式,如下所示:library(ggplot2)N=300x=1:N+rnorm(N, 10, 60)y=1:N+rnorm(N, 10, 60)colour=sample(c('red','blue'), N, replace=TRUE)df=data.frame(x=x, y=y, colour=colour)ggplot(df, aes(x=x,y=y, colour=colour)) + geom_smooth( method='lm', formula=y~poly(x,3), level=0.95) + geom_point(alpha=0.9)ggplot(df, aes(x=x,y=y, colour=colour)) + geom_smooth( method='lm', formula=y~x+I(x^2)+I(x^3), level=0.95) + geom_point(alpha=0.9)
一般情况下,上面两种作图方法是等价的,最终作图结果如下所示:

到此,相信大家对“R语言怎么实现一元线性回归”有了更深的了解,不妨来实际操作一番吧!这里是天达云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!