线性回归在R |一步一步的指南和例子

线性回归回归模型是指用直线来描述两者之间的关系吗变量.它通过搜索回归系数(s)的值来最小化模型的总误差,从而在数据中找到最佳拟合线。

线性回归主要有两种类型:

在这个分步指南中,我们将使用两个样本数据集引导您在R中进行线性回归。

简单线性回归
第一个数据集包含对500人的假想样本的收入(在1.5万美元到7.5万美元之间)和幸福(在1到10分之间评分)的观察结果。收入值除以10,000,以使收入数据与幸福分数的范围相匹配(因此2美元代表2万美元,3美元代表3万美元,以此类推)。
多元线性回归
第二个数据集包含对500个城镇的假想样本中每天骑自行车上班的人的百分比、吸烟的人的百分比和心脏病患者的百分比的观察结果。

下载样例数据集,自己尝试一下。

简单回归数据集多元回归数据集

从R开始

从下载开始R而且RStudio.然后打开RStudio,点击File >新建文件> R脚本

当我们经历每一步的时候,可以将文本框中的代码直接复制并粘贴到脚本中。要运行代码,突出显示要运行的行然后点击运行按钮在文本编辑器的右上方(或按CTRL + enter在键盘上)。

要安装分析所需的包,运行以下代码(只需要执行一次):

install.packages(“ggplot2”)
install.packages(“dplyr”)
install.packages(“扫帚”)
install.packages(“ggpubr”)

接下来,通过运行以下代码将包加载到R环境中(每次重新启动R时都需要这样做):

库(ggplot2)
库(dplyr)
库(扫帚)
库(ggpubr)

步骤1:将数据加载到R中

对每个数据集执行以下四个步骤:

  1. 在RStudio中,转到从文本导入数据集>(基础)
  2. 选择已下载的资料档案(income.dataheart.data),以及导入数据集弹出窗口。
  3. 数据帧窗口,你应该看到一个X(index)列和列列出每个变量的数据(收入而且幸福骑自行车吸烟,heart.disease).
  4. 点击进口按钮,该文件将出现在您的环境选项卡在RStudio屏幕的右上角。

加载数据之后,检查是否正确地读取了数据总结()

简单回归

总结(income.data)

因为两个变量都是定量,当我们运行这个函数时,我们会在控制台中看到一个包含数据的数字摘要的表。它告诉我们最小值,中位数的意思是,自变量(收入)和因变量(幸福)的最大值:

简单线性回归汇总输出R

多元回归

总结(heart.data)

同样,因为变量是定量的,所以运行代码会生成一个数值总结的数据独立变量(吸烟和骑自行车)和因变量(心脏病):

R中的多元回归汇总输出

防止抄袭,运行免费检查。

免费尝试

步骤2:确保你的数据符合假设

我们可以使用R来检查我们的数据是否满足这四个主要要求线性回归的假设

简单回归

  1. 观察的独立性(即无自相关)

因为我们只有一个自变量和一个因变量,所以我们不需要测试变量之间的任何隐藏关系。

如果你知道变量之间存在自相关性(即同一测试对象的多个观察结果),那么不要进行简单的线性回归!应该使用结构化模型,比如线性混合效应模型。

  1. 正常

检查因变量是否遵循a正态分布,使用嘘()函数。

嘘(income.data幸福美元)

简单回归直方图

观察结果大致呈钟形(分布中间的观察结果更多,尾部的观察结果更少),因此我们可以继续进行线性回归。

  1. 线性

自变量和因变量之间必须是线性关系。我们可以用散点图进行直观测试,看看数据点的分布是否可以用直线来描述。

图(幸福~收入,数据=收入。data)

简单回归散点图

