从matlab箱线图中删除某些异常值 您所在的位置:网站首页 matlab如何生成随机整数 从matlab箱线图中删除某些异常值

从matlab箱线图中删除某些异常值

#从matlab箱线图中删除某些异常值| 来源: 网络整理| 查看: 265

在MATLAB中,boxplot命令可用于生成箱图。此函数的默认行为是胡须长度为1.5 * IQR (75%-25%),如果需要,可以将此胡须长度更改为IQR的另一个倍数。然而,使用特定的百分位数作为胡须的限制是不可能的,这是我需要的(在我的例子中是第10和第90个百分位数)。正如您将在下面的示例中看到的那样,我已经走了这么远,但遇到了一个问题。

考虑以下数据:

Box_Data_PFCA = [-3;1;2;3;4;5;5;5;6;40;45;77;7;9;1;2;3;7;7;7;10;11;11;40;30;101;110;150]; label = ['PFOS';'PFOS';'PFOS';'PFOS';'PFOS';'PFOS';'PFOS';'PFOS';'PFOS';'PFOS';'PFOS';'PFOS';'PFOS';'PFOS';... 'PFDA';'PFDA';'PFDA';'PFDA';'PFDA';'PFDA';'PFDA';'PFDA';'PFDA';'PFDA';'PFDA';'PFDA';'PFDA';'PFDA'];

我使用默认的matlab函数从其中生成了一个箱图:

h = boxplot(Box_Data_PFCA,label)

然后我计算生成箱线图所需的百分位数:

PFOS_10=prctile([-3;1;2;3;4;5;5;5;6;40;45;77;7;9],10) PFOS_25=prctile([-3;1;2;3;4;5;5;5;6;40;45;77;7;9],25) PFOS_75=prctile([-3;1;2;3;4;5;5;5;6;40;45;77;7;9],75) PFOS_90=prctile([-3;1;2;3;4;5;5;5;6;40;45;77;7;9],90) PFDA_10=prctile([1;2;3;7;7;7;10;11;11;40;30;101;110;150],10) PFDA_25=prctile([1;2;3;7;7;7;10;11;11;40;30;101;110;150],25) PFDA_75=prctile([1;2;3;7;7;7;10;11;11;40;30;101;110;150],75) PFDA_90=prctile([1;2;3;7;7;7;10;11;11;40;30;101;110;150],90)

然后,我继续使用图形手柄编辑箱形图(在我的情况下,编辑框是不必要的,因为25%到75%的默认设置适合我,但我显示它是为了完整):

set(h(5,1), 'YData', [PFOS_25 PFOS_75 PFOS_75 PFOS_25 PFOS_25]) set(h(1,1), 'YData', [PFOS_75 PFOS_90]) set(h(2,1), 'YData', [PFOS_10 PFOS_25]) set(h(3,1), 'YData', [PFOS_90 PFOS_90]) set(h(4,1), 'YData', [PFOS_10 PFOS_10]) set(h(5,2), 'YData', [PFDA_25 PFDA_75 PFDA_75 PFDA_25 PFDA_25]) set(h(1,2), 'YData', [PFDA_75 PFDA_90]) set(h(2,2), 'YData', [PFDA_10 PFDA_25]) set(h(3,2), 'YData', [PFDA_90 PFDA_90]) set(h(4,2), 'YData', [PFDA_10 PFDA_10])

这将导致以下结果:

正如您所看到的,在我对胡须进行了更改之后,我的一些异常值与胡须重叠。

我的问题是,我如何确保在我的更改之后,胡须内的异常值被移除(而胡须外的异常值被显示)。我意识到我需要以某种方式使用“异常”句柄,但解决方案并没有出现在我面前……由于这只是一个示例数据集,因此解决方案必须在大型数据集上工作。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有