我们可以使用留一法的均值和标准差来显示离群值吗?


17

假设我有正态分布的数据。对于数据的每个元素,我想检查它远离均值有多少SD。数据中可能有一个异常值(可能只有一个异常值,也可能是两个或三个),但是这个异常值基本上就是我要寻找的。从均值和标准差的计算中暂时排除我当前正在查看的元素是否有意义?我的想法是,如果它接近平均值,则不会产生任何影响。如果是离群值,则可能会影响均值和SD的计算,并降低检测到均值的可能性。我不是统计学家,因此不胜感激!


7
它非常有意义,并且是许多离群值检测技术的基础。但是,您为什么不使用理论上已经过的方法,而不是发明自己的方法,该方法可能会奏效,也可能不会奏效(即使采用统计学家新发明的方法,后者的可能性更大,这就是为什么他们需要仔细研究)。检查和经验检验?
ub

感谢您指出了这一点。我将查找这些技术,并查看它们在我的数据上是否表现良好!
奥利弗

1
查阅有关R中的回归删除诊断的页面:stat.ethz.ch/R-manual/R-patched/library/stats/html/…–
Ben Ogorek

.... 这个答案说明了为什么不能依靠它们找到多个异常值。
2014年

上面关于标记异常值的想法的伟大思想。不久前,我写了一篇有关标记异常的损耗通过滤波器的想法的文章。希望这有助于扩展上面介绍的想法。链接到文章:datascience.com/blog/python-anomaly-detection
Pramit

Answers:


25

这似乎是违反直觉的,但是使用您描述的方法没有任何意义(用您的措辞,我宁愿写“可能导致结果与预期的结果大不相同”),并且永远不要这样做:它不起作用是必然的,此外,还存在一种更简单,更安全和完善的替代方案,无需额外费用。

首先,它是真实的,如果有一个单一的孤立点,那么你最终会使用你的建议的过程中找到它。但是,总的来说(当数据中可能有多个异常值时),您建议的算法会彻底崩溃,这可能会导致您拒绝将一个好的数据点视为异常值或将异常值保留为良好的数据点具有潜在的灾难性后果。

下面,我举一个简单的数值示例,其中您提出的规则被分解,然后提出了一个更安全,更成熟的替代方法,但是在此之前,我将解释a)您提出的方法有什么问题,b)通常首选的方法替代它。

本质上,您不能使用观测值与数据的留一法均值和标准差的距离来可靠地检测离群值,因为您使用的估计值(留一法均值和标准差)仍可能被拉向余数离群值:这称为掩盖效果。

简而言之,一种可靠地检测离群值的简单方法是使用您建议的一般概念(与位置和规模的估计值的距离),但用健壮的估计值代替您使用的估计值(均值,sd),即估计值设计为不易被异常值所干扰。

考虑以下示例,其中我将3个离群值添加到从法线0,1得出的47个真实观测值中:

n    <- 50
set.seed(123)  # for reproducibility
x    <- round(rnorm(n,0,1), 1)
x[1] <- x[1]+1000
x[2] <- x[2]+10
x[3] <- x[3]+10

下面的代码根据留一法平均值和标准差(例如,您建议的方法)来计算离群指数。

out_1 <- rep(NA,n)
for(i in 1:n){  out_1[i] <- abs( x[i]-mean(x[-i]) )/sd(x[-i])  }

这段代码会生成您在下面看到的图。

plot(x, out_1, ylim=c(0,1), xlim=c(-3,20))
points(x[1:3], out_1[1:3], col="red", pch=16)

图像1描绘了离群指数的值随观察值的变化(离群值最远的地方不在此图的范围内,而其他两个以红点显示)。如您所见,除了最极端的一个以外,按照您的建议构建的离群值指数无法揭示离群值:实际上,第二个和第三个(较温和的)离群值现在甚至比所有离群值更小真正的观测值!...根据您建议的方法,可以将这两个极端离群值保留在一组真正的观测值中,从而使您使用剩余的49个观测值,就像它们来自同一均一过程一样,从而为您提供最终的根据0.45和2.32的这49个数据点估计均值和sd,这对样本的任何部分都非常差!

image2

X一世X

ØX一世X=|X一世-X|X

XXX

在R中,第二个离群指标可以计算为:

out_2 <- abs( x-median(x) )/mad(x)

并绘制(如前)使用:

plot(x, out_2, ylim=c(0,15), xlim=c(-3,20))
points(x[1:3], out_2[1:3], col="red", pch=16)

image2

图2绘制了同一数据集的该替代偏远指数的值。如您所见,现在所有这三个异常值都清楚地显示出来了。此外,该异常值检测规则具有一些已建立的统计属性。除其他外,这导致了可用的截止规则。例如,如果可以假设数据的真实部分是从具有有限第二矩的对称分布中提取的,则可以拒绝所有数据点

|X一世-X|X>3.5

作为离群值。在上面的示例中,应用此规则将使您正确标记观察值1,2和3。拒绝这些值,其余观察值的平均值和sd分别为0.021和0.93,可以更好地描述样本的真实部分!


2
尽管有第一句话,但您立即将其与+1相抵触(假设最多有一个离群值,OP的建议确实有意义;当违反该假设时,您的反对意见涉及此程序的问题)。
ub

1
谢谢。在此期间,我删除了之前的评论,并希望它在您进行编辑后会过时。
ub

3
几个离群值使单个离群值检测对它们中的任何一个都不可见的现象通常称为掩盖。这可以帮助人们找到与该问题有关的更多信息。
Glen_b-恢复莫妮卡2014年

1
@ user603做得很好,创造了一个说明性的场景,但我认为您正在把婴儿和洗澡水一起扔掉。回归删除诊断并不完美,但它们可广泛应用并且经受了时间的考验。取中位数很好,但我想知道如何将您的方法扩展到更复杂的基于似然的模型。
Ben Ogorek

2
+6,这是一个非常不错的答案-清楚而透彻地说明,并用代码,图形和公式说明。我稍微调整了代码格式,使其更易于阅读。如果您不喜欢它,请向我道歉并退后。
gung-恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.