数据中的异常值,应该直接删除吗?

专题合集更多教程

文章转载自“小白学统计”公众号,感谢作者授权。

 

不少人曾问我:我的数据中有异常值,是不是应该删除?要回答这个问题,我们必须从异常值的概念来谈起。可能有的人觉得异常值很好理解,不就是“异常”的值吗?关键是,怎样才算异常呢?

 

例:在10个数据中(下图黑色点)人为加入红、绿、紫色的3个点,它们都是异常值吗?

 

异常值其实是一个较为宽泛的概念,它至少包含了三种情形

 

(1) 离群值(outliner)

 

离群值是指从因变量y的角度来看属于异常的值,如图中的红色点和绿色点,偏离y的均值较其它点更远。

 

离群值通常采用学生化残差来判断。

 

(2) 高杠杆值(high leverage)

 

高杠杆值是指从自变量x的角度来看属于异常的值,如图中的紫色点和绿色点,在x轴上偏离x的均值较远。

 

高杠杆值通常采用杠杆值来判断。

 

(3) 强影响值(influential observation)

 

强影响值是指对模型影响较大的值,也就是说,如果删除了该值,会导致模型发生很大变化(如系数值改变较大)。

 

强影响点通常采用COOK'D值、DFBETAS和DFFITS来判断。

 

下图比较了不同异常值对模型拟合效果的影响。图中黑色实线表示不含这3个异常值的拟合线,绿色、红色、紫色虚线分别表示含绿色点、红色点、紫色点时的拟合线。

 

不难看出,含有绿色点时,对模型拟合影响几乎不大(与黑色实线几乎重合);含有紫色点时,拟合线被向下拉低,即回归系数远低于黑色实线;含有红色点时,拟合线也被拉低。

 

如果要判断的话,绿色点虽然从x方向和y方向上都偏离均值,但却不是强影响点;紫色点和红色点才是强影响点,因为单独的任一点便可以导致系数发生很大变化。

 

我们现在已经明白了如何判断一个点是不是异常点,紧接着的问题就是,如果我发现了异常点,应该怎么处理不少人习惯简单粗暴的方法,即直接删除。这并不是最好的办法,有时甚至会让你错过一些真正的规律。

 

当你发现异常值后,一定要先分清是什么原因导致的异常值,然后再考虑如何处理。

 

如果是属于录入错误或实验室记录错误等,这很容易,立刻修改即可。

 

如果不是录入错误,而是确实存在这样的异常值,这时需要根据不同情形来分别对待。

 

首先,如果这一异常值并不代表一种规律性的,而是极其偶然的现象,或者说你并不想研究这种偶然的现象,这时可以将其删除例如,你要研究身高与血压的关系,但你的研究人群中恰好纳入了姚明,这种情况下,可以将其删除,只用其他人进行分析。因为这并不代表一种规律性的现象,而且你可能也不想研究特殊的情况。

 

其次,如果异常值存在且代表了一种真实存在的现象,那就不能随便删除比如调查了100个村的胃癌发病率,可能确实有个别村庄的发病率远远高于其它村,这时就不能随便删除,而是要把这些异常点纳入,重新拟合模型,研究其规律。

 

例:某实验室检测了细菌培养菌群数量与时间的关系,试进行分析。

 

很明显,下图中的两个红点是异常点,可以让线性回归的系数发生剧烈变化。

 

那这种情况下是否需要删除这两个值呢?首先看一下这两个值是否实验误差,如果这两个值是准确的,那它很可能代表了一种真实情况。也就是说,在短期内增长缓慢,但是到了一个关键时间点后(如30),种群数量就会剧增。

 

此时如果你直接删除这两个点,就无法真正发现这种规律。所以我们可以纳入这两个点,但是不能拟合线性回归,而是要根据其形状拟合非线性模型。如此处可以考虑对时间time进行指数变换,可以发现变换后模型更能有效地拟合数据。

 

扫码关注“医咖会”公众号,及时获取最新统计教程!

描述问题
选择一个标签 (请选择一个与您问题最相符的标签)
提交问题
我要提问
描述问题
选择一个标签 (请选择一个与您问题最相符的标签)
提交问题
描述问题
选择一个标签 (请选择一个与您问题最相符的标签)
    提交问题