我正在尝试使用 MATLAB 从箱线图中识别离群值。该函数的默认晶须值为 1.5,可提供 +- 2.7*sigma 或 99.3 的覆盖率。 但是,我想要 99.7 或 3*sigma 的覆盖率。在这种情况下,晶须的值(value)是多少? 我不想随意猜测,所以需要你们的帮助。 谢谢
最佳答案
一般来说,让:
Q1 = icdf('norm',0.25,0,1);
Q3 = icdf('norm',0.75,0,1);
IQR = Q3-Q1;
现在,如果您有一个常量
k
(BOXPLOT 的晶须长度默认为k=1.5
),那么 IQR outlier test将范围外的值识别为:[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)
这是从 Wikipedia 借来的插图:
关于matlab - 99.7 覆盖率的箱线图中 mustache 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11698876/