如何识别和删除 R 中的异常值

数据挖掘 机器学习 r 线性回归 离群值
2022-03-01 19:02:07

我正在根据尺寸和其他属性对我们购买的产品价格进行回归分析。

然而,在奇怪的情况下经常会出现购买,这会影响价格,这在分析的特征中没有(也不能)直接解决。

每次我运行回归时,我都会手动检查误差最大的 20 个,并且 90% 以上的时间它们会像前面提到的那样是奇数购买,出于我的目的可以完全忽略。

我一直在研究厨师距离以消除这些,但是我不确定如何最好地设置阈值,或者是否有更好的方法可以使用。

2个回答

库克距离和替代方法 DFFITS 并不是严格意义上的检测纯粹异常值意义上的“异常值”的方法,而是检测“有影响的”点,在这些点中,将值留在或退出分析会显着改变结果。因此,库克的距离衡量的是在省略特定观察时 beta 值的变化程度,这与检测异常值本身是不同的想法,尽管它们自然通常是相同的点。

根据您对问题的描述,检测影响点可能是您实际尝试做的事情。

为了直接回答您关于库克距离阈值的问题,通常使用具有 p 和 np 的 F 统计量(其中 p 是回归量的数量,n 是观察值)自由度。

回归中的异常值本身更经常通过残差分析来识别,例如,如果数据点的对应残差在数据集的上下文中很大。这通常被认为是当值与残差的平均值相差超过三个标准偏差时(尽管请注意,在足够大的数据集中,一个拟合良好的模型仍然会在这个级别有一些观察结果)

您应该使用稳健的回归,例如lmrob来自 R-package robustbase