(未测试)StatQuest生物统计学 – 箱线图

boxplot(箱线图)可以展示数据的更多细节,体现出数据分布的信息,因此很受数据科学家的喜欢。不过相比较而言,柱状图(barplot)仍然是目前展示数据中最常用的一种图表之一,其出场率明显高于boxplot。由于柱状图只是展示了均值和errorbar,因此广受争议,如Y叔当年的一篇推文中提到:
Nature Methods 2013年的文章中有100个barplot图,而只有20个boxplot图,从这里就可以看出来,用boxplot的人远远没有barplot多,于是NPG怒了,写了两篇专栏文章Points of View: Bar charts and box plots和Points of Significance: Visualizing samples with box plots并且发表了一篇BoxPlotR: a web tool for generation of box plots方便大家画boxplot,如此简单的web tool能够发Nature Methods,实在是让人羡慕妒忌恨啊。
箱线图的详细解释
箱线图如下图(a)所示,中间一个盒子,上下两条须线。
中间的盒子的三条水平线是数据的三个四分位数:Q1、Q2、Q3,其中Q2也就是中位数。盒子的高度又叫做IQR,四分位间距。
须线的下界是Q0(即最小值)或IF1(此两者中较大的),须线的上界为Q4(即最大值)或IF2(此两者中较小的)。
超过IF2或者小于IF1为异常值(也就是须线外的值),这个异常值又叫做温和异常值(mild outliers),如果一个值超过了OF1或者OF2,也就是距离盒子的上下缘超过3倍IQR的值,则称为极端异常值(extreme outliers)。

箱线图的绘制步骤
以一组数据为例:5 39 75 79 85 90 91 93 93 98。
- 计算Q1、Q2、Q3及IQRQ1 = 75, Q2 = 88, Q3 = 92。IQR = 93 – 75 = 18。
- 绘制三条水平线,水平位置相同,垂直位置和Q1、Q2、Q3相同如图示。
- 闭合三条水平线,成一个盒子状如图示。
- 计算IF1和IF2IF1 = 75 – 1.5 * 18 = 42;IF2 = 92 + 1.5 * 18 = 110。
- 绘制上下须线上须线从Q3到Q4或IF2,谁先到就是谁。下须线从Q1到Q0或IF1,谁先到就是谁。如图示。
- 计算OF1及OF2OF1 = 75 – 3 * 18 = 21;OF2 = 92 + 3 * 18 = 146。
- 标记极端异常值在OF1或OF2之外的值为极端异常值,使用*标识,如图示。
- 标记温和异常值在IF1或IF2之外而在OF1或OF2之内的值为温和异常值,使用O标识,如图示。

箱线图绘制实例
- 箱线图
require(ggplot2)
ggplot(iris, aes(Species, Petal.Length, fill=Species)) +
geom_boxplot(width=.1)
2. 添加散点
ggplot(iris, aes(Species, Petal.Length, fill=Species)) +
geom_boxplot(width=.1) +
geom_jitter()
添加小提琴图
小提琴图和箱线图类似,它的边框是数据的概率密度图,可以更好的体现数据分布情况。
ggplot(iris, aes(Species, Petal.Length, fill=Species)) +
geom_violin(alpha=.5) +
geom_boxplot(width=.1) +
geom_jitter()

参考资料:
- (翻)云(覆)雨图:https://mp.weixin.qq.com/s/kd-WbPXPrg6K2RFNydK-mQ
- boxplot:https://mp.weixin.qq.com/s/kk3M1eoVhCiYmyu92P0zwA
- Boxplots and Outliers:https://condor.depaul.edu/sjost/lsp121/documents/boxplots.htm
- StatQuest课程:https://statquest.org/video-index/
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!