查看原文
其他

【孙老湿画图系列--第四弹】 箱形图 Boxplot

孙怀博 生信者言 2022-03-29

John Tukey


箱形图是由美国数学家John Tukey(1915.6.16-2000.7.26)在1977年发明的,老爷子已过世,深切缅怀。

小板报

箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。

 

其绘制须使用常用的统计量,能提供有关数据位置和分散情况的关键信息,尤其在比较不同的母体数据时更可表现其差异。


箱形图由五个数值点构成:最小值(Min),下四分位数(Q1),中位数(median),上四分位数(Q3),最大值(Max)。上四分位数到最大值之间建立一条延伸线,这个延伸线成为“胡须(whisker)”。

 

由于真实观测数据中总是存在各式各样地“离群点”,于是为了不因这些少数的离群数据导致整体特征的偏移,需将这些离群点单独汇出,而箱形图中胡须的两级修改成最小观测值与最大观测值。一般情况,最大(小)观测值设置为1.5倍的四分位数值间距离(1.5 * IQR)。


  • IQR = Q3 - Q1,即上四分位数与下四分位数之间的差,也就是盒子的长度。

  • 最小观测值为Min = Q1 - 1.5 * IQR,如果存在离群点小于最小观测值,则胡须下限为最小观测值,离群点单独以点汇出。如果没有比最小观测值小的数,则胡须下限为最小值。

  • 最大观测值为Max = Q3 - 1.5 * IQR,如果存在离群点大于最大观测值,则胡须上限为最大观测值,离群点单独以点汇出。如果没有比最大观测值大的数,则胡须上限为最大值。



  • 在分析数据的时候,箱形图能够直观的帮助我们了解数据的特征:

  1. 直观地识别数据集中的异常值(查看离群点)。

  2. 判断数据集的数据离散程度和偏向(观察盒子的长度,上下隔间的形状,以及胡须的长度)。

为了更好的理解箱形图,模拟一个符合正态分布N(0,1σ2)的数据,比较箱形图和正态分布曲线,如下图:


 

首先我们加载模拟数据mpg,用head()查看数据结构:

library(ggplot2)

data(mpg)

head(mpg[c("class","hwy")])  #因为我们绘图只用到两列,所以只查看需要的两列就可以了



ggplot中绘制箱形图使用的几何对象是geom_boxplot(),至少需要两个映射对象,x=>分类变量,y=>数值变量。选用主题theme_bw(),并通过theme()修改坐标轴字体等。

 

p <- ggplot(mpg, aes(class, hwy, fill =class)) +

   geom_boxplot() +

   theme_bw() +

   theme(axis.title = element_text(size = 20),

         axis.text = element_text(size = 16, color = "black"),

         legend.position = "none")

p

 

 

添加扰动点geom_jitter(),并且翻转坐标轴coord_flip()。

p <- ggplot(mpg, aes(class, hwy, fill =class)) +

    geom_boxplot(notch = TRUE) +

   theme_bw() +

   geom_jitter(width = 0.2) +

   theme(axis.title = element_text(size = 20),

         axis.text = element_text(size = 16, color = "black"),

         legend.position = "none") +

   coord_flip()

p

 

 

本系列课程主要侧重于讲解图形原理,以及在ggplot2中的实现过程,并没有特意追求美观,故很多图的细节部分修饰有限,大家重点理解实现过程。


本期箱形图就分享到这里!下周二,韦恩图,孙老湿与你不见不散!


关注

生信者言

编辑:Anymore

文字:孙怀博


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存