这种关系看起来大致是线性的,所以我们可以继续使用线性模型。

  1. 方差齐性(又名同质性方差

这意味着预测误差在模型的预测范围内没有显著变化。在拟合线性模型之后,我们可以验证这个假设。

多元回归

  1. 观察的独立性(即无自相关)

使用和()函数测试自变量之间的关系,并确保它们不是高度相关的。

软木(心。数据元骑自行车,heart.data吸烟美元)

当我们运行这段代码时,输出是0.015。的相关骑车和吸烟之间的相关性很小(0.015只有1.5%的相关性),所以我们可以把这两个参数都包括在我们的模型中。

  1. 正常

使用嘘()函数来测试你的因变量是否遵循正态分布

嘘(heart.data heart.disease美元)

多元回归直方图

观测值的分布大致呈钟形,因此我们可以进行线性回归。

  1. 线性

我们可以用两个散点图来检验这一点:一个是关于骑自行车和心脏病的,另一个是关于吸烟和心脏病的。

情节(心。疾病~骑自行车,data=heart.data)

1 .多元回归散点图

情节(心。疾病~吸烟,data=心脏。data)

多元回归散点图

虽然吸烟和心脏病之间的关系还不太清楚,但它仍然是线性的。我们可以用线性回归。

  1. 方差齐性

我们将检查这之后,我们使模型。

第三步:进行线性回归分析

既然确定了数据符合假设,就可以执行线性回归分析来评估自变量和因变量之间的关系。

简单回归:收入和幸福

让我们来看看收入和幸福之间是否存在线性关系。我们对500名收入在1.5万美元到7.5万美元之间的人进行了调查,幸福感以1到10的等级来衡量。

要执行简单的线性回归分析并检查结果,需要运行两行代码。第一行代码创建线性模型,第二行输出模型的摘要:

income.happiness.lm <- lm(happiness ~ income, data = income.data) summary(income.happiness.lm)

输出如下所示:

简单回归结果

这个输出表首先给出模型方程,然后总结模型残差(见步骤4)。

系数节将展示:

  1. 预算(估计)为模型参数- y截距的值(在这种情况下为0.204)和收入对幸福的估计影响(0.713)。
  2. 标准错误的估计值(性病。错误).
  3. 检验统计量t价值,在这种情况下t统计).
  4. p价值Pr(>| t |)),也就是找到给定值的概率t统计如果零假设没有任何关系是真实的。

最后三行是模型诊断-要注意的最重要的事情是p价值(这里是2.2e-16,或者几乎为零),这将表明模型是否与数据很好地吻合。

从这些结果来看,我们可以说存在一个显著正相关在收入和幸福之间(p值< 0.001),收入每增加一个单位,幸福感就增加0.713个单位(+/- 0.01)。

多重回归:骑自行车、吸烟和心脏病

让我们来看看在我们对500个城镇的假想调查中,骑自行车上班、吸烟和心脏病之间是否存在线性关系。骑自行车上班的比例在1%到75%之间,吸烟的比例在0.5%到30%之间,心脏病的比例在0.5%到20.5%之间。

为了检验这种关系,我们首先拟合一个线性模型,以心脏病为因变量,骑自行车和吸烟为自变量。运行这两行代码:

heart.disease.lm < - lm(心。疾病~骑自行车+吸烟,data = heart.data)总结(heart.disease.lm)

输出如下所示:

多元回归结果

据估计,骑自行车对心脏病的影响为-0.2,而吸烟对心脏病的影响为0.178。

这意味着骑自行车上班的人数每增加1%,心脏病的发病率就会相应降低0.2%。同时,吸烟率每增加1%,心脏病发病率就会增加0.178%。

这些回归系数的标准误差非常小t统计数据非常大(分别为-147和50.4)。的p数值反映了这些小误差和大误差t统计数据。对于这两个参数,这种效应是偶然的可能性几乎为零。

请记住,这些数据是为这个例子而编造的,所以在现实生活中,这些关系不会这么清楚!

第四步:检查同方差

在进行数据可视化之前,我们应该确保我们的模型符合线性模型的同方差假设。

简单回归

我们可以跑情节(income.happiness.lm)为了检验观察到的数据是否符合我们的模型假设:

票面价值(mfrow = c (2, 2))
情节(income.happiness.lm)
票面价值(mfrow = c (1,1))

注意票面价值(mfrow ())命令将划分情节窗口转换为括号中指定的行数和列数。所以票面价值(mfrow = c (2, 2))把它分成两行两列。若要返回在整个窗口中绘制一个图形,请再次设置参数并将(2,2)替换为(1,1)。

这些是代码生成的残差图:

简单回归诊断图lm

残差是无法解释的方差.它们与模型误差不完全相同,但它们是从模型误差中计算出来的,因此看到残差中的偏差也表明偏见在错误中。

最重要的是,代表残差均值的红线基本上都是水平的,并以零为中心。这意味着没有离群值或者数据中的偏差会使线性回归无效。

正常Q-Qplot在右上方,我们可以看到,我们的模型的实际残差与完美模型的理论残差形成了几乎完美的一对一的直线。

基于这些残差,我们可以说我们的模型满足同方差的假设。

多元回归

再一次,我们应该检查我们的模型实际上很适合数据,并且我们在模型误差中没有很大的变化,通过运行以下代码:

票面价值(mfrow = c (2, 2))
情节(heart.disease.lm)
票面价值(mfrow = c (1,1))

输出如下所示:

多元回归诊断图lm

与我们的简单回归一样,残差显示没有偏差,因此我们可以说我们的模型符合同方差的假设。

第五步:用图表将结果可视化

接下来,我们可以绘制线性回归模型中的数据和回归线,以便共享结果。

简单回归

按照4个步骤来可视化简单线性回归的结果。

  1. 在图表上绘制数据点
income.graph < -ggplot(收入。数据,aes(x=收入,y=幸福))+ geom_point()收入

简单回归散点图

  1. 将线性回归线添加到绘制的数据中

