生物统计专题 | 回归诊断:模型合理性的检测
2015-03-12 bgstn
上期内容回顾
上期介绍了一元多项式回归和多元线性回归,一元多项式回归能够建立非线性模型,而多元线性回归能够通过分析多个自变量来预测因变量,一起来回顾一下吧
⊙ 一元多项式回归:使用lm()函数拟合模型,使用summary()函数显示模型具体结果。拟合模型时参数formula形式比较特殊,比如一个一元三阶多项式回归的formula是:y~x1+I(x1^2)+I(x1^3);作图需要使用lines()函数。
⊙ 多元线性回归:与一元线性回归相同。
温馨提示:温故而知新,点击文章末尾“阅读原文”查看上期内容~~
本期内容导读
前面的内容,我们都是使用lm()函数拟合回归模型,通过summary()函数获取模型系数及其显著性检验结果。但是,没有任何输出告诉你这个模型适是否合适,模型是否正确依赖于它在多大程度上满足了OLS回归的假设条件。
为什么这很重要?因为数据的无规律性或者你错误设定了因变量和自变量的关系,都将致使你的模型产生巨大的偏差。在将模型应用到真实世界中时,预测效果可能很差。此时,回归诊断作为回归模型构建的评价工具就显出了其重要性,它能帮助发现并纠正问题。
回归诊断
首先,我们有必要回顾一下线性回归的一系列前提假设:
1.因变量与自变量之间有线性关系(线性)
2.各观测值之间相互独立(独立性)
3.残差服从N(0, σ^2)的正态分布,等价于任意自变量、因变量具有相同方差,并且服从正态分布(正态性和同方差性)。
接下来,先看看在R基础包中函数的标准方法,然后看看car包中改进了新方法。
为方便起见,我们仍采用上期的多元线性回归例子进行介绍。
现测量了 30 名被怀疑患有动脉硬化的就诊患者的载脂蛋白AI(X1)、载脂蛋白 B (X2)、载脂蛋白 E(X3) 、载脂蛋白 C(X4) 、低密度脂蛋白(Y)中的胆固醇含量(单位:mg/dl),资料如下表所示
注:示例数据较多,未完全截取,需要获取源数据进行练习的话,可以回复关键字下载。
>>> R基础包中的标准方法
R基础安装中提供了大量检验回归分析中统计假设的方法。最常见的方法就是对lm()函数返回的对象使用plot()函数,可以生成评价模型拟合情况的四幅图形。下面是上述例子的结果:
提示一下,par(mfrow = c(2, 2))是R作图中常用的参数,这里是将plot()函数绘制的四幅图组合在一个大的2*2的图中。上述代码生成的图形如下所示:
怎么解读:
1、 图1验证的是线性,横坐标为因变量的预测值,而纵坐标为残差,如果因变量与自变量为线性,则这些点的分布应该没有系统关联;
2、 图2是标准化残差的QQ图,验证的是正态性,如果变量满足正态性,则点应落在45度角的虚线上;
3、 图3是位置尺度图,通过标准化残差值与拟合值的关系来验证同方差性,如果假设成立,点应在线两端随机分布;
4、 图4是残差与杠杆图,提供了单个观测点的信息,从图中可以鉴别出离群点、高杠杆值点和影响点。[PS:个人认为可读性比较差]
>>> car包中的改进方法(推荐)
⊙ 正态性
与基础包中的plot()函数相比,qqPlot()函数提供了更为精确的正态假设检验方法。
此外,可通过设置该函数中id.method =“identity”选项启动图形界面交互模式,来识别不符合条件的点的label信息。
⊙ 线性
调用car包中的crPlots()函数,它提供了每个自变量的成分残差图(component plus residual plot),又被称为偏残差图(partial residual plot)。比如自变量X1的偏残差图就是(e+β1X1)关于X1的散点图,其中e为因变量关于所有自变量OLS回归后的残差,β1为该回归中变量X1的系数。这种处理在检验线性关系的时候可以排除掉其他自变量的影响。
可以通过红线和绿线趋势是否一致来判断线性关系。
⊙ 同方差性
car包spreadLevelPlot()函数创建一个添加了最佳拟合曲线的散点图,展示标准化残差绝对值与拟合值的关系。
同方差性的条件下,点应在线的周围水平随机分布。非水平的曲线暗示着异方差性。
拓展延伸
⊙ R中自带数据集mtcars可以作为一个理想的分析例子,有兴趣的读者可以用它练习应用;
⊙ car包中还有许多有用的函数,能够作为回归诊断的良好工具,如influence.plot()做回归ying影响图、ncvTest()检验同方差性等,有兴趣的读者借助R的帮助界面了解学习吧!
点击“阅读原文”回顾上期多项式回归和多元线性回归内容!回复关键字“0310”获取文中示例数据进行对照练习~
喜欢就点赞鼓励一下,多谢~