变量选择&异常点

发布于 作者: Ethan

变量选择(Variable Selection)

变量选择的目标与基本概念

在多元线性回归中,我们通常有很多候选自变量(predictors),记候选变量个数为 (c)。

核心目标:

  • 一、在解释力尽量强的前提下,使用尽量少的预测变量
  • 二、避免过拟合、冗余变量和不必要的复杂度;
  • 三、在统计指标与领域知识之间取得平衡,而不是只看某一个指标。

候选变量(candidate predictors)

  • 一、定义:数据集中所有可能被纳入模型的预测变量数量。

  • 二、例子:FirstYearGPA 数据集中用于预测大一 GPA 的变量共有 9 个候选自变量:

    • HS:高中 GPA
    • SATV:SAT 语文
    • SATM:SAT 数学
    • HU:高中人文课学分
    • SS:高中社科课学分
    • SEX:性别
    • FG:是否第一代大学生
    • WH:是否白人
    • CB:高中是否有 ≥50% 学生上大学

因变量为:GPA(大学一年级 GPA)。


常见变量选择方法概览

这些方法都是“算法化”的工具,用来帮我们在众多候选变量中筛选模型,但它们不能替代对数据和领域的思考

常见方法包括:

  • 一、All Possible Subsets(所有子集)
  • 二、Best Subsets(最佳子集)
  • 三、Backward Elimination(后退剔除)
  • 四、Forward Selection(前进选择)
  • 五、Stepwise Regression(逐步回归)

重要提醒:

  • 这些方法可以:

    • 提示哪些变量“看起来重要”;
    • 提供若干可考虑的候选模型;
  • 但不能保证:

    • 一定找到“真·最优模型”;
    • 一定与领域知识一致。

所有子集(All Possible Subsets)

定义与模型数量

思想:对所有候选变量的每一种子集组合都拟合一个回归模型,然后比较这些模型的表现。

若有 (c) 个候选变量,则所有子集的模型总数为:

[ \text{模型数} = 2^c ]

  • 一、当 (c = 10) 时:模型数 (= 2^{10} = 1024),已是上千个模型;
  • 二、当 (c = 20) 时:模型数 (= 2^{20} \approx 1,048,576),超过一百万个模型。

特点:

  • 一、穷举所有可能的变量组合(但通常不包含交互项和变换);
  • 二、计算量非常大,在变量很多时不现实;
  • 三、适合作为“理论上最全面”的参考,但实际多用算法变体(如 Best Subsets)。

简单示例(假设有 3 个候选变量 (X_1, X_2, X_3))

所有可能模型包括:

  • 一、只含截距:(E[Y|X] = \beta_0)

  • 二、含单个变量:

    • (\beta_0 + \beta_1 X_1)
    • (\beta_0 + \beta_2 X_2)
    • (\beta_0 + \beta_3 X_3)
  • 三、含两个变量:

    • (\beta_0 + \beta_1 X_1 + \beta_2 X_2)
    • (\beta_0 + \beta_1 X_1 + \beta_3 X_3)
    • (\beta_0 + \beta_2 X_2 + \beta_3 X_3)
  • 四、含三个变量:

    • (\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \beta_3 X_3)

最佳子集(Best Subsets)

基本思想

All Possible Subsets 会生成所有 (2^c) 个模型,输出会非常庞大,不利于人工查看。

Best Subsets 的做法:

  • 一、同样拟合所有子集模型(生成的模型数和 All Possible Subsets 一样);

  • 二、但只在输出中展示:

    • 最优的一元模型(1 个自变量);
    • 最优的二元模型(2 个自变量);
    • 最优的三元模型(3 个自变量);
    • ……以此类推。

“最优”的标准通常根据某个指标,比如:

  • 调整后的 (R^2)(Adjusted (R^2))
  • Mallow’s (C_p)
  • AIC 等。

FirstYearGPA 示例中的 Best Subsets

R 代码大致为:

library(olsrr)

lm_gpa <- lm(GPA ~ ., data = FirstYearGPA)
ols_step_best_subset(lm_gpa)

输出的“Model Index 与 Predictors”类似:

  • 模型 1:HS
  • 模型 2:HS + HU
  • 模型 3:HS + HU + WH
  • 模型 4:HS + SATV + HU + WH
  • 模型 5:HS + SATV + HU + SS + WH
  • ……直到包含所有 9 个预测变量的模型

随后还有一张表格,给出每个模型对应的:

  • Adjusted (R^2)
  • Predicted (R^2)
  • Mallow’s (C_p)
  • AIC 等。

从结果中观察:

  • 一、调整 (R^2) 在模型 4–7 附近达到较高水平;
  • 二、Mallow’s (C_p) 在模型 4 和 5 处最小,且数值相近;
  • 三、在 4 和 5 中,通常倾向选择更简单的模型(变量更少):

