线性回归lm()

type
status
date
slug
summary
tags
category
icon
password
💭
在我们日常生活中,线性回归模型是一种非常实用且常见的统计方法,它通过拟合一条直线来描述因变量和一个或多个自变量之间的关系。
这种模型可以帮助我们预测未来的趋势,解释变量之间的关系,甚至用于决策支持。
 
以下是一些线性回归模型常见的应用场景:
  1. 房价预测:通过分析历史数据中的房屋面积、房龄、地理位置等因素,线性回归模型可以帮助我们预测房屋的未来价格。
  1. 健康与医疗:医生可以使用线性回归模型来分析患者的体重、年龄、血压等指标,从而预测患某种疾病的风险。
  1. 教育领域:教育工作者可以利用线性回归模型来研究学生的学习时间、出勤率等因素对考试成绩的影响,从而制定更加有效的教学策略。
  1. 市场营销:营销人员可以通过线性回归模型分析广告支出、市场活动等因素对销售额的影响,以优化营销预算和策略。
 
通过线性回归模型,我们能够更好地理解和预测日常生活中的各种现象。
在本篇文章中,我们将使用RStudio自带的mtcars数据集,通过线性回归模型来预测汽车的油耗(mpg)。
我们会演示如何划分数据集、构建模型、进行预测以及评估模型性能。通过这个过程,你将学会如何在实际应用中使用线性回归模型,从而更好地解决生活和工作中的实际问题。
 

1. 加载数据集

 
首先,我们加载R自带的数据集mtcars。这个数据集包含32辆汽车的11个变量,如油耗(mpg)、气缸数(cyl)、马力(hp)等。
 
 

2. 设置随机种子

为了确保我们的结果是可重复的,我们使用set.seed()函数设置随机种子。
 
 
💡
思考:为什么需要set.seed()这一步?
在数据分析和机器学习中,set.seed() 是一个非常重要的函数,尤其是在随机数生成和数据划分时。
设置随机种子使得每次运行代码时生成的随机数都是相同的,这对于结果的可重复性非常重要。
set.seed() 就像是一道菜的固定食谱,它确保每次你按照这个食谱做菜,味道都是一样的。
如果不设置随机种子,每次运行代码时,生成的结果都会不同。
由于每次运行代码时结果不同,调试代码时可能会出现一些难以复现的错误或问题,使得调试过程更加复杂。
在进行模型验证时,其他人也很难复现你的结果,导致验证过程变得困难。
 

3. 划分数据集

我们使用sample.split()函数将数据集分为训练集和测试集。这个函数需要caTools包。
我们只需要安装一次,但每次开启新文件时,若需使用caTools包,都要再加载一次。
 
 
sample.split()函数根据给定的分割比例(这里是70%)随机划分数据集,并返回一个逻辑向量
subset()函数根据这个逻辑向量来创建训练集和测试集。

4. 构建线性回归模型

我们使用lm()函数基于训练集来构建线性回归模型。
这里我们选择mpg作为因变量,hpwt作为自变量。
 
 

5. 进行预测

使用训练好的模型对测试集进行预测,使用predict()函数。
 
 

6. 计算 Out-of-sample R²

最后,我们评估模型的性能,使用 Out-of-sample R²(R-squared) 来评估模型是一种常见且有效的方法。
R²(决定系数)是一种用于评估回归模型性能的指标,它表示自变量解释因变量变异的比例。R² 的值介于 0 和 1 之间,值越接近 1,表示模型对数据的拟合程度越好。
 
下面分别解释两种不同的计算方法,都解释得通,如果是备考的话就按你们老师讲的方法来。
 
方法1:
 
Sum of Squared Errors (SSE):计算预测值与实际值之间的平方误差总和。
Total Sum of Squares (SST):计算实际值与其均值之间的平方误差总和。
方法1使用测试集的均值来计算总平方和(SST)。
在这种方法中,SST 代表了测试集中的所有数据点与测试集均值之间的总变异。这种方法通常用于评估模型在测试集上的表现,因为它直接反映了测试集的变异情况。
 
方法2:
 
方法2使用训练集的均值来计算总平方和(SST)。
在这种方法中,SST 代表了测试集中的所有数据点与训练集均值之间的总变异。这种方法强调了模型在新数据上的表现,而不是仅仅在测试集上的表现。
通过使用训练集的均值来计算 SST,可以更好地评估模型在新数据上的泛化能力,特别是在训练集和测试集分布相似的情况下。
训练集的均值在模型训练过程中已经被使用,因此使用训练集的均值来评估模型在测试集上的表现可以保持一致性。
 
画图(二)(ggplot2)R介绍及安装
Loading...
目录