She*_*roz 2 statistics matlab normal-distribution outliers boxplot
我试图使用MATLAB从箱线图中识别异常值.该函数的默认晶须值为1.5,提供+ - 2.7*sigma或99.3覆盖率.但是,我想要99.7或3*sigma覆盖.在这种情况下,晶须的价值是什么?我不想随意猜测,所以需要你们的帮助.谢谢
一般来说,让:
Q1 = icdf('norm',0.25,0,1);
Q3 = icdf('norm',0.75,0,1);
IQR = Q3-Q1;
Run Code Online (Sandbox Code Playgroud)
现在,如果你有一个常数k(BOXPLOT默认k=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
Run Code Online (Sandbox Code Playgroud)
或(根据曲线下面积):
>> area = 2*normcdf(sdCov(2), 0, 1)-1 %# 99.3% coverage
area =
0.99302
Run Code Online (Sandbox Code Playgroud)在相反的方向,如果你想要一个sdCov*sigma覆盖,那么:
>> sdCov = 3;
>> k = (Q1+sdCov)/IQR
k =
1.7239
Run Code Online (Sandbox Code Playgroud)
要么:
>> area = 0.9973;
>> sdCov = norminv(1-(1-area)/2);
>> k = (Q1+sdCov)/IQR
Run Code Online (Sandbox Code Playgroud)
因此,在您的情况下使用以下内容:
boxplot(data, 'whisker',1.7239)
Run Code Online (Sandbox Code Playgroud)以下是从维基百科借来的例证:
