绘制残差与剩余变量
Plotting residuals vs. remaining variables
目前我正在使用基于 R 中 pairs
命令的脚本来查找给定模型的残差与剩余变量之间的关系。这种关系对于模型诊断可能很重要。您可以在下面查看我的代码,以了解我当前如何绘制关系的一个小示例。
如果我的模型中有很多变量(比如 ~10),那么 pairs
图会变得非常大。我只查看 pairs
图的底行与残差的关系,因此可以大大简化该图。谁能推荐一个命令来仅绘制成对图的底行或类似的东西?
如果新的绘图方法可以使用网格进行残差分析,而不是使用非常宽的绘图,那就太好了。
gpa <- read.delim("GPA.txt", dec = ",")
mod <- lm(CGPA ~ HSGPA + Studytime, data = gpa)
pairs(cbind(gpa, residuals(mod)), panel=panel.smooth)
dput(gpa)
dput 的输出(gpa)
structure(list(Studytime = c(7, 2, 4, 3.5, 4.5, 3, 3, 8, 5.5,
5.5, 5, 7, 9, 4, 10, 3, 3, 3.5, 4.5, 3.5, 2, 6, 6, 4, 3, 4, 10,
4.5, 7, 5, 3, 8, 5, 8, 4.5, 2, 3, 6, 10, 2, 12, 5, 4, 3, 4, 4,
4, 5, 15, 4.5, 4, 4, 5, 5, 6, 3, 3, 2, 2.3), HSGPA = c(3.9, 3.79,
3, 3.9, 3.6, 3.2, 3.78, 3.2, 3.5, 3.8, 3.89, 3.8, 4, 3.3, 3.7,
3.9, 3.5, 3.9, 4, 3.5, 3.79, 3.9, 3.5, 3.8, 4, 3.5, 2.55, 3.8,
4, 4, 4, 3.8, 4, 4, 4, 4, 4, 3.86, 4, 4, 3.9, 4, 4, 4, 4, 4,
4, 4, 4, 3.7, 3.75, 3.94, 3.9, 3.9, 4, 3.97, 4, 4, 3.6), CGPA = c(3.3,
3.13, 3.6, 3.5, 3.5, 3.75, 3.47, 2.8, 2.88, 3.28, 3.53, 3.5,
3.98, 2.6, 3.5, 3.98, 3.75, 3.67, 3.75, 3.9, 3.1, 3.14, 3.8,
3.7, 3.87, 3.31, 3.14, 2.98, 4, 3.77, 4, 3.49, 3.99, 3.78, 3.92,
3.77, 3.83, 3.86, 3.86, 3.93, 3.91, 4, 3.73, 3.75, 3.99, 3.8,
3.77, 3.95, 3.74, 3.65, 3.83, 4, 3.2, 3.6, 3.75, 3.77, 3.83,
3.7, 2.5)), .Names = c("Studytime", "HSGPA", "CGPA"), class = "data.frame", row.names = c(NA,
-59L))
要根据其他变量绘制残差(y 轴)并包含 panel.smooth
方法,您可以使用以下代码,它给出 n
(在本例中为 3)不同地块:
# plotting just the lowest plots
sapply(1:ncol(gpa), function(i) {
plot(x = gpa[, i], y = residuals(mod), xlab = names(gpa)[i])
panel.smooth(x = gpa[, i], y = residuals(mod))
})
如果你想在一页上绘制图表,你可以使用 par(mfrow = c(2,2))
进行调整(它给出了 2x2 的绘图矩阵)。
目前我正在使用基于 R 中 pairs
命令的脚本来查找给定模型的残差与剩余变量之间的关系。这种关系对于模型诊断可能很重要。您可以在下面查看我的代码,以了解我当前如何绘制关系的一个小示例。
如果我的模型中有很多变量(比如 ~10),那么 pairs
图会变得非常大。我只查看 pairs
图的底行与残差的关系,因此可以大大简化该图。谁能推荐一个命令来仅绘制成对图的底行或类似的东西?
如果新的绘图方法可以使用网格进行残差分析,而不是使用非常宽的绘图,那就太好了。
gpa <- read.delim("GPA.txt", dec = ",")
mod <- lm(CGPA ~ HSGPA + Studytime, data = gpa)
pairs(cbind(gpa, residuals(mod)), panel=panel.smooth)
dput(gpa)
dput 的输出(gpa)
structure(list(Studytime = c(7, 2, 4, 3.5, 4.5, 3, 3, 8, 5.5,
5.5, 5, 7, 9, 4, 10, 3, 3, 3.5, 4.5, 3.5, 2, 6, 6, 4, 3, 4, 10,
4.5, 7, 5, 3, 8, 5, 8, 4.5, 2, 3, 6, 10, 2, 12, 5, 4, 3, 4, 4,
4, 5, 15, 4.5, 4, 4, 5, 5, 6, 3, 3, 2, 2.3), HSGPA = c(3.9, 3.79,
3, 3.9, 3.6, 3.2, 3.78, 3.2, 3.5, 3.8, 3.89, 3.8, 4, 3.3, 3.7,
3.9, 3.5, 3.9, 4, 3.5, 3.79, 3.9, 3.5, 3.8, 4, 3.5, 2.55, 3.8,
4, 4, 4, 3.8, 4, 4, 4, 4, 4, 3.86, 4, 4, 3.9, 4, 4, 4, 4, 4,
4, 4, 4, 3.7, 3.75, 3.94, 3.9, 3.9, 4, 3.97, 4, 4, 3.6), CGPA = c(3.3,
3.13, 3.6, 3.5, 3.5, 3.75, 3.47, 2.8, 2.88, 3.28, 3.53, 3.5,
3.98, 2.6, 3.5, 3.98, 3.75, 3.67, 3.75, 3.9, 3.1, 3.14, 3.8,
3.7, 3.87, 3.31, 3.14, 2.98, 4, 3.77, 4, 3.49, 3.99, 3.78, 3.92,
3.77, 3.83, 3.86, 3.86, 3.93, 3.91, 4, 3.73, 3.75, 3.99, 3.8,
3.77, 3.95, 3.74, 3.65, 3.83, 4, 3.2, 3.6, 3.75, 3.77, 3.83,
3.7, 2.5)), .Names = c("Studytime", "HSGPA", "CGPA"), class = "data.frame", row.names = c(NA,
-59L))
要根据其他变量绘制残差(y 轴)并包含 panel.smooth
方法,您可以使用以下代码,它给出 n
(在本例中为 3)不同地块:
# plotting just the lowest plots
sapply(1:ncol(gpa), function(i) {
plot(x = gpa[, i], y = residuals(mod), xlab = names(gpa)[i])
panel.smooth(x = gpa[, i], y = residuals(mod))
})
如果你想在一页上绘制图表,你可以使用 par(mfrow = c(2,2))
进行调整(它给出了 2x2 的绘图矩阵)。