作者丨丹丹
来源丨医数思维云课堂(ID:Datamedi)
数据处理时往往会遇到异常观测值,而这些值会降低我们所构建的回归模型的精度,因此异常观测值的检测和处理就显得极为重要了。
对模型有异常影响的数据,包括离群点、高杠杆值点和强影响点。这些数据需要格外关注,因为它们可能对回归模型有较大的影响,甚至导致模型失败。今天小编利用一个实例在R软件中向大家展示如何对异常观测值进行分析。
实例: 27名糖尿病人的血清总胆固醇(mmol/L)、甘油三酯(mmol/L)、空腹胰岛素( uU/mL)、 糖化血红蛋白(% )、空腹血糖( mmol/L)的测量值列于下表中。
将数据整理成下图所示的Excel文件:
首先,利用R语言中的readxl包中的read_xlsx()函数读入数据。
接下来利用R语言中的lm( )函数建立回归模型。
lm.model<-lm(y~.,data = exam.data)
下一步就进入今天的主题——异常观测值分析。
01 离群点
离群点是指利用所构建的回归模型进行预测,预测结果较差的观测值。
car包提供了离群点的统计检验方法,利用outlierTest( )函数可以计算最大标准化残差绝对值bonferroni调整p值,可作为判断是否为离群点的依据。
结果显示,第13号数据预测的残差值最大,但还没有被判断为离群点(Bonferroni p=0.65476)。
注意:outlierTest( )函数是根据单个预测残差最大的数据来判断是否有离群点存在,如果不显著(Bonferroni p>0.05),则表明不存在离群点,如果显著(Bonferroni p<0.05),需要将该次判断为离群点的数据删除之后,重新判断留下的数据中是否还有其他离群点存在。
02 强影响点
强影响点是指对回归模型参数估计值影响较大的数据。如果将该数据移除,回归模型将会发生非常大的变化,难么就需要检测数据中是否存在强影响点。R语言中可通过绘制Cook统计量图和变量添加图来检测强影响点。
1. Cook统计量图
一般说来,Cook统计量的值大于4/(n-k-1),则表明它是强影响点,其中n为样本量大小,k是预测变量数目。
cutoff<-4/(nrow(exam.data)-length(lm.model$coefficients)-2)
plot(lm.model,which = 4,cook.levels = cutoff)
abline(h=cutoff,lty=2,col="red")
通过Cook统计量图可以看出有3个强影响点(6,13,26号数据)。若删除这些点,将会导致回归模型截距项和斜率发生显著变化。
2. 变量添加图
car包中的avPlots()函数可绘制变量添加图。变量添加图是指对于每个预测变量xi,绘制xi在其他i-1个自变量上回归的残差值相对于因变量在其他i-1个自变量上回归的残差值的关系图。
avPlots(lm.model,ask = FALSE,onepage=TRUE,id.method="identify")
在变量添加图中,直线表示相应预测变量的实际回归系数。我们可以通过删除某些强影响点后直线的改变情况,以此估计强影响点的影响效果。例如,右上角的图("y|others" VS "x2|others"),若删除点13,直线将往正向移动。
03 高杠杆值点
高杠杆值点是与其他自变量有关的离群点,即高杠杆值点是由多个异常的自变量值组合起来的,与因变量无关。高杠杆值点可以通过帽子统计量评价。对于一个给定的数据集,如果观测点的帽子值大于帽子均值的2倍或3倍,即可认定其为高杠杆值点。
高杠杆值点的分布图由以下代码实现:
水平标注的是帽子均值的2倍和3倍的位置。绘图过程中,可以通过交互模式绘图,单击感兴趣的点,就可以对该点进行标注,点击finish即可停止标注。此图中,第26,7号数据有异常表现,可认为是高杠杆值点。
在上图中,纵坐标超过+2的点可认为是离群点;水平轴超过0.2或0.3的点有高杠杆值;圆圈的大小与影响成比例,圆圈很大的点,可能是对所构建的线性回归模型参数估计造成影响的强影响点。
到这里,回归模型中异常观测值分析的讲解就结束了,希望今天小编所介绍的方法能对大家有用。