plot.lm() 如何确定残差与拟合图的异常值?

Posted

技术标签:

【中文标题】plot.lm() 如何确定残差与拟合图的异常值?【英文标题】:How does plot.lm() determine outliers for residual vs fitted plot? 【发布时间】:2017-01-08 14:43:13 【问题描述】:

plot.lm() 如何确定残差与拟合图的哪些点是异常值(即标记哪些点)?我在documentation 中找到的唯一内容是:

详情

sub.caption - 默认情况下,函数调用 - 当绘图位于单独的页面上时,在每个绘图上显示为副标题(在 x 轴标题下),或者在外边距显示为副标题(如果有)每页有多个图。

“Scale-Location”图,也称为“Spread-Location”或“S-L”图,取绝对残差的平方根以减少偏度(sqrt(|E|))要小得多偏斜于 | E |为高斯零均值 E)。

“S-L”、QQ 和残差-杠杆图使用具有相同方差的标准化残差(在假设下)。它们以 R[i] / (s * sqrt(1 - h.ii)) 的形式给出,其中 h.ii 是 hat 矩阵的对角线元素,influence()$hat(另见 hat),其中 Residual-杠杆图对 R[i] 使用标准化的 Pearson 残差 (residuals.glm(type = "pearson"))。

Residual-Leverage 图显示了 Cook.levels 值(默认为 0.5 和 1)的等值 Cook 距离的等高线,并省略了带有警告的杠杆情况。如果杠杆是恒定的(在平衡 aov 情况下通常是这种情况),则该图使用因子水平组合而不是 x 轴的杠杆。 (因子水平按平均拟合值排序。)

在 Cook 距离 vs 杠杆/(1-杠杆)图中,大小相等的标准化残差的等高线是通过原点的线。等高线标有大小。

但它没有说明残差与拟合图的生成方式以及它如何选择要标记的点。

更新:Zheyuan Li 的回答表明,残差与拟合图标记点的方式实际上是通过查看残差最大的 3 个点。情况确实如此。可以用下面这个“极端”的例子来证明。

x = c(1,2,3,4,5,6)
y = c(2,4,6,8,10,12)
foo = data.frame(x,y)
model = lm(y ~ x, data = foo)

【问题讨论】:

@ZheyuanLi 谢谢。我确实在文档中看到了这一点,我想知道为什么我们没有像 id.n = ALL 这样的选项。现在说得通了。 【参考方案1】:

这是 3 个绝对最高的拟合值

r <- abs(selectedMod$residuals)
order((r), decreasing = TRUE)[1:3]

【讨论】:

【参考方案2】:

他们找出最大的 3 个绝对标准化残差。考虑这个例子:

fit <- lm(dist ~ speed, cars)
plot(fit, which = 1)

r <- rstandard(fit)  ## get standardised residuals
order(abs(r), decreasing = TRUE)[1:3]
# [1] 49 23 35

【讨论】:

以上是关于plot.lm() 如何确定残差与拟合图的异常值?的主要内容,如果未能解决你的问题,请参考以下文章

R语言回归模型诊断方式有哪些?如何解读这些诊断方式?:残差和样本杠杆值的关系图比例-位置图正太QQ图残差和拟合曲线关系图

失拟P值怎么计算

EXCEL中R的平方值代表啥意思?

R语言使用nls拟合,为啥总说循环次数大于50

更改计算最佳拟合线的方法

R语言lm函数拟合多元线性回归模型(无交互作用)并诊断模型diagnostics使用plot函数打印回归模型的Q-Q图残差拟合图标度-位置图残差与杠杆关系图