Answers:
根据离群点作为数据点的经典定义,其上四分位数或下四分位数的1.5 * IQR大于
这是在箱线图中识别晶须末端之外的点的规则。Tukey自己无疑会反对在此基础上称其为离群值(他不一定会将超出这些限制的点视为离群值)。这些要点是-如果预期您的数据来自与正态分布有点类似的分布-可能需要进一步调查(例如检查您是否未对两位数字进行转置)-至多这些可能是潜在的异常值。正如尼克·考克斯(Nick Cox)在此答案下的评论中所指出的那样,很多这样的观点的尾巴将更多地被视为重新表达可能是合适的指标,而不是表明需要将这些观点视为离群值。
假设分布不偏斜。
我认为“非偏斜”是指对称。这样的假设不仅仅如此。重尾但对称的分布可能在该规则的边界之外有许多点。
对于偏斜分布(指数分布,泊松分布,几何分布等),通过分析原始函数的变换是否是检测异常值的最佳方法?
这取决于构成您目的的异常值的原因。没有一个适合每个目的的定义-实际上,通常,您最好做一些其他事情,例如选择异常值并忽略它们。
对于指数或几何,你可以做一个类似的计算,对于一个箱线图,但是这将仅在右侧尾部标识相似的部分(你会不会在指数或几何鉴定低端点)† .. ,否则您可能会做其他事情。
在大样本中,箱形图标记的是两端的大约0.35%,或总计大约0.7%。例如,对于指数,您可以标记中位数的倍数。如果要为实际指数标记总计约0.7%的点,则建议标记的点超过中位数的7.1倍。
对于n = 1000,标记点高于中值7.1倍通常将达到值的0.4%至1.1%:
ae <- rexp(1000)
table( ae > 7.1*median(ae) )
FALSE TRUE
993 7
例如,松散地由指数分布控制的分布,可以使用对数函数进行转换-在什么时候可以基于相同的IQR定义查找异常值?
这完全取决于您所说的“可接受”。请注意,但是-
i)产生的分布实际上不是对称的,而是明显左偏。
因此,通常除非您确实将标记点标记在最左端(即接近零,否则您期望指数值始终是指数值),而不是在右边标记(可能是“离群值”)。极端。
ii)这种规则的适用性将在很大程度上取决于您的工作。
通常,如果您担心会影响推理的奇异值,那么使用健壮的过程可能要比正式识别异常值更好。
如果您确实想对转换后的指数或Poisson数据使用基于法线的规则,我至少建议将其应用于Poisson的平方根‡(只要均值不能太小,则应为近似于正态),并求指数根(甚至可以扩展为几何)的平方根或什至四次方。
或 √,就像在Anscombe变换中一样
对于指数而言,在大样本中,立方根方法趋向于仅在上尾标出点(以与正常情况下在上尾部标出标记的速率大致相同),而第四根方法在两条尾部标出点(在下尾巴稍微多一点,总计接近正常水平的40%)。在所有可能性中,多维数据集根对我而言比其他两个更有意义,但我不一定建议将其用作某些固定规则。
我将按照与您提出问题相反的顺序回答您的问题,以便使论述从具体到一般。
首先,让我们考虑一种情况,您可以假设除少数异常值外,您的大部分数据都可以通过已知分布(在您的情况下为指数)很好地描述。
参数的通常MLE估计器为[0,p 506]:
和
这是一个示例R
:
n<-100
theta<-1
sigma<-2
set.seed(123) #for reproducibility
x<-rexp(n,rate=1/sigma)+theta
mean(x)-min(x)
m<-floor(0.2*n)
y<-x
y[1:m]<--y[1:m]
mean(y)-min(y)
m<-floor(0.2*n)
z<-x
z[1:m]<-100*z[1:m]
mean(z)-min(z)
原始MLE的一种替代方法是(a)使用鲁棒的离群值识别规则查找离群值;(b)将其作为虚假数据放在一边;以及(c)在样本的非虚假部分上计算MLE。
这些健壮的离群值识别规则中最著名的是Hampel [3]提出的med / mad规则,该规则将其归因于高斯(我在此处说明了该规则)。在med / mad规则中,拒绝阈值基于以下假设:样本中的真实观测值通过正态分布很好地近似。
当然,如果你有额外的信息(如知道真正观察的分布由泊松分布以及近似为这个例子中)没有什么可以阻止你改变你的数据,并使用基线异常值拒绝规则(该med / mad),但转换数据以保留临时规则毕竟有点尴尬。
对于我来说,保留数据但适应拒绝规则似乎更加合乎逻辑。然后,您仍然可以使用我在上面第一个链接中描述的3步过程,但是在拒绝阈值适合于分布的情况下,您怀疑数据中的大部分都具有。在下面,我给出了在真实观测值与指数分布完全吻合的情况下的拒绝规则。在这种情况下,可以使用以下规则构建良好的拒绝阈值:
2)拒绝[2,p 188]以外的所有观察结果均为虚假的
(以上规则中的因子9是上述Glen_b答案中的7.1,但使用了更高的截止值。因子(1 + 2 / n)是小的样本校正因子,是通过[2]中的模拟得出的。对于足够大的样本量,它基本上等于1)。
在前面的示例中使用此规则,您将获得:
library(robustbase)
theta<-median(x)-Qn(x,constant=3.476)*log(2)
clean<-which(x>=theta & x<=9*(1+2/n)*median(x)+theta)
mean(x[clean])-min(x[clean])
theta<-median(y)-Qn(y,constant=3.476)*log(2)
clean<-which(y>=theta & y<=9*(1+2/n)*median(y)+theta)
mean(y[clean])-min(y[clean])
在第三个示例中:
theta<-median(z)-Qn(z,constant=3.476)*log(2)
clean<-which(z>=theta & z<=9*(1+2/n)*median(z)+theta)
mean(z[clean])-min(z[clean])
现在,对于通常情况下,除了不知道对称分布不会起作用之外,您没有很好的候选分布来满足大部分观察结果的情况,可以使用调整后的箱线图[4]。这是箱线图的一般化,它考虑了数据偏斜度的(非参数和离群值鲁棒性)度量(因此,当大部分数据对称时,将折叠为通常的箱线图)。您也可以查看此答案以获取插图。
首先,我会质疑经典或其他的定义。“异常值”是令人惊讶的一点。使用任何特定规则(即使对于对称分布)也是一个有缺陷的想法,尤其是在当今有大量海量数据集的今天。在一个(例如)一百万个观测值(在某些领域中不是那么大)的数据集中,即使分布是完全正态的,也有很多情况超出了您引用的1.5 IQR限制。
其次,我建议在原始数据上寻找异常值。它将几乎总是更加直观。例如,对于收入数据,获取日志非常普遍。但是即使在这里,我也会寻找原始范围的异常值(美元或欧元或其他货币),因为我们对这样的数字有更好的感觉。(如果您确实要记录日志,则建议至少以10为底数的日志为基础,至少可以用于离群值检测,因为它至少有点直观)。
第三,当寻找异常值时,要当心掩盖。
最后,我目前正在研究Atkinson和Riani提出的针对各种数据和问题的“正向搜索”算法。这看起来很有希望。
1.5*IQR
离群值的定义未被普遍接受。尝试卸载您的问题,并扩展您要解决的问题。