如何用R语言做线性回归?

说明:斜体为R语言代码

01数据准备:下载数据集

在进行线性回归模拟之前,我们需先准备具有线性关系的数据集。

这里以机械工业出版社出版出版的丘祐玮著的《数据科学:R语言实现 (数据科学与工程技术丛书)》中的房屋租赁数据集为例,数据下载网址为https:// raw. GitHubusercontent. com/ ywchiu/ rcookbook/ master/ chapter11/ house_ rental. csv。

从该网页下载的数据需转存到R语言可读取格式的文件中。这里我们以csv文件格式为例,进行介绍,将数据集存储为house_rental.csv。

注:以上网页数据若直接粘贴至excel文件再转存为csv文件时,不能分列粘贴,需要将数据按分隔符“,”分列,将每列数据存储在不同的列中。

或者可以关注后,在后台回复house_rental 获取分列存储的csv文件。

将上述文件存储在R的工作目录中,或者将R的工作目录设置为上述文件的存储路径。关于R工作目录的修改和查询见本公众号之前发布的文章:000 R工作目录

02读取csv文件

R读取csv文件的函数为 read.csv(‘文件名.csv’,header = TRUE)。
注:文件名需用英文单引号’’包围。
例:
> house <- read.csv(‘house_rental.csv’, header = TRUE)

03用函数lm()拟合线性回归

函数lm()的使用形式为:lm(因变量~自变量, data)。
回归模型函数lm()可以响应~变量的形式。

例:拟合house_rental数据集中Price与Sqft变量的关系,其中Sqft为自变量,Price为因变量。
> lmfit <- lm(Price ~ Sqft, data = house)
输出拟合结果:
> lmfit

Call:
lm(formula = Price ~ Sqft, data = house)

Coefficients:
(Intercept) Sqft
3425.13 38.33

输出结果显示:截距为3425.13,自变量Sqft对应的系数为38.33.即:Price=3425.13+38.33*Sqft

04画出趋势线

03中输出的拟合结果仅是函数表达式,为了更直观地观察Price和Sqft的关系,我们画出散点图和趋势线。
画散点图:

plot(Price ~ Sqft, data = house)
输出结果:
如何用R语言做线性回归?_第1张图片
画趋势线:使用函数abline(),该函数可以在当前图形上画出一条或多条直线。

> abline(lmfit, color = ‘red’)
输出结果:
如何用R语言做线性回归?_第2张图片

05使用函数summary()获取格式化的拟合结果

> summary(lmfit)

Call:
lm(formula = Price ~ Sqft, data = house)

Residuals:
Min 1Q Median 3Q Max
-76819 -12388 -3093 10024 112227

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3425.133 1766.646 1.939 0.053 .
Sqft 38.334 1.034 37.090 <2e-16 ***

Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 20130 on 643 degrees of freedom
Multiple R-squared: 0.6815, Adjusted R-squared: 0.681
F-statistic: 1376 on 1 and 643 DF, p-value: < 2.2e-16

在决定拟合模型是否可行时,我们主要看拟合的截距Intercept和自变量系数对应的p-value(Pr)。

根据显著性水平(一般取0.05或0.01),若p-value小于既定的显著性水平(此例中p-value: < 2.2e-16 < 0.01),说明拒绝原假设H0(斜率为0),接受备择假设(此例中为斜率为38.3340)。

也可以根据显著性水平检验结果——确定性系数R^2判定模型拟合的优劣,一元线性回归中R方等于皮尔逊积矩相关系数(Pearson product moment correlation coefficient 或Pearson’s r)的平方。这种方法计算的R方一定介于0~1之间的正数,该数值越接近于1,说明拟合效果越理想。在一般问题中,R-squared达到0.8以上,回归模型即可接受。

此例中的Multiple R-squared为0.6815,虽然拟合结果没有特别理想,但也可以接受,另外,根据p-value,拟合结果也可以接受。

degrees of freedom = n-2,此例中共有645条数据。

06练习

可以使用某短视频网站话题数~视频数数据练习线性回归模型。

在后台回复**‘topic_video**’获取对应csv数据集。

你可能感兴趣的:(如何用R语言做线性回归?)