即选择 模型 4:GPA ~ HS + SATV + HU + WH

与之前 6 变量模型(加了 SS、SEX)比较:

  • 6 变量模型中,SS 与 SEX 在 10% 显著性水平下并不显著;
  • 去掉这两个变量后,调整 (R^2) 几乎不变,Mallow’s (C_p) 非常接近最优;
  • 因此,4 变量模型更简洁、解释力相近,更优雅

后退剔除(Backward Elimination)

基本流程(基于 p-value)

后退剔除从“最大模型”开始(包含所有候选变量),逐步删除最不显著的变量:

  • 一、拟合包含所有候选自变量的全模型

  • 二、找到 p-value 最大的那一个变量:

    • 若该 p-value 较大(不显著),则删除这个变量,重新拟合模型;
    • 若所有变量 p-value 都不大(都显著),则停止
  • 三、重复步骤二,直到没有明显不显著的变量。

FirstYearGPA 示例中的后退过程

全模型类似:

lm(GPA ~ HS + SATV + SATM + HU + SS + SEX + FG + WH + CB, data = FirstYearGPA)

R 输出显示:

  • SATM、CB、FG、SEX、SS 等变量 p-value 偏大;
  • HS、HU、WH 明显显著;SATV 在删掉一些变量后变得更有用。

后退剔除的典型步骤:

  • 一、删 SATM:因为其 p-value 最大且远大于 0.1;
  • 二、在新模型中,再删 p-value 最大的 CB;
  • 三、再删 FG;
  • 四、再删 SEX;
  • 五、再删 SS;

最终得到模型:

[ \text{GPA} \sim \text{HS} + \text{SATV} + \text{HU} + \text{WH} ]

和 Best Subsets 选出的 4 变量模型刚好一致,但讲义也特别强调: 这种完全“巧合”的一致性,在其它数据集中并不常见

后退剔除的优缺点

  • 优点:

    • 一、与 All Possible Subsets 相比,拟合的模型数量大大减少;
    • 二、算法简单明了;
  • 缺点:

    • 一、结果高度依赖起始的“全模型”;
    • 二、若一开始就没把某个重要变量包括进去,则永远不会被考虑;
    • 三、只基于 p-value 时,忽略了模型整体指标(AIC、(C_p)、调整 (R^2) 等)。

前进选择(Forward Selection)

基本流程(基于 (R^2) 或调整 (R^2))

与后退剔除相反,前进选择从空模型开始,逐步加入最有用的变量。

常见步骤(以最大化调整 (R^2) 为例):

  • 一、对每个单变量模型(只有 1 个自变量)计算调整 (R^2),选出最好的那一个变量,将其加入模型;

  • 二、在已有变量的基础上,对“尚未加入”的每一个变量:

    • 逐个加入,拟合新模型;
    • 比较调整 (R^2),选择提升最大的那个变量加入;
  • 三、重复上一步,直到:

    • 加入任何新变量都无法明显改善指标,或
    • 所有候选变量都已加入模型。

FirstYearGPA 示例

调用类似:

ols_step_forward_adj_r2(lm_gpa, details = TRUE)

从输出可以大致看出:

  • 一、第一步:在所有单变量模型中,HS 的调整 (R^2) 最高,因此先加入 HS;
  • 二、第二步:在已含 HS 的基础上,每次尝试再加一个变量,结果发现 HU 能带来最大提升,于是得到模型: (\text{GPA} \sim \text{HS} + \text{HU});
  • 三、第三步:在 HS+HU 的基础上,比较 WH、SATV 等变量的加入效果,WH 表现最好,于是得到: (\text{GPA} \sim \text{HS} + \text{HU} + \text{WH});
  • 四、第四步:继续尝试加入 SATV、SS、SEX、FG、CB…… 直至满足停止条件。

在讲义给出的后续输出中,前进选择最终得到的模型结构与后退剔除、Best Subsets 的结果高度相似,但中途拟合的模型个数明显多于后退剔除,少于 All Possible Subsets。

前进选择的特点

  • 一、从简到繁,减少初始拟合难度;
  • 二、不会考虑“从未加入过”的变量被删掉(因为它们从未出现);
  • 三、最大模型不一定包含所有变量(可能提前停止)。

逐步回归(Stepwise Regression)

结合前进与后退的思想

在实际数据中,有可能出现这样的情形:

  • 一、变量 (X_1) 单独来看很强,被最早选入模型;
  • 二、后来加入 (X_2)、(X_3) 后,它们与 (X_1) 含有大量重叠信息;
  • 三、当模型包含 (X_1, X_2, X_3) 时,(X_1) 的 p-value 变得很大,说明它已经变“可有可无”。

