多元回归 avPlots 与 termplot

机器算法验证 r 回归 多重回归 数据可视化 残差
2022-03-18 19:28:05

avplot 和 termplot 有什么区别?

假设我在 R 中运行以下模型:

sex <- rep(c("Male", "Female"), times= 500)
value1 <- runif(1000, min=1, max=10)
value2 <- runif(1000, min=1, max=100)
value3 <- runif(1000, min=1, max=200)
response <- runif(1000, min=1, max=100)

df <- data.frame(sex, response, value1, value2, value3)

model<-lm(scale(response) ~ scale(value1) + scale(value2) + scale(value3) + factor(sex), data=df)

如果我想可视化我的预测者和我的预测者之间的关系response,我可以使用这个car包并创建avPlots

library(car)
avPlots(model)

在此处输入图像描述

或者为我的每个预测变量创建术语图:

termplot(model, partial.resid = TRUE, se = TRUE, ask = F)

在此处输入图像描述

它们似乎都在显示不同的东西(例如,X 轴在不同的比例上,而 Y 轴正在绘制不同的东西)

谁能向我解释这两种情节之间的区别?他们实际上在展示什么?如果我想在我的多元回归模型中可视化响应和预测变量之间的关系,使用哪个正确的图?

1个回答

termplotcrPlot: 部分残差图

这些函数在 y 轴上显示部分残差,在 x 轴上显示焦点变量以及相应的回归线。回归线的斜率将与完整模型中焦点变量的系数相同。这种类型的图也称为分量加残差图部分残差图。它们通常用于检测特定预测变量和响应之间可能存在的非线性。因此,此类图的主要用途是确定是否需要对焦点预测变量进行转换。部分残差图按如下方式创建:xi

  1. 回归所有预测变量的响应y
  2. 存储此模型的残差r=yy^=yβ^X
  3. 现在加回焦点预测器的估计影响以获得部分残差:xiri=r+β^ixi=yjiβ^jxj
  4. 绘制可能添加回归线。rixi

使用来自问题的数据:

#=====================================================================
# Partial residual plot
#=====================================================================

set.seed(142857)
sex <- factor(rep(c("Male", "Female"), times= 500))
value1 <- scale(runif(1000, min=1, max=10))
value2 <- scale(runif(1000, min=1, max=100))
value3 <- scale(runif(1000, min=1, max=200))
response <- scale(runif(1000, min=1, max=100))

df <- data.frame(sex, response, value1, value2, value3)

model <- lm(response ~ value1 + value2 + value3 + sex, data=df)

# The partial residuals
part_res <- resid(model) + df$value1*coef(model)["value1"]

plot(part_res~value1, data = df, ylab = "Partial residuals", xlab = "value1", las = 1)
abline(lm(part_res~value1, data = df), col = "steelblue2", lwd = 3)

偏残差图

可以很容易地检查该图与由termplot(此处未显示输出)创建的图相同:

termplot(model, terms = "value1", partial.resid = TRUE, se = TRUE, ask = FALSE, las = 1, col.res = "black")

avPlot: 加变量图

此函数创建所谓的附加变量图,有时也称为部分回归图之间的部分关系,并针对模型中的所有其他预测变量进行了调整。实际上,添加变量图将维回归问题简化为一系列 2D 图(用于更多焦点预测变量)。这种图表是使用以下步骤创建的:xi(k+1)

  1. 计算一个模型,对除焦点预测变量之外的所有预测变量存储此模型的残差。该模型的残差是响应之外的所有预测变量都没有“解释”的部分yxiyxi
  2. 在所有其他预测器上回归焦点预测器并存储残差。这些残差是中未被其他预测变量“解释”的部分(即的部分)。xixixi
  3. 将步骤 1 的残差绘制在 y 轴上,将步骤 2 的残差绘制在 x 轴上。如果您愿意,可以添加回归线。

再次使用上述数据:

#=====================================================================
# Added-variable plot
#=====================================================================

model2 <-lm(response ~ value2 + value3 + sex, data=df)
resid2 <- residuals(model2)

model3 <- lm(value1~value2 + value3 + sex, data=df)
resid3 <- residuals(model3)

plot(resid2~resid3, las = 1, xlab = "value1 | others", ylab = "response | others")
abline(lm(resid2~resid3), col = "steelblue2", lwd = 3)

加变量图

该图有一些非常有用的属性:

  • 与部分残差图中一样,回归线的斜率与完整模型中xi
  • 与部分残差图相比,加变量图中回归线的残差与完整模型的残差相同。
  • 因为 x 轴上的值显示焦点预测变量的值取决于其他预测变量,所以在给定其他预测变量的值的情况下,向左或向右的点是的值异常的情况。因此,可以很容易地看到有影响的数据值。xixi
  • 该图可用于检测非线性、异方差和异常模式。

比较

部分回归图上的维基百科页面总结了(我的小改动):

部分回归图 [添加变量图] 与部分残差图相关但不同。偏回归图最常用于识别具有高杠杆率的数据点和可能不具有高杠杆率的有影响力的数据点。部分残差图最常用于识别之间关系的性质(考虑到模型中其他自变量的影响)。请注意,由于绘制的两组残差之间的简单相关性等于响应变量和之间线性关系的正确强度YXiXiXi. 这不适用于部分残差图。另一方面,对于偏回归图,x 轴不是这限制了它在确定是否需要转换(这是部分残差图的主要目的)方面的有用性。Xi

参考

Fox J, Weisberg S (2019):应用回归的 R 伴侣。第三版。圣人出版物。

Velleman P , Welsch R (1981):回归诊断的高效计算。美国统计学家。35(4):234-242。