使用添加回归线geom_smooth ()然后输入lm作为创建线条的方法。这将添加线性回归线以及估计的标准误差(在本例中为+/- 0.01),作为线周围的浅灰色条纹:

收入。图<-收入。Graph + geom_smooth(method="lm", col="black"

简单回归线

  1. 为回归线添加方程。
收入。图<-收入。Graph + stat_regline_equation(标签。X = 3,标记。Y = 7)收入

简单回归方程

  1. 为发布做好准备

我们可以使用添加一些样式参数theme_bw ()定制标签使用实验室()

收入。graph + theme_bw() + labs(title =“报告的幸福作为收入的函数”,x =“收入(x$10,000)”,y =“幸福得分(0到10)”)

这将生成你可以在论文中包含的最终图表:

简单线性回归在R图中的例子

多元回归

多元回归的可视化步骤比简单回归更难,因为我们现在有两个预测因子。一种选择是绘制平面,但这些很难阅读,也不经常发表。

我们将尝试一种不同的方法:绘制不同吸烟水平下骑自行车与心脏病之间的关系。在本例中,吸烟将被视为一个具有三个层次的因素,只是为了在我们的数据中显示关系。

这里有7个步骤。

  1. 用绘制模型所需的信息创建一个新的数据框架

使用函数expand.grid ()使用您提供的参数创建一个数据框架。在这个函数中,我们将:

  • 从你观察到的自行车数据的最低到最高的值创建一个序列;
  • 选择吸烟的最小值、平均值和最大值,以确定3个吸烟水平来预测心脏病的发病率。
plotting.data <扩大。网格(骑行= seq(min(heart.data$ bikes), max(heart.data$ bikes), length.out=30),吸烟=c(min(heart.data$smoking), mean(heart.data$smoking), max(heart.data$smoking)))

这样做不会在控制台中创建任何新内容,但应该会在控件中看到一个新的数据帧环境选项卡。点击查看。

  1. 根据你的线性模型预测心脏病的值

接下来,我们将把我们的“预测y”值保存为我们刚刚创建的数据集中的新列。

plotting.data预测美元。Y <- predict.lm(心脏。疾病。lm, newdata = plotting.data)
  1. 吸烟的数字四舍五入为两位小数

这将使图例稍后更容易阅读。

策划。数据$smoking <- round(绘图。数据$吸烟,数字= 2)
  1. 将“吸烟”变量改为一个因子

这让我们可以绘制出在我们选择的三种吸烟水平下,骑自行车和心脏病之间的相互作用。

策划。Data $smoking <- as.factor(plot . Data $smoking)
  1. 绘制原始数据
的心。plot <- ggplot(heart.data, aes(x=biking, y=heart.disease)) + geom_point() heart.plot

多元线性回归散点图

  1. 添加回归线
的心。plot <- heart.plot + geom_line(data=plotting.data, aes(x=biking, y=predicted.y, color=smoking), size=1.25) heart.plot

多条回归线

  1. 为发布做好准备
的心。plot <- heart.plot + theme_bw() + labs(title = "Rates of heart disease (% of population) \n as a function of biking to work and smoking", x = "Biking to work (% of population)", y = "Heart disease (% of population)", color = "Smoking \n (% of population)") heart.plot

R图的多元回归

因为这个图有两个回归系数stat_regline_equation ()函数在这里不起作用。但如果我们想要将我们的回归模型添加到图中,我们可以这样做:

的心。plot + annotate(geom="text", x=30, y=1.75, label=" = 15 + (-0.2*biking) + (0.178*smoking)")

这是完成的图表,你可以包括在你的论文!

第六步:报告结果

除了图表之外,还包括一个简短的说明,解释回归模型的结果。

报告简单线性回归的结果
我们发现收入和幸福之间有显著的关系。p< 0.001,R 2= 0.73±0.0193),收入每增加1万美元,幸福感就会增加0.73个单位。
报告多元线性回归结果
在我们对500个城镇的调查中,我们发现骑自行车上班的频率与心脏病的频率、吸烟的频率和心脏病的频率之间存在显著的关系。p< 0和p分别< 0.001)。

具体来说,我们发现,骑自行车的人每增加1%,心脏病的发病率就会下降0.2%(±0.0014),吸烟的人每增加1%,心脏病的发病率就会增加0.178%(±0.0035)。

引用这篇Scribbr文章

如果你想引用这个来源,你可以复制和粘贴引用或点击“引用这篇Scribbr文章”按钮,自动添加到我们的免费引用生成器引用。

贝文斯,R.(2022年11月15日)。线性回归在R |一步一步的指南和例子。Scribbr。检索自//www.charpingshvac.com/statistics/linear-regression-in-r/, 2022年12月24日

这篇文章有用吗?
丽贝卡·贝

丽贝卡正在攻读土壤生态学博士学位,空闲时间用来写作。她很高兴能和大家一起研究统计数据。
Baidu