You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过学生化残差对线性回归模型进行样本子集筛选?

关于用学生化残差筛选线性回归样本的解答

核心结论

你完全可以用学生化残差完成线性回归的样本子集异常值筛选,它是行业内识别回归异常观测的主流可靠指标之一,你提到的「删除学生化残差绝对值超过2的观测」也是通用的经验操作方案,但执行过程中需要注意几个边界限制,避免引入模型偏差。

学生化残差适合做筛选的核心原因

  • 它是标准化后的残差指标:将普通残差除以对应观测的残差标准误,阈值不受原始数据量纲影响,不同数据集的筛选标准可以统一
  • 它规避了异常值对拟合结果的干扰:计算第i个观测的学生化残差时,会先排除第i个观测本身再拟合回归模型,不会因为极端观测拉偏全局拟合结果导致异常值漏判,对高杠杆点的识别灵敏度远高于普通残差
  • ±2的阈值对应近似95%置信区间,样本量不小于30的场景下,误删有效观测的概率低于5%,平衡了漏判和误判的风险。

操作注意事项

  • 筛选需要迭代执行:删除第一轮识别的异常值后,必须重新拟合回归模型,重新计算新模型的学生化残差,再次做异常值检验。删除旧异常值会改变模型拟合结果,可能暴露之前被掩盖的新异常值
  • 先排查模型问题再删样本:如果某类特征的观测批量出现学生化残差超阈值的情况,优先检查是不是模型设定错误,比如漏了关键自变量、没有做变量非线性变换、没有处理异方差问题,不要直接删除这类观测,否则会得到只能拟合当前小样本的过拟合模型,泛用性极差
  • 小样本场景可以放宽阈值:如果你的样本量小于30,可以把阈值调整到±3,对应近似99%置信区间,进一步降低误删有效样本的概率。

常用实现代码示例

R语言实现

# 拟合初始线性回归模型
fit <- lm(y ~ x1 + x2 + x3, data = raw_df)
# 计算所有观测的外部学生化残差
student_resid <- rstudent(fit)
# 筛选残差绝对值≤2的观测构建新数据集
filtered_df <- raw_df[abs(student_resid) <= 2, ]

Python实现(基于statsmodels)

import statsmodels.api as sm
# 给自变量加截距项
X = sm.add_constant(raw_X)
# 拟合初始线性回归模型
fit = sm.OLS(raw_y, X).fit()
# 计算所有观测的外部学生化残差
student_resid = fit.get_influence().resid_studentized_external
# 筛选残差绝对值≤2的观测
filter_mask = abs(student_resid) <= 2
filtered_X, filtered_y = X[filter_mask], raw_y[filter_mask]

内容的提问来源于stack exchange,提问作者Malte Rieger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 01:54:03