我正在尝试使用 MATLAB 从箱线图中识别异常值。该函数的默认晶须值为 1.5,可提供 +- 2.7*sigma 或 99.3 的覆盖率。但是,我想要 99.7 或 3*sigma 覆盖率。在这种情况下,晶须的价值是多少?我不想随意猜测,所以需要你们的帮助。谢谢
问问题
6643 次
1 回答
6
一般来说,让:
Q1 = icdf('norm',0.25,0,1);
Q3 = icdf('norm',0.75,0,1);
IQR = Q3-Q1;
现在,如果您有一个常数
k
(默认情况下BOXPLOTk=1.5
具有胡须长度),那么IQR 异常值测试会将范围之外的值识别[Q1 - k*IQR, Q3 + k*IQR]
为异常值:对应于:>> k = 1.5; >> sdCov = [Q1 - k*IQR, Q3 + k*IQR] %# +/-2.698*sigma coverage sdCov = -2.698 2.698
或(就曲线下面积而言):
>> area = 2*normcdf(sdCov(2), 0, 1)-1 %# 99.3% coverage area = 0.99302
在相反的方向,如果你想要一个
sdCov*sigma
覆盖,那么:>> sdCov = 3; >> k = (Q1+sdCov)/IQR k = 1.7239
或者:
>> area = 0.9973; >> sdCov = norminv(1-(1-area)/2); >> k = (Q1+sdCov)/IQR
因此,在您的情况下使用以下内容:
boxplot(data, 'whisker',1.7239)
这是从维基百科借来的插图:
于 2012-07-29T01:48:16.493 回答