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

为何library(car)在此处识别出有影响的观测值?求解答

为什么influencePlot会识别出看似“没问题”的有影响观测值?

嘿,这个问题真的很容易让人困惑——明明画出来的散点图里所有点都完美贴合一元线性回归线,怎么car包的influencePlot()就揪出了4个“有影响”的观测值呢?咱们来一步步拆解背后的逻辑:

先搞懂influencePlot的判断规则

influencePlot()标记“有影响观测值”的依据是三个核心指标:帽子值(杠杆)、学生化残差和Cook距离,默认会标记满足以下任一条件的点:

  • 帽子值 > 2*p/n(其中p是模型参数总数,包括截距;n是样本量)
  • 学生化残差的绝对值 > 2
  • Cook距离 > 1

在你的案例里,模型是lm(y ~ x),所以p=2(截距+ x的系数),n=100,帽子值的阈值就是2*2/100=0.04。

你的数据里的“高杠杆点”

你的x是seq(1, 5, len=100),也就是均匀分布在1到5之间的100个点。在简单线性回归中,帽子值衡量的是观测值在自变量空间中的“杠杆作用”——离自变量均值越远的点,杠杆越高,帽子值越大。

对于x的取值来说,最靠近1和5的几个点(比如第1、2、99、100个观测),它们离x的均值(3)最远,所以帽子值会显著高于中间的点,甚至超过0.04的阈值。你可以手动验证这一点:

model <- lm(y ~ x)
# 查看帽子值最高的前4个点
sort(hatvalues(model), decreasing = TRUE)[1:4]

你会发现这四个值都超过了0.04的阈值。

为什么散点图看起来没问题?

因为你的噪声设置得极小(rnorm(..., 0, 0.00005)),这些高杠杆点的残差几乎为0,完全贴合回归直线,所以散点图上看不到任何异常。但influencePlot()会把高杠杆点也标记为“有影响”——因为这些点在自变量空间的极端位置,哪怕现在残差很小,如果它们的y值发生一点变化,对回归系数的影响会比中间的点大得多。

总结

influencePlot()标记的“有影响观测值”,不仅仅是离群点,还包括高杠杆点。你的数据里没有离群点,但两端的x值属于极端位置,杠杆作用大,所以被识别为有影响的观测值——这是工具的正常逻辑,不是数据或代码的问题。

内容的提问来源于stack exchange,提问作者UweM.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:32:46