温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

R语言怎么实现一元线性回归

发布时间:2022-01-05 15:58:30 来源:亿速云 阅读:326 作者:iii 栏目:大数据

本篇内容主要讲解“R语言怎么实现一元线性回归”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“R语言怎么实现一元线性回归”吧!

⑴简单线性回归

首先可以考虑最简单的情况,也即只有一个自变量和一个因变量。我们使用  R  自带的数据集  women  为例进行分析,  women  数据集中包含了  15  个年龄  30~39  岁的女性身高和体重信息,如下所示:

R语言怎么实现一元线性回归

现实生活中身高是更容易观测的一个量,现在我们基于这些数据建模,通过身高来预测体重,如下所示:

fit=lm(weight~height, data=women)summary(fit)

R语言怎么实现一元线性回归

在上面summary的结果中,Residuals为响应变量的残差情况;Coefficients为系数也即模型参数及其检验结果,其中Intercept为截距;最后一部分为复相关系数的平方也即R2的值及其检验结果。

接下来我们可以分别列出因变量观察值、拟合值、残差:

R语言怎么实现一元线性回归

对于回归模型我们可以进行作图展示:
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))
作图结果如下所示:

R语言怎么实现一元线性回归

回归模型构建后,必须要做模型诊断,来对其中的基础假设(正态性、独立性、线性、同方差性)进行检验,从而增强对其预测未知数据的信心。回归诊断最简单的一个方法就是将模型各种情况进行可视化,如下所示:

par(mfrow=c(2,2))plot(fit)
如下图所示:第一幅图是残差随拟合值的变化情况,可以检验线性假设,理论上来说如果线性模型十分吻合,残差应该是均匀分布的(也即残差与拟合值是无关的,红线近似水平),而图中的情况暗示很可能存在更高次项的相关。第二幅图是检验残差正态性假设的  Q-Q  图,根据正态性假设,当预测变量值固定时,因变量围绕拟合值(预测值)呈正态分布,那么残差应该服从均值为  0  的正态分布(即图中的点尽可能落在虚线上)。第三幅图是标准化残差绝对值的平方根随拟合值的变化情况,用来检验同方差性假设,如果满足假设,也即不同自变量水平下因变量方差是一样的,那么图中数据点应该是均匀分布的(红线近似水平)。第四幅图用来筛选离群点(包括因变量和自变量),一个点代表一个样品(对象),纵轴为标准化的残差,绝对值越大说明其因变量值与拟合值差别越大,横轴为杠杆值,杠杆值越大说明在自变量中是一个离群点。

R语言怎么实现一元线性回归

⑵多项式回归

虽然各种检验结果均是显著的,但是上面的结果并不是很完美,因为我们从数据点的分布很明显看出weight关于height不完全是线性关系,这时候我们可以添加一个二次项来进行多项式回归

fit2=lm(weight~height+I(height^2), data=women)summary(fit2)

R语言怎么实现一元线性回归

这时的回归方程为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))

R语言怎么实现一元线性回归

可以看出,在  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语言怎么实现一元线性回归

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI