我正在执行多元回归分析,不确定是否应该删除数据中的异常值。我关注的数据在SPSS箱形图上显示为“圆圈”,但是没有星号(这使我认为它们并不“糟糕”)。我关注的案例确实出现在输出的“案例诊断”表下-因此我应该删除这些案例吗?
我正在执行多元回归分析,不确定是否应该删除数据中的异常值。我关注的数据在SPSS箱形图上显示为“圆圈”,但是没有星号(这使我认为它们并不“糟糕”)。我关注的案例确实出现在输出的“案例诊断”表下-因此我应该删除这些案例吗?
Answers:
标记异常值不是判断的依据(或者在任何情况下都不必是判断依据)。给定一个统计模型,离群值有一个精确的客观定义:它们是不遵循大多数数据模式的观察结果。这种观察需要在任何分析开始时加以区分,仅因为它们与大量数据的距离可确保它们对最大似然拟合的任何多变量模型(或实际上是任何其他凸损失函数)施加不成比例的拉力。
需要指出,重要的是多变量离群小号可以简单地不使用残差从最小二乘拟合(或由ML估计的任何其他模型,或任何其他凸损失函数)被可靠地检测。简而言之,多变量离群值只能通过使用不易受其影响的估计程序拟合的模型中的残差来可靠地检测出来。
认为离群值将在经典拟合的残差中脱颖而出的信念排在其他地方,还有其他难以揭穿的统计否定值,例如将p值解释为证据的度量或从有偏见的样本中推断总体。也许除了这个可能更老之外:高斯本人建议使用鲁棒的估计器(例如中位数和mad(而不是经典的均值和标准差))从嘈杂的观测值中估计正态分布的参数(甚至进行就推导mad(1)的一致性因子而言。
为了给出一个基于实际数据的简单直观示例,请考虑臭名昭著的CYG星数据。这里的红线表示最小二乘拟合,蓝线表示使用稳健的线性回归拟合获得的拟合。这里的稳健拟合即FastLTS(2)拟合,它是LS拟合的替代方法,可用于检测离群值(因为它使用一种估计程序来确保任何观测值对估计系数的影响都是有限的)。重现它的R代码是:
library(robustbase)
data(starsCYG)
plot(starsCYG)
lm.stars <- lm(log.light ~ log.Te, data = starsCYG)
abline(lm.stars$coef,col="red",lwd=2)
lts.stars <- ltsReg(log.light ~ log.Te, data = starsCYG)
abline(lts.stars$coef,col="blue",lwd=2)
有趣的是,相对于LS拟合和LS拟合的残差的QQ图(或从中得出的任何诊断工具,例如库克距离或dfbeta)无法显示其中任何一个有问题。这实际上是一种规范:以不超过两个异常值(不考虑样本大小)的方式得出最小二乘估计值,以使异常值不会在残差图中脱颖而出。这就是所谓的掩盖效果并且有据可查。也许CYGstars数据集的唯一显着之处是它是双变量的(因此我们可以使用目视检查来确认稳健拟合的结果),并且对于为什么这四个观察值如此异常实际上有很好的解释。
顺便说一句,这是除规则之外的例外:除了在涉及少量样本和少量变量的小型试点研究中,并且在进行统计分析的人员也参与了数据收集过程的情况下,我从未遇到过这样的情况:异常值的标识实际上是真实的。顺便说一下,这很容易验证。无论是否使用离群值检测算法或研究人员的直觉来识别离群值,从定义上看,离群值都是对从LS拟合获得的系数具有异常杠杆作用(或“拉动”)的观察结果。换句话说,离群值是从样本中去除会严重影响LS拟合的观察值。
尽管我也从未亲身经历过,但是在文献中有一些文献充分记录的案例,后来发现异常值检测算法标记为异常值的观察结果是严重错误或由其他过程产生。在任何情况下,仅以某种方式可以理解或解释的异常值都无法消除,因此从科学上讲也不是明智的选择。如果一小部分观察结果与数据主体相去甚远,以至于它可以单凭一己之力就可以得出统计过程的结果,那么明智的做法(我可能会自然而然地)将其分开,无论是否并非这些数据点也可能出于其他原因而令人怀疑。
(1):参见斯蒂芬·斯蒂格勒(Stephen M. Stigler),《统计历史:1900年之前的不确定性的度量》。
(2):为大型数据集计算LTS回归(2006)PJ Rousseeuw,K. van Driessen。
(3):高故障稳健多元方法(2008)。Hubert M.,Rousseeuw PJ和Van AelstS。资料来源:统计学家。科学 第23卷,第92-119页。
总的来说,我很警惕删除“异常值”。可以在存在非正态分布的错误,表现出异方差的错误或与其余变量“相距较远”的预测变量/独立变量的值的情况下正确地进行回归分析。离群值的真正问题是它们没有遵循每个其他数据点都遵循的线性模型。您怎么知道是这种情况?你不知道
如果有的话,您不想查找离群值的变量值;相反,您想查找残差值是离群值。看这些数据点。是否正确记录了它们的变量?是否有任何理由使他们不会采用与您其余数据相同的模型?
当然,这些观察结果可能显示为异常值(根据残留诊断)的原因可能是因为您的模型错误。我有一位教授喜欢说,如果我们抛弃离群值,我们仍然会相信行星会绕太阳绕完美的圆周旋转。开普勒本可以扔掉火星,而圆形轨道的故事看起来还不错。火星提供了关键的见解,认为该模型是不正确的,如果他忽略了该行星,他将错过这个结果。
您提到删除异常值不会对您的结果产生太大影响。这是因为相对于样本您只删除了很少的观测值,或者它们与模型相当一致。这可能表明,尽管变量本身看起来可能与其他变量不同,但它们的残差并不是那么突出。我会把它们留在原地,而不是试图证明我的决定要消除我的批评者的某些观点。
+1 @Charlie和@PeterFlom; 您在那里获得了很好的信息。也许我可以通过质疑问题的前提在这里做出一点贡献。一箱线一般(软件可以改变的,我不知道知道什么SPSS做)标注点的1.5倍以上各国四分位数高于(低于)第三(第一)四分位数为“异常值”。但是,当我们知道所有点都来自同一分布的事实时,我们可以问我们期望多久找到至少一个这样的点?一个简单的模拟可以帮助我们回答以下问题:
set.seed(999) # this makes the sim reproducable
outVector = vector(length=10000) # to store the results
N = 100 # amount of data per sample
for(i in 1:10000){ # repeating 10k times
X = rnorm(N) # draw normal sample
bp = boxplot(X, plot=FALSE) # make boxplot
outVector[i] = ifelse(length(bp$out)!=0, 1, 0) # if there are 'outliers', 1, else 0
}
mean(outVector) # the % of cases w/ >0 'outliers'
[1] 0.5209
这表明,在大小为100的样本中,即使没有任何缺陷,也可以预期此类点会普遍发生(> 50%的时间)。就像最后一句话所暗示的那样,通过箱线图策略发现假“离群值”的可能性将取决于样本量:
N probability
10 [1] 0.2030
50 [1] 0.3639
100 [1] 0.5209
500 [1] 0.9526
1000 [1] 0.9974
还有其他策略可以自动识别离群值,但是任何此类方法有时都会将有效点误识别为“离群值”,有时会将真正的离群点误识别为“有效点”。(你可以把这些作为I型和II型错误。)我在这个问题上(对于它的价值)的思想是把重点放在影响,包括/问题排除点。如果您的目标是预测,则可以使用交叉验证来确定是否/在多大程度上包括所涉及的点会增加预测的均方根误差。如果您的目标是解释,那么可以看看dfBeta(即,查看模型的beta估算值根据所考虑的点是否包括在内而变化了多少)。另一个观点(可以说是最好的)是避免不得不选择是否应该抛出异常点,而只是使用可靠的分析。
首先,您应该查看残差图:它们是否遵循(大致)正态分布?它们显示出异方差的迹象吗?还要查看其他图(我不使用SPSS,因此无法确切说明该程序中的操作方式,也无法说明正在查看的箱形图;但是,很难想象星号的意思是“还不错”从某些标准来看,这些都是非常不寻常的点)。
然后,如果您有异常值,请查看它们并尝试找出原因。
然后,您可以尝试使用有无异常值的回归。如果结果相似,则生活是美好的。报告全部结果并添加脚注。如果不相似,则应解释两个回归。