问题
已经做完了线性回归,现在想检查一下所得到的模型的质量。
解决方案
首先把这个模型画出来,可以得到几个用来判断模型质量的图:
> m <- lm(y ~ x) > plot(m)
接下来,可以看一下残差的图,这可以发现可能的异常值。也可以用car包中的outlier.test函数:
> library(car) > outlier.test(m)
最后,可以看看哪些观察有较大的影响(例如可以用influence.measures函数)。
讨论
在R中,线性回归分析变得无比简单,一个lm函数就摆平了一切。但拟合数据还仅仅是万里长征第一步。最终决定成败的是拟合的模型是否能真正地派上用场,而且有好效果。
首先,模型必须要是统计显著的。检查模型摘要(见第22招)中的F统计量,确保它的P值足够小。通常来说,P值应该小于0.05,否则模型就可能没意义。
简单的画出model对象,也可以得到一些有用的诊断图:
> m <- lm(y ~ x) > plot(m)
图1-7中是一个拟合效果很好的回归的诊断图:
- Residuals vs Fitted(残差vs拟合值)图中的点是随机散布的,没有任何特别的模式。
- 正态Q–Q图中的点基本上是在对角线上的,说明残差基本符合正态分布。
- 在Scale–Location图和Residuals vs Leverage图中的点都没有远离中心。
图1-7:拟合效果较好的模型
与之相对的是,图1-8中的诊断图就说明回归模型的效果不太好。在残差vs拟合值图中是有明显的抛物线。这就说明该模型是不完全的:有一个二次因素没有考虑到。残差的不同模型说明了不同的问题,例如,锥形表示y中有非常数方差。解释这些模式是一件很艺术的事情,最好是去看看关于线性回归的书。
图1-8中还能看出一些问题。跟好的回归相比,这里的正态Q-Q图中有太多的点没在对角线上。在Scale–Location和Residuals vs Leverage图中,有不少点偏离中心位置,说明部分样本有明显的杠杆作用。
图1-8 拟合效果较差的模型
另一个现象是,编号28的点在每个图中都显得与众不同。这实际上是在警告我们,这个观察很特别。比如,这有可能是个异常值。可以用car包的outlier.test函数来检查一下:
> outlier.test(m) max|rstudent| = 3.183304, degrees of freedom = 27, unadjusted p = 0.003648903, Bonferroni p = 0.1094671 Observation: 28
outlier.test可以发现模型中最异常的观察。在这里,它发现了28号观察,这说明28号应该是个异常值。
扩展阅读
标准的R中并没有包含car包,需要用install.packages下载安装。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。