1. 引言
线性回归分析,也称为线性建模,需要将直线、平面或多项式拟合到数据中。与大多数机器学习算法一样,线性回归的目标是使用其他变量预测输出变量。线性回归将输出变量或因变量表示为自变量或预测变量的函数或线性组合。线性回归是一种广泛用于建模和理解现实世界现象的技术。它易于使用和直观理解。在简单线性回归中,模型只是一条直线,而对于多元回归,模型可以是多项式或平面;本文主要用到的是多元线性回归。多元线性回归模型是由多个自变量与因变量之间呈线性关系时,进行的回归分析设定的模型。多元线性回归模型的应用非常广泛,主要为建立最优多元线性回归方程再评定各个自变量对因变量的影响大小,并对有关模型的有效性进行检测 [1]。汽车MPG意为汽车的油耗,是每加仑可以跑多少英里的一个数据,每加仑约等于3.785升,而每英里约等于1.61千米。衡量的是一辆汽车在一加仑燃油的情况下能走多远。汽车MPG的数据建模受到气缸数、加速度、马力、排量与重量等影响。在世界各地汽车使用非常普遍的情况下,消费者有时会考虑购买之前想购买的汽车的效率和燃油经济性。每个人都想买一辆能行驶很远、耗油更少的车。预测汽车MPG同样也是属于机器学习模块的一个问题,说到机器学习就不得不提到python,该预测模型同样也可以使用python来实现,使用python来完成需要用到更多的算法,需要进行测试的模型也非常的多,比如Adaboost、XGboost和GradientBoosting等,最后还要对这些不同的模型进行各种方面的对比,比较耗时耗力,也容易在对比的过程中出现错误的判断。相比于python,R更适合对数据进行统计分析,在这个问题上则有着更简单的方法,作为专门为统计和数据分析开发的语言,R语言在数据分析的输出上有着更直观的表现,虽然在处理过于巨大的数据面前对比python有着一定的劣势,但在对数据的深入分析能力方面也是python无法比拟的。R语言拥有优秀的数据可视化工具,同时还有包罗万象的统计函数与相应的包可以直接使用调用。由于本文需要做的只是对少数的数据集进行分析建模,所以意在使用R语言通过分析上述提到的数据作为变量,生成一个良好的模型,该模型可以预测汽车的每加仑英里数,同时考虑到汽车的其他特性,使误差最小。使用的方法是将这些变量作为回归器,成为多元线性回归模型中的基本模型,进行多元统计分析,找出变量之间的依存关系与规律,从而建立多元线性回归模型 [2],来实现该汽车MPG预测模型的开发。
2. 方法
首先最基本的多元线性回归模型可以设为:
其中y为随机变量,
为一般变量,本多元线性回归模型用到了六个不同的回归器,具体为MPG,气缸数,马力,排量,加速度与重量。具体概念罗列如下:
MPG——英里数/每加仑;
气缸——汽车的动力装置,汽油在其中转化为动力;
排量——汽车的发动机排量;
马力——发动机性能的比率;
重量——汽车的重量;
加速度——汽车的加速度。
导入准备好的不同品牌的汽车的各种数据,我们要做的就是读入数据文件,合并它们并执行一些数据清理。在数据分析领域,数据清理是一件非常重要的事情。它需要检测、纠正或从数据集中删除不准确的记录。它可以提高数据质量,从而提高整体生产效率。当清理数据时,所有过时或不正确的信息都会消失,以便提供最高质量的信息。完成数据的导入后使用“pairs.r”来实现所有数值的散点图(图1)。
之后使用气缸,马力,排量,重量和加速度五个回归因子拟合多元线性回归模型,得出以下的数据如表1,表2。
输入:
lm(formula = MPG ~ as.factor(cyl) + hp + disp + weight + acc, data = autoMPG)
残差:

Table 1. Residuals data of multiple linear regression mode
表1. 多元线性回归模型残差数据
系数:

