参考资料:R语言实战【第2版】
1、多元线性回归
当预测变量不止一个时,简单线性回归就变成了多元线性回归。从技术上来说,多项式回归可以算是多元线性回归的特例:二次回归有两个预测变量(X和X^2)。
以基础包中的state.x77数据集为例,我们探究一个州的犯罪率和其他因素的关系,包括人口、文盲率、平均收入和结霜天数。
因为lm()函数需要一个数据框(state.x77数据集市矩阵),我们需要将其转换为数据框。
# 将矩阵转换为数据框
states<-as.data.frame(state.x77[,c("Murder","Population",
"Illiteracy","Income","Frost")])
# 查看变量之间的相关性
cor(states)
# 导入car包
library(car)
# 绘制散点图矩阵
scatterplotMatrix(states,smooth=FALSE,main="Scatter Plot Matrix")
# 拟合多元线性回归模型
fit<-lm(Murder~Population+Illiteracy+Income+Frost,
data=states)
# 查看拟合结果
summary(fit)
在多元回归分析前,最好检查一下变量的相关性。当2个或多个自变量高度相关时,就会出现多重共线。它不仅影响自变量对因变量变异的解释能力,还影响整个多元线性回归模型的拟合。这里使用的是cor()函数。
scatterplotMatrix()函数默认在非对角线区域绘制变量间的散点图,并田间平滑和线性拟合曲线;对角线区域绘制每个变量的密度图和轴须图。
当预测变量不止一个时,回归系数的含义是:在其他预测变量保持不变的情况下,一个预测变量增加一个单位,响应变量将要增加的数量。
在本例的分析结果中,可以知道Income和Frost的系数无统计学上的显著意义,可以认为这两个变量与Murder不呈线性相关。Illiteracy的相关系数极显著,其值为4.14,表示当其他变量不变时,文盲率上升1%,谋杀率将会上升4.14%。
2、有交互项的多元线性回归
在上面的例子中我们没有考虑变量的交互项,但许多研究是需要涉及交互项的预测变量。我们以mtcars数据框中汽车数据为例进行分析。
# 对mtcars数据集进行拟合
fit1<-lm(mpg~hp+wt+hp:wt,data=mtcars)
fit2<-lm(mpg~(hp+wt)^2,data=mtcars)
# 查看分析结果
summary(fit1)
summary(fit2)
上面代码中fit1和fit2是等价的。
从检验结果中,我们可以看出hp(马力)和wt(车重)的交互项是显著的,说明响应变量与其中一个预测变量关系依赖于另一个预测变量的水平。本例的交互作用显著,说明每加仑汽油行驶英里数与汽车马力的关系依车重不同而不同。
通过effects包中的effect()函数,我们可以通过图形展示交互项的结果,调用格式如下:
plot(effect(term, mod,, xlevels),multiline=TURE)
term即模型要画的项,mod为通过lm()拟合的模型,xlevels是一个列表,指定变量要设定的常量值,multiline=TRUE选项表示田间相应直线。
# 加载effects包
library(effects)
# 展示车重在2.2,3.2,4.2下的拟合曲线
plot(effect("hp:wt",fit1,,list(wt=c(2.2,3.2,4.2)),multiline=TRUE))
由上图可知:随着wt的增加,hp和mpg的关系减弱了。当wt=4.2时,直线几乎水平,表明随着hp的增加mpg不会发生变化。