如果只做前进选择:

  • 一、(X_1) 一旦被加入,就不会被删除;
  • 二、容易留下这样的“冗余变量”。

逐步回归的核心思想:

  • 一、整体流程类似前进选择,一个一个往里加变量;

  • 二、但每次加入新变量后,都允许“往回看”:

    • 检查已经在模型里的变量;
    • 如果某个变量 p-value 变大、不再显著,就把它删掉(类似后退剔除的动作);
  • 三、因此兼具:

    • 前进:逐步引入新变量;
    • 后退:动态剔除变得不重要的旧变量。

对 FirstYearGPA 数据而言,讲义指出: 实际上不存在“加入后又变冗余”的情况,所以逐步回归多做一步检查,但结果与前进选择、后退剔除类似。


模型选择时的注意事项与策略

不同方法结果可能不同

  • 一、All Possible Subsets、Best Subsets、Backward、Forward、Stepwise 一般不会给出完全相同的模型
  • 二、即使偶然得到相同的模型,也不能据此认为“这就是唯一正确的模型”。

实务中的思路

  • 一、多个模型可能在指标上非常接近:

    • (R^2)、调整 (R^2)、AIC、(C_p) 等差别很小;
  • 二、此时常常更偏好:

    • 变量更少、结构更简单的模型;
    • 更符合领域知识的模型;
  • 三、变量选择方法是工具,不是“自动驾驶”:

    • 需要结合:

      • 先验理论与常识判断;
      • 探索性分析(散点图矩阵、箱线图、按类别着色的散点图等);
      • 专家建议与研究目的。

异常点与诊断(Outliers & Diagnostics)

异常点的基本概念

异常点(Outlier):在拟合的回归模型下,“不符合整体模式”的观测值,其残差绝对值异常大。

  • 一、残差: [ e_i = y_i - \hat{y}_i ]

  • 二、异常点的特点:

    • 垂直方向偏离大(即预测误差大);
    • 不一定在水平方向(自变量方向)“极端”,这一点由杠杆值衡量;
  • 三、关键问题:

    • 残差多大才算“异常”?
    • 多大程度上“影响”了拟合结果?

在诊断每个观测值时,需要综合考虑:

  • 一、Influence(影响力)
  • 二、Leverage(杠杆值)
  • 三、Standardized Residual(标准化残差)
  • 四、Cook’s Distance(Cook 距离)

影响力(Influence)

定义

影响力衡量的是:如果删除该观测点,回归模型(尤其是斜率)的估计会发生多大变化。

  • 一、若删除某点后,斜率/截距几乎不变 → 影响力小;
  • 二、若删除后,斜率明显改变 → 该点影响力大,是“有问题”的候选异常点。

Florida Votes 示例:

  • 因变量:Buchanan 得票数;
  • 自变量:Bush 得票数;
  • 特别关注:Palm Beach County(棕榈滩县)。

对比:

  • 一、包含 Palm Beach 的回归模型:斜率约 4.92;
  • 二、删除 Palm Beach 再拟合:斜率变化为约 3.48,变化明显;

因此,Palm Beach 这个点对模型斜率有显著影响,是一个高影响力异常点


杠杆值(Leverage)

概念与直觉

杠杆值(Leverage)衡量的是:一个观测在自变量空间中有多“极端”,即它有多大“潜力”去影响回归线。

  • 一、自变量值离整体平均值越远,杠杆值越大;
  • 二、杠杆值与自变量的位置有关,与因变量的取值无关。

直观类比:

  • 想象一个跷跷板:

    • 一个人离支点越远,对跷跷板的作用力越大;
    • 即使 TA 的体重与别人差不多,但位置在更远,也能产生更大“杠杆效应”。

数学表达(简单线性回归)

在简单线性回归中,观测点 (i) 的杠杆值为:

[ h_i = \frac{1}{n} + \frac{(x_i - \bar{x})^2}{\sum_j (x_j - \bar{x})^2} ]

  • 一、可以看到,杠杆值只依赖于 (x_i) 与 (\bar{x}) 的距离;
  • 二、(h_i) 越大,点越“极端”,其潜在影响力越大。

Florida Votes 示例中的杠杆

  • 一、Bush 得票数非常大的县(例如 Palm Beach)在横轴上远离平均值 → 杠杆值大;
  • 二、如果 Palm Beach 的 Bush 票数从 153k 改为 50k,其横坐标就不再那么极端,杠杆值会变小;
  • 三、杠杆(x 方向极端程度)与它的实际 y 值(Buchanan 票数)无关,但会影响其潜在影响力。

标准化残差(Standardized Residual)

为什么要标准化?