Table 2. Coefficients data of multiple linear regression model
表2. 多元线性回归模型系数数据
残差标准误差:4.003 on 383 degrees of freedom;
多重R平方:0.7424, Adjusted R-squared: 0.737;
F-统计量:138 on 8 and 383 DF, p-value: <2.2e−16。
得出上组模型数据后为了可以更清晰的得到预测结论,需要移除不显著的变量,这一数据可以定在低于20%的等级,移除时从最不显著的变量依次移除,得到下表3,表4。
输入:
lm(formula = MPG ~ disp + hp, data = autoMPG)
残差:

Table 3. Model residuals data after removing insignificant variables (mod1)
表3. 移除不显著变量后的模型残差数据(mod1)
系数:

Table 4. Model coefficients data after removing insignificant variables of (mod1)
表4. 移除不显著变量后的模型系数数据(mod1)
残差标准误差:4.534 on 389 degrees of freedom;
多重R平方:0.6643, Adjusted R-squared: 0.6626;
F-统计量:384.9 on 2 and 389 DF, p-value: <2.2e−16。
可以将上述模型命名为mod1,方便之后的计算与统计,再对这个mod1进行修改,开发出模型并命名mod2,其中包括与气缸数的交互项,用来检查这些交互项中有无对预测有帮助的该模型的项。见表5,表6。
输入:
lm(formula = MPG ~ as.factor(cyl) + disp + hp, data = autoMPG)
残差:

Table 5. Modify mod1 to develop a model that add interaction terms with cyl residuals data (mod2)
表5. 修改mod1后增加了与cyl交互项的模型残差数据(mod2)
系数:

Table 6. Modify mod1 to develop a model that add interaction terms with cyl coefficients (mod2)
表6. 修改mod1后增加了与cyl交互项的模型系数(mod2)
残差标准误差:4.221 on 385 degrees of freedom;
多重R平方:0.7121, Adjusted R-squared: 0.7076;
F-统计量:158.7 on 6 and 385 DF, p-value: <2.2e−16。
可以看出排量、马力、重量和气缸之间存在强烈的负相关。这意味着,随着这些变量中的任何一个增加,MPG降低。位移、马力、重量和气缸之间有很强的正相关性,这违反了线性回归的非多重共线假设。多重共线性妨碍了回归模型的性能和准确性。为了避免这种情况,必须通过特征选择来消除其中的一些变量。而其他变量加速度、模型和原点之间则没有高度的相关性。由于还需要更进一步的提高预测准确性,所以可以设置一个只有两个值的mycyl,如下(表7)。

Table 7. mycyl value used to change the mod2
表7. 用来更改mod2的mycyl值
这样就可以利用此表来更新mod2,因为只有两个值,甚至用不到as.factor()的计算方法。再依次排除掉不显著变量(低于20%),得到新的mod2模型。见表8,表9。
输入:
lm(formula = MPG ~ mycyl + disp + hp, data = autoMPG)
残差:

Table 8. Residuals data of new mod2 of after mycyl value change
表8. mycyl值更改后的新mod2模型残差数据
系数:

Table 9. Coefficients of new mod2 of after mycyl value change
表9. mycyl值更改后的新mod2模型系数
残差标准误差:4.307 on 388 degrees of freedom;
多重R平方:0.6978, Adjusted R-squared: 0.6954;
F-统计量:298.6 on 3 and 388 DF, p-value: <2.2e−16。
通过观察MPG与数值变量的散点图,还考虑改变mod1,包括多项式变量的数值变量。从8次多项式开始,根据输出中看到的内容清理模型。得到全新的mod3,如下(表10,表11)。
输入:
lm(formula = MPG ~ disp + hp + poly(weight, 2), data = autoMPG)
残差:

Table 10. Residuals data of mod3 obtained by changing the numerical variable of polynomial variable from mod1
表10. 由mod1更改多项式变量的数值变量后得出的模型mod3残差数据
系数:

