Book-R语言实战


用lm()拟合回归模型

  在R中,拟合线性模型最基本的函数就是\(lm()\),格式为:

  \(myfit <- lm(formula, data)\)

其中,\(formula\)指要拟合的模型形式,\(data\)是一个数据框,包含了用于拟合模型的数据。结果对象(本例中是\(myfit\))存储在一个列表中,包含了所拟合模型的大量信息。表达式(\(formula\))形式如下:

   \(Y\) ~ \(X_1 + X_2 + \cdots + X_k\)

左边为响应变量,右边为各个预测变量,预测变量之间用+符号分隔。表8-2中的符号可以不同方式修改这一表达式。

除了\(lm()\),表8-3还列出了其他一些对做简单或多元回归分析有用的函数。拟合模型后,将这些函数应用于\(lm()\)返回的对象,可以得到更多额外的模型信息。

  • 表8-2 R表达式中常用的符号
符 号 用 途
~ 分隔符号,左边为响应变量,右边为解释变量。例如,要通过x、z和w预测y,代码为y ~ x + z + w
+ 分隔预测变量
: 表示预测变量的交互项。例如,要通过x、z及x与z的交互项预测y,代码为y ~ x + z + x:z
* 表示所有可能交互项的简洁方式。代码y~ x * z * w可展开为y ~ x + z + w + x:z + x:w + z:w + x:z:w
^ 表示交互项达到某个次数。代码y ~ (x + z + w)^2可展开为y ~ x + z + w + x:z + x:w + z:w
. 表示包含除因变量外的所有变量。例如,若一个数据框包含变量x、y、z和w,代码y ~ .可展开为y ~ x + z + w
- 减号,表示从等式中移除某个变量。例如,y ~ (x + z + w)^2 – x:w可展开为y ~ x + z + w + x:z + z:w
-1 删除截距项。例如,表达式y ~ x - 1拟合y在x上的回归,并强制直线通过原点
I() 从算术的角度来解释括号中的元素。例如,y ~ x + (z + w)^2将展开为y ~ x + z + w + z:w。相反,代码y ~ x + I((z + w)^2)将展开为y ~ x + h,h是一个由z和w的平方和创建的新变量
function 可以在表达式中用的数学函数。例如,log(y) ~ x + z + w表示通过x、z和w来预测log(y)
  • 表8-3 对拟合线性模型非常有用的其他函数
函 数 用 途
summary() 展示拟合模型的详细结果
coefficients() 列出拟合模型的模型参数(截距项和斜率)
confint() 提供模型参数的置信区间(默认95%)
fitted() 列出拟合模型的预测值
residuals() 列出拟合模型的残差值
anova() 生成一个拟合模型的方差分析表,或者比较两个或更多拟合模型的方差分析表
vcov() 列出模型参数的协方差矩阵
AIC() 输出赤池信息统计量
plot() 生成评价拟合模型的诊断图
predict() 用拟合模型对新的数据集预测响应变量值

  当回归模型包含一个因变量和一个自变量时,我们称为简单线性回归。当只有一个预测变量,但同时包含变量的幂(比如,\(X\)\(X^2\)\(X^3\))时,我们称之为多项式回归。当有不止一个预测变量时,则称为多元线性回归。现在,我们首先从一个简单的线性回归例子开始,然后逐步展示多项式回归和多元线性回归,最后还会介绍一个包含交互项的多元线性回归的例子。

回归改进的方法-car包

  car包提供了大量函数,大大增强了拟合和评价回归模型的能力(参见表8-4)。

  • 表8-4 (car包中的)回归诊断实用函数
函 数 目 的
qqPlot() 分位数比较图
durbinWatsonTest() 对误差自相关性做Durbin-Watson检验
crPlots() 成分与残差图
ncvTest() 对非恒定的误差方差做得分检验
spreadLevelPlot() 分散水平检验
outlierTest() Bonferroni离群点检验
avPlots() 添加的变量图形
inluencePlot() 回归影响图
scatterplot() 增强的散点图
scatterplotMatrix() 增强的散点图矩阵
vif() 方差膨胀因子

  值得注意的是,car包的2.x版本相对1.x版本作了许多改变,包括函数的名字和用法。本章基于2.x版本。