原始残差 (e_i) 的单位与因变量 (Y) 一致:

  • 一、难以直接判断“残差是否异常大”;
  • 二、不同数据集的残差尺度不一样,比较不方便。

标准化残差通过除以估计的标准差并考虑杠杆值,得到无量纲的量,类似“标准差单位”上的偏离:

[ r_i = \frac{y_i - \hat{y}_i}{\hat{\sigma}\sqrt{1 - h_i}} ]

其中:

  • (\hat{\sigma}) 是残差标准差(RMSE),表示“典型误差”的大小;
  • (h_i) 是第 (i) 个点的杠杆值。

大致经验:

  • 若模型合理且误差近似正态:

    • 约 95% 的点应有 (|r_i| \leq 2);
    • (|r_i| > 2) 或 (|r_i| > 3) 时,应重点检查。

Studentized Residual(学生化残差)

讲义还提到 Studentized Residual(学生化残差),它与标准化残差类似,但在计算 (\hat{\sigma}) 时:

  • 一、先删除第 (i) 个观测再拟合模型;
  • 二、以避免该点的异常残差过度影响 (\hat{\sigma}) 的估计。

实务中,软件常直接给出学生化残差,用于更稳健地判断异常点。

Olympic Long Jump 示例

  • 自变量:年份;
  • 因变量:当届奥运会男子跳远冠军的成绩;
  • 特别观测:1968 年 Bob Beamon 的“超远一跳”,打破世界纪录超过 2 英尺。

分析结果:

  • 一、从残差图上可以看到 Bob 的残差非常大;
  • 二、计算标准化残差后,其数值远超绝大部分年份;
  • 三、但 Bob 的年份(x 方向)并不极端 → 杠杆值不高;
  • 四、因此虽然残差极大,但由于杠杆不大,对斜率的影响并不严重 → 高残差但低影响力

Cook 距离(Cook’s Distance)

定义与公式

Cook 距离综合了标准化残差杠杆值,用来衡量某个点对回归模型的整体影响。

对第 (i) 个观测,Cook 距离为:

[ D_i = \frac{r_i^2}{p + 1} \cdot \frac{h_i}{1 - h_i} ]

其中:

  • (r_i):该点的标准化残差;
  • (h_i):该点的杠杆值;
  • (p):自变量个数(不包括截距)。

可以看到:

  • 一、残差越大(拟合得越差),(r_i^2) 越大,(D_i) 越大;
  • 二、杠杆越大(越极端),(\frac{h_i}{1 - h_i}) 越大,(D_i) 越大;
  • 三、两者任意一项大,都可能导致 Cook 距离大。

经验阈值

常用的经验判断:

  • 一、(D_i > 0.5):中度有影响的点,需要重点关注;
  • 二、(D_i > 1):高度有影响、非常“问题”的点,往往是强影响力异常点

综合理解

Cook 距离本质上回答问题:

“如果删掉这个点,回归系数会发生多大变化?”

  • 一、若某点残差不大,但杠杆极高(横向非常极端),也可能有不小的 Cook 距离;
  • 二、若某点杠杆不高,但残差极端大,也可能导致不小的 Cook 距离;
  • 三、若同时残差大、杠杆高,Cook 距离会极大,这是最危险的一类点。

Florida Votes 中的 Palm Beach:

  • 一、Bush 得票数非常大 → 杠杆高;
  • 二、Buchanan 得票数严重偏离整体趋势 → 标准化残差极大;
  • 三、Cook 距离远大于其他县 → 典型的高杠杆 + 高残差 = 高影响力异常点

综合诊断图(Summary Plot)

R 提供的回归诊断图(如 plot(lm_object))通常包括:

  • 残差 vs 拟合值;
  • 正态 QQ 图;
  • 标准化残差 vs 杠杆值;
  • Cook 距离图等。

通过这些图,我们可以直观地观察:

  • 一、是否存在非线性关系或异方差;
  • 二、是否存在高杠杆、残差异常大的点;
  • 三、哪些观测点的 Cook 距离最大,值得进一步调查。

异常点处理的原则

  • 一、这些诊断工具的作用是提示而非裁决

    • 高 Cook 距离、高标准化残差、高杠杆值 → 提示“这里有问题,请仔细看”;
  • 二、应优先考虑:

    • 是否存在录入错误、单位错误等数据错误
    • 是否代表某种特殊机制(例如特殊人群、特殊条件);
  • 三、不要为了让回归图“好看”就随意删点:

    • 有时“异常点”才是最有价值的信息;
  • 四、合理做法:

    • 分别在“保留异常点”和“删除异常点”的情况下完成分析;
    • 比较模型系数、预测结果的变化,再做决策;
    • 在报告中清楚说明自己对异常点的处理策略与理由。