<think>好的,用户现在想了解如何绘制R语言中线性回归模型的残差(r)、Cook距离(C)、DFITS和杠杆值(H)的顺序图以及残差图。首先,我需要回顾之前给他的回答,确保这次的内容保持一致,并且补充新的部分。
用户之前已经询问过如何计算这些统计量,现在需要的是如何将它们可视化。首先,顺序图应该是指按数据顺序(比如时间顺序或观测序号)绘制的统计量变化图,而残差图可能是指残差与拟合值或其他变量的散点图。不过用户提到的“顺势残差图”可能有误,可能是“学生化残差图”或者“标准化残差图”,或者是时间序列中的残差图。需要进一步确认,但根据常规分析,可能是指残差与拟合值或索引的图。
接下来,我需要考虑在R中如何生成这些图形。通常,使用基础绘图函数或ggplot2。用户可能更倾向于基础绘图,因为更直接,但也可以提供ggplot2的选项,以满足不同需求。
顺序图需要按观测顺序(通常是1到n)绘制每个统计量的值,可以用点图或线图,并添加参考线来帮助识别异常值。例如,Cook距离的阈值通常是4/n,杠杆值的阈值是2p/n或3p/n,DFITS的阈值是2*sqrt(p/n)或类似的。残差图可能需要分类型,比如普通残差、学生化残差等,以及它们与拟合值的关系。
需要确保解释每个图的意义,比如顺序图帮助识别特定观测点的影响,残差图检查模型假设如线性、同方差性。此外,可能需要提醒用户如何解读这些图形,比如残差是否随机分布,是否存在模式,以及高杠杆点或强影响点的处理建议。
还要检查是否需要使用par(mfrow)来排列多个图形在一个画面,或者分开展示。另外,可能提到使用influencePlot()函数来自car包,可以一次性生成部分图形,但用户可能需要更定制化的方法。
最后,确保代码示例正确,包括如何提取统计量,绘制图形,添加参考线和标签。可能需要提醒用户注意数据中的高影响点,并解释如何处理这些点,比如检查数据错误,考虑删除或稳健回归方法。
现在需要将这些步骤结构化,用清晰的中文解释,并确保代码正确无误。同时,注意用户可能的背景,可能是学生或研究人员,需要足够的细节帮助他们逐步实现可视化,并理解结果的意义。</think>在 R 语言中,绘制线性回归模型(如 `mode1=lm(Y~X1+X2+X3+X4+X5+X6, data=data)`)的 **残差(r)**、**Cook距离(C)**、**DFITS** 和 **杠杆值(H)** 的顺序图及残差图,可按以下步骤进行:
---
### **1. 顺序图(按观测顺序绘制统计量)**
顺序图用于观察统计量(如残差、Cook距离等)随观测序号的变化趋势,帮助识别异常点或模式。
#### **代码示例:**
```r
# 提取统计量
r <- residuals(mode1) # 残差
C <- cooks.distance(mode1) # Cook距离
DFITS <- dffits(mode1) # DFITS
H <- hatvalues(mode1) # 杠杆值
# 设置画布为 2x2 布局
par(mfrow = c(2, 2))
# 绘制残差顺序图
plot(r, type = "p", pch = 20, col = "blue",
main = "残差顺序图", xlab = "观测序号", ylab = "残差")
abline(h = 0, col = "red", lty = 2) # 添加参考线
# 绘制Cook距离顺序图
plot(C, type = "h", col = "darkgreen",
main = "Cook距离顺序图", xlab = "观测序号", ylab = "Cook距离")
abline(h = 4/length(C), col = "red", lty = 2) # 阈值参考线:4/n
# 绘制DFITS顺序图
plot(DFITS, type = "h", col = "purple",
main = "DFITS顺序图", xlab = "观测序号", ylab = "DFITS")
abline(h = c(-2, 2)*sqrt(7/length(DFITS)), col = "red", lty = 2) # 阈值:±2√(p/n)
# 绘制杠杆值顺序图
plot(H, type = "h", col = "orange",
main = "杠杆值顺序图", xlab = "观测序号", ylab = "杠杆值")
abline(h = 2*7/nrow(data), col = "red", lty = 2) # 阈值:2p/n
```
#### **关键参数说明:**
- `type = "p"`:散点图,`type = "h"` 为垂直线图(更易观察极值)。
- `pch` 和 `col`:控制点的形状和颜色。
- **参考线**:根据阈值标记异常观测(如 Cook距离 > 4/n,杠杆值 > 2p/n)。
---
### **2. 残差图(诊断模型假设)**
残差图用于检查模型假设(如线性、同方差性),常见的残差图包括:
- 残差 vs 拟合值
- 标准化残差 vs 拟合值
- Q-Q 图(正态性检验)
#### **代码示例:**
```r
# 设置画布为 2x2 布局
par(mfrow = c(2, 2))
# 残差 vs 拟合值图
plot(fitted(mode1), r, pch = 20, col = "blue",
main = "残差 vs 拟合值", xlab = "拟合值", ylab = "残差")
abline(h = 0, col = "red", lty = 2)
# 标准化残差 vs 拟合值图
standardized_r <- rstandard(mode1)
plot(fitted(mode1), standardized_r, pch = 20, col = "blue",
main = "标准化残差 vs 拟合值", xlab = "拟合值", ylab = "标准化残差")
abline(h = c(-2, 0, 2), col = c("red", "black", "red"), lty = 2)
# Q-Q 图(正态性检验)
qqnorm(standardized_r, pch = 20, main = "Q-Q 图")
qqline(standardized_r, col = "red", lty = 2)
# 残差分布密度图
plot(density(r), col = "blue", main = "残差密度图", xlab = "残差")
```
#### **图形解读:**
1. **残差 vs 拟合值**:
- 理想情况:点随机分布,无趋势。
- 若存在“漏斗形”或趋势,可能违反同方差性。
2. **Q-Q 图**:
- 点应大致沿红色参考线分布,若偏离则残差非正态。
3. **标准化残差**:
- 绝对值 > 2 的观测可能为异常点。
---
### **3. 综合诊断图(使用 `plot.lm`)**
R 内置的 `plot()` 函数可直接生成回归模型的 6 种诊断图,包括残差、Cook距离等:
```r
par(mfrow = c(2, 2))
plot(mode1, which = 1:4) # 显示前4种诊断图
```
- **`which = 1`**:残差 vs 拟合值
- **`which = 2`**:Q-Q 图
- **`which = 3`**:标准化残差 vs 拟合值(同方差性检验)
- **`which = 4`**:Cook距离顺序图
---
### **4. 使用 `ggplot2` 绘制(进阶)**
若需更美观的图形,可使用 `ggplot2` 扩展包:
```r
library(ggplot2)
# 残差 vs 拟合值图
ggplot(data = data.frame(Fitted = fitted(mode1), Residuals = residuals(mode1)),
aes(x = Fitted, y = Residuals)) +
geom_point(color = "blue") +
geom_hline(yintercept = 0, color = "red", linetype = "dashed") +
labs(title = "残差 vs 拟合值", x = "拟合值", y = "残差")
# Cook距离顺序图
ggplot(data = data.frame(Index = 1:length(C), Cook = C),
aes(x = Index, y = Cook)) +
geom_col(width = 0.5, fill = "darkgreen") +
geom_hline(yintercept = 4/length(C), color = "red", linetype = "dashed") +
labs(title = "Cook距离顺序图", x = "观测序号", y = "Cook距离")
```
---
### **关键点总结**
1. **顺序图**:按观测序号绘制统计量,快速定位异常点(如高 Cook距离的观测)。
2. **残差图**:验证模型假设(线性、正态性、同方差性)。
3. **阈值规则**:
- Cook距离:$C > \frac{4}{n}$
- DFITS:$|\text{DFITS}| > 2\sqrt{\frac{p}{n}}$
- 杠杆值:$h_{ii} > \frac{2p}{n}$
4. **交互式诊断**:使用 `influencePlot()`(来自 `car` 包)可同时显示学生化残差、Cook距离和杠杆值。
通过以上图形,可全面诊断模型的异常点、高杠杆点和强影响点,辅助改进模型!