boxplot

1. 简介

箱形图,又称为盒须图、盒式图、盒状图或箱线图,是一种用作显示一组数据分散情况资料的统计图。箱形图于1977年由美国著名统计学家约翰·图基(John Tukey)发明。它能显示出一组数据的最大值、最小值、中位数、上下四分位数及异常值。
在这里插入图片描述

2. Matlab boxplot命令

boxplot(X):产生矩阵X的每一列的盒图和“须”图,“须”是从盒的尾部延伸出来,并表示盒外数据长度的线,如果“须”的外面没有数据,则在“须”的底部有一个点。
boxplot(X,notch):当notch=1时,产生一凹盒图,notch=0时产生一矩箱图。 默认为0.
boxplot(X,notch,‘sym’):sym表示图形符号,默认值为“+”。
boxplot(X,notch,‘sym’,vert) %当vert=0时,生成水平盒图,vert=1时,生成竖直盒图(默认值vert=1)。
boxplot(X,notch,‘sym’,vert,whis) %whis定义“须”图的长度,默认值为1.5,若whis=0则boxplot函数通过绘制sym符号图来显示盒外的所有数据值

2.1 相同大小(行数相同)数据绘图

clc
clear all
close allrng default  % For reproducibility
x = randn(100,25);
figuresubplot(2,1,1)
boxplot(x)subplot(2,1,2)
boxplot(x,'PlotStyle','compact')

在这里插入图片描述

2.2 不同大小(行数不同)数据绘图

命令:boxplot(x,g)
其中,x为n*1的数据,g为数据的分组(或标签)。

clc
clear all
close allx = rand(50,1);
y = rand(30,1);
z = rand(55,1);
% group = [repmat(1, size(x,1), 1); repmat(2, size(y,1), 1); repmat(3, size(z,1), 1)];
group = [repmat('x', size(x,1), 1); repmat('y', size(y,1), 1); repmat('z', size(z,1), 1)];
boxplot([x;y;z], group);

在这里插入图片描述

2.3 提取boxplot绘图中的中值、最大、最小值、异常值等

boxplot返回不同图形对象的句柄数组。
默认参数,输出是7 x M个句柄数组,其中M是boxplot组的数量(即箱型图的数量),每个都有以下7个句柄,分别如下:
1.Upper Whisker
2.lower Whisker
3.Upper Adjacent value
4.Lower Adjacent value
5.Box
6.Median
7.Outliers

在不同的参数下,boxplot可能会返回不同数量的句柄,因此最好通过标记找到所需的内容。
要提取数据,您必须访问特定对象的Data属性(如果此属性存在)。

例子:

clc
clear all
close allx1 = [10 12 9 8 12 11 15 12 34 12 9];
x2 = [13 14 6 9 18 16 47 18 54 13 6];figure
boxplot([x1' x2'])

在这里插入图片描述

第一组数据中异常值 34,第二组数据异常值为47 和 54。现在我们提取这几个异常数据。

h = findobj(gcf,'tag','Outliers');
xdata = get(h,'XData')
ydata = get(h,'YData')

即可得到异常值在窗口中的x轴值和y轴值。
也可以使用下面的代码获得这些数据,推荐使用这种方法获得!

outlier = get(h(7),'YData');
media = get(h(6),'YData');
minv = get(h(4),'YData');
maxv = get(h(3),'YData');

2.4 指定x轴位置绘制box

X = [1.2 1.8 3.2 3.8 5.2 5.8];
Y = rand(100, 6);
boxplot(Y, 'positions', X, 'labels', X)

在这里插入图片描述

2.5 不同数据大小指定x轴位置绘图

