找回密码
 注册
关于网站域名变更的通知
查看: 562|回复: 1
打印 上一主题 下一主题

利用Matlab进行箱线图的绘制

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-24 10:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

* ~9 h6 v" Q5 _% x箱线图,又称作箱须图(box-whisker plot)是利用数据中的五个特征值——最小值、第一四分位点、中值、第三四分位点、最大值来描述数据的图形。箱线图可以粗略的估计数据是否具有对称性,粗略观察数据的分散程度,特别可用于对几个样本的比较。
4 Y  B- Y( a" k$ R$ u  E
0 T. f/ t6 J* u( ^箱线图美中不足之处在于它不能提供关于数据分布偏态和尾重程度的精确度量;对于批量较大的数据集,箱线图反映的形状信息更加模糊;用中位数代表总体平均水平有一定的局限性等等。所以,应用箱线图最好结合其它描述统计工具如均值、标准差、偏度、分布函数等来描述数据集的分布形状。
; y5 O! d! B  P6 r5 K% s9 s2 u" [
6 C4 ~6 g4 q" k0 h8 i很多统计软件可以方便的绘制箱线图,比如SPSS和SAS等,而作为数学及工程界经常使用的MATLAB软件来说,它也提供了功能强大的统计工具箱,函数boxplot就可以用来方便的绘制箱线图。8 G1 p1 ]# J4 W( y+ }5 ]

. u. \) G$ d  Z. [1 O首先,看一下箱线图的样式,及各部分的意义,如下图所示:# n8 n; \8 A7 W9 b! p" D% Q8 @
: q7 h1 k; F: _8 I

* _# O. G+ M0 C3 V上图形象的说明了一幅箱线图的各种组分。使用箱线图可以直观的识别数据批中的异常值,箱线图中的异常值被定为Q1-1.5*IQR~Q3+1.5*IQR之外的值,具有一定的经验性。与其余异常值判别法比如3σ法不同的是,箱线图不用提前假设样本属于某种分布,依靠实际数据来直观显示。利用箱线图可以直观的判断数据的偏态和尾重。可以比较几组数据的形态。& I3 f5 C) K8 ?* K. r9 T4 I& |
# Z6 [: m5 b" }  R* W
通过箱线图的绘制过程来了解箱线图的意义:
( t5 j% O" p' }( S+ a* q: w2 v# y: q! \' p7 Q8 a/ G& G. B
  • 绘制数轴
  • 计算上四分位数(Q3),中位数,下四分位数(Q1)。
  • 计算上四分位数和下四分位数之间的差值(Q3-Q1),即四分位数差(IQR,interquartile range)。
  • 绘制箱线图的矩形,上限为上四分位数,下限为下四分位数。在矩形内部中位数的位置画一条横线(中位线)。
  • 在Q3+1.5IQR和Q1-1.5IQR处画两条与中位线一样的线段,这两条线段为异常值截断点,称为内限;在Q3+3IQR和Q1-3IQR处画两条线段,称为外限。处于内限以外位置的点所表示的数据都是异常值(outliers),其中在内限与外限之间的异常值为温和的异常值(mild outliers),在外限以外的为极端的异常值(extreme outliers)。(注意:统计软件绘制的箱线图一般都没有标出内限和外限。)
  • 在非异常值的数据中,最靠近上边缘和下边缘(即内限)的两个数值处,画横线,作为箱线图的触须。
  • 从矩形的两端向外各画一条线段直到不是异常值的最远点(即上一步的触须),表示该批数据正常值的分布区间。
  • 温和的异常值(即处于1.5倍-3倍四分位数差之间的异常值)用空心点表示;极端的异常值(即超出四分位数差3倍距离的异常值)用实心点(也可以用星号*)表示。* U, O6 F/ p2 [. P+ B

, ~* _% a0 Q3 }( s6 M9 _0 Y2 a6 Y/ m2 G3 N+ j; N6 D$ X
附上一张图以便利于理解:
# ?! ]$ S# B; s* L
; }  Z) e6 _1 t) v: m; A+ { 5 K( ~, Z+ f1 M4 c6 D2 f; C3 n% \3 ^
上图中:最小值(min)=0.5;下四分位数(Q1)=7;中位数(Med)=8.5;上四分位数(Q3)=9;最大值(max)=10;平均值=8;四分位数差(interquartile range,四分位间距)=Q3 − Q1=2。% I) P. D" z) H: y
) T0 O0 g9 r* |0 s4 k, d" v

7 k& W$ e) Q  m& U! Y( P
. _4 n% c* S) k5 W# t9 GMATLAB统计工具箱中的boxplot可以方便的绘制箱线图,其常用使用方法如下:6 {6 k6 ]% a" [7 ~6 h/ \! R