Table 11. Coefficients of mod3 obtained by changing the numerical variable of polynomial variable from mod1
表11. 由mod1更改多项式变量的数值变量后得出的模型mod3系数
残差标准误差:4.019 on 387 degrees of freedom;
多重R平方:0.7376, Adjusted R-squared: 0.7349;
F-统计量:271.9 on 4 and 387 DF, p-value: <2.2e−16。
得出mod3后再通过包含与mycyl的交互项来修改上述模型。需要做的是减少多项式的次数,直到大多数项变得重要,把这个模型称为mod4。见表12,表13。
输入:
lm(formula = MPG ~ mycyl + disp + hp + poly(weight, 2), data = autoMPG)
残差:

Table 12. Residuals data of mod4 after modification containing the interactive items with mycyl
表12. 包含与mycyl的交互项修改后mod4残差数据
系数:

Table 13. Coefficients of mod4 after modification containing the interactive items with mycyl
表13. 包含与mycyl的交互项修改后mod4系数
残差标准误差:3.96 on 386 degrees of freedom;
多重R平方:0.7458, Adjusted R-squared: 0.7426;
F-统计量:226.6 on 5 and 386 DF, p-value: <2.2e−16。
得出四个模型后,就可以比较它们之间的adjR2 and s两个数值,得出下表14。

Table 14. Comparison of two values adjR2 and s between mod1, 2, 3, 4
表14. mod1、2、3、4之间adjR2和s两个数值的对比
通过对比,根据简约原则,首先排除mod3与mod4,对比mod1与mod2有更多的数据计算项,在计算中并不是不可或缺选项,所以排除;mod1与mod2相对比,mod1的误差值要比mod2更大,所以对比后可以选出mod2为更合适的模型。
3. 结果与检测
通过对比,根据简约原则可以选出mod2为更合适的模型。还需要对选定的模型进行检测,检查假设是否存在正态性和恒定方差冲突,得到如下输出图2,图3。

Figure 3. Shapiro.test detection output
图3. Shapiro.test检测输出
最后进行异常值与影像的检测,使用influencePlot()从数据中检测出杠杆点,需要检测的有三项,分别是数据中的杠杆点但不为影响点,不具影响力的影响点与具有影响力的影响点。得到图4与表15的输出。

Figure 4. Detect leverage points and influential points detection output
图4. 杠杆点与影响点检测输出

Table 15. Detect leverage points and influential points detection output
表15. 杠杆点与影响点检测输出
再用vif()检测出模型的共线性,查看是否有vif大于10的条件,小于10表示不具有多重共线性,而大于10则表示具有较强的多重共线性,如果只有少数大于10则不会受到影响,但多数大于10且数值偏高则证明会对该模型的预测有着较大的影响;得到输出表16。
最后可以看出异常点图4还是有着相对少的异常点与影响点,而气缸数和马力的vif都小于10,所以都不存在多重共线性,只有排量的vif大于10,但也只是刚刚超过,存在较强的多重共线性但也对预测没有较大的影响,相比于其他的mod1、3、4,mod2仍然是最为适合的模型。
4. 结论
本文根据多元线性分析方法通过多个自变量形成多元线性回归模型,用到R语言实现四个mod并进行对比,最终根据简约原则选定并进行检测,确保将误差与影响降到最低。需要注意的是在分析模型的预测中需要依次排除不显著的变量,并要注意各个变量之间的正相关性与负相关性,如果违背了线性回归中的非多重共线假设,那同样需要对一些变量进行排除。多元线性分析在日常生活中的应用非常广泛,可以在各个领域进行分析预测,比如在汽油辛烷值损失的预测上,同样需要降维后进行多元线性回归模型的建立 [3],甚至在热带大气研究中也有着非常重要的应用,可以描述出大气在不同季节的移动过程,未来甚至在气象学中得到广泛的应用 [4]。该模型也是机器学习中比较重要的一个学习领域 [5],在未来大数据人工智能领域是一个非常有发展性与应用性的预测模型。
基金项目
海南省重点研发项目(ZDYF2020020)。