clc
clear all
close allx0 = [9 10 12 9 8 12 11 16 12 10];
x1 = [1 10 12 9 8 12 11 15 12 34 12 7];
x2 = [8 13 14 6 9 18 16 47 18 54 13 6 8];
x = [x0';x1';x2'];
g = [repmat(1,length(x0),1);repmat(2,length(x1),1);repmat(3,length(x2),1)];
pos = [1.5 2 5];
boxplot(x,g,'positions', pos, 'labels', pos)

在这里插入图片描述

3. 异常值判别方法

判断异常值,需要明白几个概念,什么是异常值?什么是分位数?

3.1 异常值

是位于数据系列中的极端值,该异常值非常小或非常大,因此可能影响数据系列的整体。异常值通常被视为极值,由于其极高或极低的值而可能影响整体,因此应从数据中丢弃。

异常值也可以表示为位于分布的整体之外的值,因此可以影响整个数据系列。异常值通常被认为是由于存在可能低估或高估研究的极值而导致测量误差的原因,因为它与来自群体的随机样本中的其他值具有异常距离。

根据所有统计学家遵循的基本标准,对异常值的通用定义是落在第三个四分位数之上或低于第一个四分位数的四分位数距的1.5倍以上。

3.2 四分位数

分位数是将总体的全部数据按大小顺序排列后,处于各等分位置的变量值。如果将全部数据分成相等的两部分,它就是中位数;如果分成四等分,就是四分位数。四分位数有三个,第一个四分位数就是通常所说的四分位数,称为下四分位数,第二个四分位数就是中位数,第三个四分位数称为上四分位数,分别用Q1、Q2、Q3表示。

第一四分位数 (Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。
第二四分位数 (Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字。
第三四分位数 (Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。
第三四分位数与第一四分位数的差距又称四分位距(InterQuartile Range,IQR)。

3.3 确定异常值

在这里插入图片描述

因此,任何超过上限或小于下限的值都将是异常值。 只有位于下限和上限内的数据在统计上被认为是正常的,因此可用于进一步观察或研究。

3.4 例子

设数据范围为199,201,236,269,271,278,283,291,301,303和341
因此n = 11

在这里插入图片描述
在这里插入图片描述

因此很明显,任何高于333.5或低于201.5的范围都是异常值。 因此,在数据系列199,201,236,269,271,278,283,291,301,303,341中,异常值分别为199,201和341.这三个值位于任何一个极值上都可以认为是异常的,应该从整个系列中丢弃。 任何对这个系列的分析都不受这些极端值的影响。 因此,丢弃异常值后应考虑进一步观察或研究的数据系列如下。

236,269,271,278,283,291,301,303

4. 获取统计信息的两种方法

下面两个函数实现的功能一样,都是从一组数据中获取最小最大中值均值标准差和异常值。函数1从boxplot出发,获取图形中这些统计数据,函数2直接进行计算根据定义判断异常值,求剩余数据的统计信息。函数1和函数2功能一样,效率不同,函数1效率极低。

4.1 函数1

% 1.Upper Whisker
% 2.lower Whisker
% 3.Upper Adjacent value
% 4.Lower Adjacent value
% 5.Box
% 6.Median
% 7.Outliers% X_n*1
% x0 = [9 10 12 9 8 12 11 16 12 10 12 9 7];
% x1 = [1 10 12 9 8 12 11 15 12 34 12 9 7];
% x2 = [8 13 14 6 9 18 16 47 18 54 13 6 8];
% [minv,maxv,media, meanv, outlier] = boxvalue(x0')function [minv, maxv, medi, meanv, stdv, outlier] = boxvalue(x)
meanv  = [];
stdv = [];
if isempty(x)minv = nan;maxv = nan;medi = nan;meanv = nan;stdv = nan;outlier = nan;
return;    
endfigure(11)h = boxplot(x);
medi = get(h(6),'YData'); medi = medi(1);
minv = get(h(4),'YData'); minv = minv(1);
maxv = get(h(3),'YData'); maxv = maxv(1);
outlier = get(h(7),'YData');%无异常值情况
if length(outlier)==1 & isnan(outlier)meanv = mean(x);stdv = std(x);close 11return;
end%有异常值情况
ids = [];
outlier = unique(outlier);
for i=1:length(outlier)ids = [ids find(x==outlier(i))'];    
end
ids = sort(ids,'descend');
for i=1:length(ids)x(ids(i)) = [];
end
stdv = std(x);
meanv = mean(x);
close 11
end

4.2 函数2

function [minv, maxv, medi, meanv, stdv, outlier] = statistic(x)
minv = nan;
maxv = nan;
medi = nan;
meanv = nan;
stdv = nan;
outlier = nan;
if isempty(x)return;    
endQ = quantile(x,[0.25 0.75]);
Q1 = Q(1);
Q3 = Q(2);
IQR = Q3-Q1;low_limit = Q1-1.5*IQR;
upp_limit = Q3+1.5*IQR;
low_ids = x<=low_limit;
upp_ids = x>=upp_limit;ids = ~low_ids & ~upp_ids;
if sum(ids)==0return;
end
val = x(ids);minv = min(val);
maxv = max(val);
medi = median(val);
stdv = std(val);
meanv = mean(val);
outlier = x(low_ids | upp_ids);
end

https://www.whatissixsigma.net/box-plot-diagram-to-identify-outliers/
https://socratic.org/questions/how-do-you-calculate-outliers-when-drawing-box-plots

参考
https://ww2.mathworks.cn/help/stats/boxplot.html
https://www.jianshu.com/p/bf3d1a74b45d
https://stackoverflow.com/questions/9728970/matlab-extract-values-from-boxplot
https://blog.csdn.net/wokaowokaowokao12345/article/details/92718896

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 11的期望

过去的几年对Java世界一直是动荡不安的&#xff0c;在相当多的发行版中添加了各种各样的功能。 在开发人员社区中&#xff0c;人们逐渐意识到Java的开发速度不够快。 在最初的20年中&#xff0c;Java平台和Java开发工具包&#xff08;JDK&#xff09;经历了庞大&#xff0c;不…

martingale与Markov Process的关系

鞅过程与马尔科夫过程是什么关系&#xff1f; 1.鞅代表的是公平游戏&#xff0c;马尔可夫过程侧重过程无记忆性 总而言之&#xff1a;鞅和马尔可夫过程没有包含的关系。因为鞅代表的是公平游戏&#xff0c;而马尔可夫过程侧重过程无记忆性。两者没有内在联系。 注&#xff1…

LaTeX双栏模板插入通栏公式(跨栏插图)

1. 利用带星号的浮动体环境 带星号的浮动体figure和table环境可以在双栏模板中使用&#xff0c;例如我们以IEEEtran为例&#xff0c;插入通栏公式 \documentclass{IEEEtran} \usepackage{amsmath&#xff0c;lipsum} \begin{document} \lipsum[1] \begin{figure*} \begin{ali…

renew process 更新过程

一个泊松过程可以分解成一系列 i.i.di.i.di.i.d 的指数分布随机变量相加&#xff0c;如果把指数分布换成其他 i.i.di.i.di.i.d 的分布就得到了更新过程。 更新过程本身是泊松过程的一种扩长&#xff0c;同时更新过程也可以发展出一套更新理论&#xff0c;包括更新方程等。 htt…

离散时间信号,连续时间信号,模拟信号,数字信号区别

连续时间信号 &#xff1a; 在时间t 上是连续的值 时间连续&#xff0c; 幅值连续。 定义为模拟信号。时间连续&#xff0c; 幅值离散。 比如脉冲信号。 离散时间信号 &#xff1a; 在时间t上 是离散的值 时间离散&#xff0c; 幅值连续。 &#xff08;在任意两个离散时间点…

java8 javafx_Java8中的外观(JavaFX8)

java8 javafxJavaFX8在外观方面进行了一些更改 &#xff0c;其中最相关的是新CSS API &#xff0c;它允许您为控件以及已公开的Skin类创建新CSS属性和伪类。 使用CSS可以更改控件的很多外观&#xff0c;但是CSS可以实现很多功能&#xff0c;这就是Skin类的用处。从“ UI控件体…

如何通俗易懂地解释卷积?

马同学 从数学上讲&#xff0c;卷积就是一种运算。 某种运算&#xff0c;能被定义出来&#xff0c;至少有以下特征&#xff1a; 首先是抽象的、符号化的 其次&#xff0c;在生活、科研中&#xff0c;有着广泛的作用 比如加法&#xff1a; [公式] &#xff0c;是抽象的&…

具有中央异常处理和VO验证的Spring Data JPA –框架

1.简介 一段时间以来&#xff0c;Spring框架已成为事实上的标准&#xff0c;可以创建任何基于REST API的应用程序。 Spring提供了各种现成的组件&#xff0c;以避免编写重复而繁琐的样板代码。 另外&#xff0c;关于Spring的美丽之处在于&#xff0c;如果有现成的解决方案&…

初识斯蒂尔杰斯积分(Stieltjes integral)

https://blog.csdn.net/Northernland/article/details/83051415

drools6.5_使用Drools 6.0进行部署

drools6.5KieScanner 6.0 KieScanner取代了5.x KnowledgeAgent。 它使用嵌入式Maven允许在运行时解析和检索jar。 6.0应用程序现在可以轻松支持依赖关系和可传递依赖关系&#xff1b; 使用众所周知的Maven语义进行版本控制。 它允许在类路径上部署&#xff0c;也可以在运行时动…

双子(Dioid)

双子代数是若其对任意无限多元的 “和”封闭且乘法对此无限和具分配律。 https://baike.baidu.com/item/%E5%8F%8C%E5%AD%90%E4%BB%A3%E6%95%B0

具有外部Zookeeper集成并使用SOLRJ API访问数据的SOLR cloud 7.4集群配置

SOLR是最流行且高度可扩展的搜索引擎之一&#xff0c;它基于分布式索引技术运行。 Solr索引几乎可以基于任何类型的数据源&#xff08;CSV数据或XML数据或从RDBMS数据库或标准文件系统中提取的数据&#xff09;构建。 对于以RDBMS数据库作为后端构建的任何Web应用程序&#xf…

随机过程及其稳态stability

1. 为什么要研究随机过程&#xff1f; 人类认识世界的历史&#xff0c;就是一认识和描绘各种运动的历史&#xff0c;从宏观的天体运动到分子的运动&#xff0c;到人心理的运动-我们通称为变化&#xff0c;就是一个东西随时间的改变。 人们最成功的描绘运动的模型是牛顿的天体…

求离散马尔科夫链的平稳分布+按照一定概率分布生成想要的样本

1. 求离散马尔科夫链的平稳分布的两种解法 假设离散马尔科夫链的转移矩阵为P PP&#xff0c;平稳分布为π \piπ&#xff0c;则平稳分布满足&#xff1a; PππP \pi \piPππ 1.1 迭代法 求平稳分布的一种简单方法是迭代法&#xff0c;即随机初始化初始分布π 0 \pi_0π 0 …

MCMC 和 Gibbs采样

0. MCMC 从名字我们可以看出&#xff0c;MCMC由两个MC组成&#xff0c;即蒙特卡罗方法&#xff08;Monte Carlo Simulation&#xff0c;简称MC&#xff09;和马尔科夫链&#xff08;Markov Chain &#xff0c;也简称MC&#xff09;。 Monte Carlo &#xff08;蒙特卡罗&#x…

使用Java流和In-JVM-Memory的超低延迟查询

自然界的基本规则&#xff08;例如光速和通用信息论&#xff09;对我们可以从传统系统体系结构中获得的最大性能设置了明显的限制。 了解您作为Java开发人员如何使用JVM技术和Java流将性能提高几个数量级。 例如&#xff0c;如果应用程序服务器和数据库服务器相距100 m&#…

信道接入技术及协议

1. 信道共享方式 在普通的通信系统中&#xff0c;信道共享方式有3种&#xff1a;点对点、点对多点和多点共享。 1.1 点对点 点对点是最简单的信道共享方式。其特点是只有两个节点共享无线信道。在单信道时&#xff0c;两个节点可以通过半双工方式实现共享&#xff0c;在双信…

MATLAB | 解决打开延迟的情况

问题 最近打开matlab&#xff0c;一直没有反应&#xff0c;大概几分钟后&#xff0c;才开始有反应。 网上关于matlab启动出现延迟的方法有很多种解决方法。但都是针对破解版的&#xff0c;而装正版matlab2020b&#xff0c;缺少license文件。对于此&#xff0c;我们尝试用另外一…

50 个具有挑战性的概率问题 [01/50]:袜子抽屉

一、说明 我最近对与概率有关的问题产生了兴趣。我偶然读到了弗雷德里克莫斯特勒&#xff08;Frederick Mosteller&#xff09;的《概率论中的五十个具有挑战性的问题与解决方案》&#xff08;Fifty Challenge Problems in Probability with Solutions&#xff09;一书。我认为…

制作程序化装饰花纹图案_装饰图案

制作程序化装饰花纹图案装饰图案 我不经常使用的一种设计模式是Decorator 。 我不确定为什么这种模式不受欢迎&#xff0c;因为它很方便。 装饰器模式允许以受控方式向对象添加功能。 即使在使用静态类型的语言时&#xff0c;也可以在运行时运行&#xff01; 装饰器模式是子类的…