5 E6 Z1 C# n: v$ t' h6 wboxplot(x);
" r: N' X6 C! F! \. Sboxplot(x, g);
+ ~6 b  u/ c; Z2 `* ~/ C, P# uboxplot(x, para1, value1, para2, value2, …);
8 h- o. g) k8 j6 L! w3 o6 G
8 a  }1 {4 I  `3 E! D8 k) U# W! a: m7 ]6 Y0 S$ k
第一种命令,直接绘制数据x的箱线图。第二种命令,使用分组数据g对x进行分组绘制,分组数据g需要满足一定的格式(x为向量,g对应每一个x具有一行,x为矩阵,g对应每一列x有一行,默认情况下,对g进行自动排序(按照每一个组出现的先后顺序),并按照顺序绘制每一个组的箱线图,如果要控制绘图的顺序,可以使用grouporder属性。比如:( J1 e" _: T7 ~5 q. o3 @9 \
load carsmall
( W3 x: L& z- E; v2 `  n+ C' Pboxplot(MPG, Origin);8 j6 v; {- ^1 l
figure;
( ?" e+ ~( A% \& t; aboxplot(gca, MPG, Origin, ...; x( ^  x. i4 a5 k+ Z
    'Grouporder', {'Germany', 'USA', 'Japan', 'Italy', 'France', 'Sweden'});
  @) L' n% T1 U) G  \+ Q* a" @
( d3 ?$ @' Z: U8 k$ `, e3 c! R
3 u2 Y* e3 [0 l- k8 ]: U% w5 x0 _输出如下图所示的图形:! k5 z+ q7 N& {4 [) P, X* T3 [) w6 n
( k1 D) G! X0 v7 B8 M7 b
" \6 @3 ^1 B7 }2 h
' y9 F* b1 L/ @  C; U
5 ]/ I- a5 ?' q9 [) e& E

1 z" E2 r# [, l2 b9 F第二幅图为第一幅图中,人为规定了输出顺序,而第一幅图形的顺序,依据原始数据中,出现的前后顺序来定。使用第三种命令方式,可以方便的控制箱线图的一些属性,常见的属性有:. [5 U, n1 i& l- x  `& r5 D" p
(1) 图形颜色属性Color( s" D$ J5 X; `" H6 x' k
(2) 异常值描记属性Symbol
) c5 S8 [: o+ N% Y  g2 w(3) 箱线图方向属性Orientation$ q; J7 T% C4 |: a, W
(4) 比较区间属性Notch
2 C; n& `# l. E
7 E: t$ M, I7 ^9 v9 V- r. z# N% T  |+ L
修改几个属性效果如下:
- e( x" I$ _9 bboxplot(MPG, Origin, 'notch', 'marker')  K, l  [. G5 \0 g1 l! M  r& B
figure;' u3 j7 ], T/ ], a' z; `9 V$ Y
boxplot(gca, MPG, Origin, 'notch', 'on')) ?! u4 Q$ g) ]% r  _# c' @! u
. O& |5 F4 K- N, |% g+ b

, X# ?0 s6 U6 |" I) c1 {3 A9 y
9 H7 c' `9 g' [. I. l6 M$ a再比如修改Color属性:boxplot(MPG, Origin, 'Color', 'kkk');  z4 `- X8 g+ u2 S

5 z# A1 @) ?4 H. Q" @8 i6 Z

该用户从未签到

2#
发表于 2020-3-25 18:01 | 只看该作者
利用Matlab进行箱线图的绘制
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-22 03:08 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表