R语言统计-回归篇:多项式回归与多元线性回归

如题所述

第1个回答  2024-08-18
摘录自:R语言实战 作者:王小宁、刘撷芯、黄俊文等译 仅用学习使用 该系列文章期待用一点一点和大家一起把R语言实战学习完~使自己的R语言和统计水平更上一层楼

接上文: R语言统计-回归篇:简单线性回归,本文主要介绍多项式回归和多元线性回归。

多项式回归:图8-1显示,添加二次项(即[公式])可提高回归预测精度。以下代码可用于拟合含二次项的等式:

I(height^2)表示在预测等式中添加身高的平方项。I函数将括号内容视为R的常规表达式。因为^(参见表8-2)符号在表达式中有特殊含义,会调用不需要的内容,所以必须使用该函数。

新的预测等式为:

[公式]

在p<0.001水平下,回归系数都非常显著。模型的方差解释率已增加至99.9%。二次项的显著性(t=13.89,p<0.001)表明包含二次项提高了模型拟合度。从图8-2也可看出曲线拟合得较好。

一般来说,n次多项式生成n-1个弯曲曲线。拟合三次多项式,可用:

尽管更高次的多项式也可用,但我发现使用比三次更高的项几乎没有必要。在继续下文之前,我还要提及car包中的scatterplot()函数,它可以轻松、方便地绘制二元关系图。以下代码能生成图8-3所示的图形:

这个增强功能图形,既提供了身高与体重的散点图、线性拟合曲线和平滑拟合(loess)曲线,还在相应边界展示了每个变量的箱线图。spread=FALSE选项删除了残差正负均方根在平滑曲线上的展开和非对称信息。smoother.args=list(lty=2)选项设置loess拟合曲线为虚线。pch=19选项设置点为实心圆(默认为空心圆)。通过图8-3可知,两个变量基本对称,曲线拟合得比直线更好。

多元线性回归:当预测变量不止一个时,简单线性回归变为多元线性回归,分析也相对复杂。从技术上讲,多项式回归可视为多元线性回归的特例:二次回归有两个预测变量([公式] 和 [公式]),三次回归有三个预测变量([公式],[公式] 和[公式])。现在让我们看一个更一般的例子。以基础包中的state.x77数据集为例,我们想探究一个州的犯罪率与其他因素的关系,包括人口、文盲率、平均收入和结霜天数(温度在冰点以下的平均天数)。因为lm()函数需要一个数据框(state.x77数据集是矩阵),为了方便处理,你需要做如下转化:

这行代码创建了一个名为states的数据框,包含了我们感兴趣的变量。本章的余下部分,我们都将使用这个新的数据框。

多元回归分析中,第一步最好检查一下变量间的相关性。cor()函数提供了二变量之间的相关系数,car包中scatterplotMatrix()函数则会生成散点图矩阵(参见代码清单8-3和图8-4)。

scatterplotMatrix()函数默认在非对角线区域绘制变量间的散点图,并添加平滑和线性拟合曲线。对角线区域绘制每个变量的密度图和轴须图。

从图中可以看出,谋杀率是双峰的曲线,每个预测变量都一定程度上出现了偏斜。谋杀率随人口和文盲率的增加而增加,随收入水平和结霜天数增加而下降。同时,越冷的州府文盲率越低,收入水平越高。

现在使用lm()函数拟合多元线性回归模型:

当预测变量不止一个时,回归系数的含义为:一个预测变量增加一个单位,其他预测变量保持不变时,因变量将要增加的数量。例如本例中,文盲率的回归系数为4.14,表示控制人口、收入和温度不变时,文盲率上升1%,谋杀率将会上升4.14%,其系数在p<0.001水平下显著不为0。相反,Frost的系数没有显著不为0(p=0.954),表明当控制其他变量不变时,Frost与Murder不呈线性相关。总体来看,所有的预测变量解释了各州谋杀率57%的方差。

以上分析中,我们没有考虑预测变量的交互项。在下一节中,我们将考虑一个包含此因素的例子。

有交互项的多元线性回归:许多有趣的研究都会涉及交互项的预测变量。以mtcars数据框中的汽车数据为例,若你对汽车重量和马力感兴趣,可以把它们作为预测变量,并包含交互项来拟合回归模型。

你可以看到Pr(>|t|)栏中,马力与车重的交互项是显著的,这意味着什么呢?若两个预测变量的交互项显著,说明响应变量与其中一个预测变量的关系依赖于另一个预测变量的水平。因此此例说明,每加仑汽油行驶英里数与汽车马力的关系依车重不同而不同。

预测mpg的模型为[公式] 。为更好地理解交互项,你可以赋给wt不同的值,并简化等式。例如,可以试试wt的均值(3.2),少于均值一个标准差和多于均值一个标准差的值(分别是2.2和4.2)。若wt=2.2,则等式可以化简为49.81–0.12×hp–8.22×(2.2) + 0.03×hp×(2.2) =31.41–0.06×hp;若wt=3.2,则变成了23.37–0.03×hp;若wt=4.2,则等式为15.33–0.003×hp。你将发现,随着车重增加(2.2、3.2、4.2),hp每增加一个单位引起的mpg预期改变却在减少(0.06、0.03、0.003)。

通过effects包中的effect()函数,你可以用图形展示交互项的结果。格式为:

term即模型要画的项,mod为通过lm()拟合的模型,xlevels是一个列表,指定变量要设定的常量值,multiline=TRUE选项表示添加相应直线。对于上例,即:

结果展示在图8-5中。从图中可以很清晰地看出,随着车重的增加,马力与每加仑汽油行驶英里数的关系减弱了。当wt=4.2时,直线几乎是水平的,表明随着hp的增加,mpg不会发生改变。

拟合模型只是分析的第一步。一旦拟合了回归模型,在信心十足地进行推断之前,必须对方法中暗含的统计假设进行检验。这正是下节的主题。
相似回答
大家正在搜