统计自救指南5:快对条形图祛魅吧
统计自救指南5:快对条形图祛魅吧
2014年,Nature Methods编辑部发表了一篇措辞严厉的社论:"Kick the bar chart habit"(戒掉条形图的习惯)。
编辑部直言不讳:条形图被严重过度使用了,很多时候根本无法准确表达统计数据的真实情况。
那用什么?
答案是箱线图(box plot) ,也叫盒须图、箱型图。
这篇文章就带你彻底搞懂这个"小个子大能量"的可视化工具。
条形图的"甜蜜陷阱"
条形图最适合展示计数数据 :人口数量、销售额、学生人数。
这些数据的零点有明确意义——人口为零就是没人,销售额为零就是没卖出去。
但在生物医学研究中,我们处理的是统计样本数据 :小鼠体重、基因表达量、细胞活力。
这些数据的零点往往没有特殊意义,基因表达量为10和为20的差别,跟为0和为10的差别,本质上没什么不同。
更重要的是,这些数据的分布可能很复杂——偏态的、双峰的、有离群值的。
看下面这个例子,四组数据的简单统计:
| 数据分布 | 中位数(m) | 四分位距(IQR) |
|---|---|---|
| 均匀分布 | 0 | 1.74 |
| 正态分布 | 0 | 1.35 |
| 轻度右偏 | -0.12 | 1.33 |
| 强右偏 | -0.19 | 1.37 |
如果只看均值和标准差,它们几乎一样。但实际上,这四组数据的分布形态完全不同 。
均匀分布的数据平铺在整个范围,正态分布是经典的钟形曲线,而右偏分布的数据则拖着长长的"尾巴"。
箱线图的形态与数据分布
这就是问题所在:简单的统计量(均值、标准差)可能掩盖数据结构的本质差异,而条形图又把这种掩盖进一步放大了。
当我们用条形图展示这类数据时,条形的"视觉重量"会误导我们去关注均值与零点的距离 ,而忽略了数据分布的真实情况。
箱线图的"五维透视"
箱线图的强大之处在于,它用一个简洁的图形同时展示数据的五个关键统计量 。
数据集中在哪里?分散程度如何?有没有极端值?箱线图能一次性回答这些问题。
箱线图的构成
箱子:数据的"核心地带"
箱线图中间那个"箱子",代表了数据的四分位距(IQR = Q3 - Q1) ,也就是中间50%的数据所在的范围。
箱子的下边界是下四分位数(Q1,第25百分位),上边界是上四分位数(Q3,第75百分位),箱子里的那条线是中位数(Q2,第50百分位)。
重要的是,这条中位数的线不一定在箱子正中间!
如果它偏上,说明数据右偏,有较多小值;如果它偏下,说明数据左偏,有较多大值。
这种不对称性,在条形图中完全看不出来。
触须:合理范围的"触角"
从箱子两端延伸出去的"触须(whiskers)",代表了数据的合理变化范围。最常用的是Tukey式触须 :
- 上触须延伸到不超过 Q3 + 1.5×IQR 的最大数据点
- 下触须延伸到不小于 Q1 - 1.5×IQR 的最小数据点
为什么是1.5倍?
这个系数对应正态分布的±2.7σ(标准差),覆盖了约99.3%的数据。
超出触须范围的数据点会被单独标出来,称为离群点(outliers) 。
离群点不一定是"坏数据",它们可能是测量误差,也可能是生物学上真实的极端值,或者提示你数据分布可能根本不是正态的。
可选的"增强配件"
凹槽(Notch) 可以用来显示中位数的95%置信区间,计算公式是 。
如果两个箱线图的notch不重叠,说明中位数很可能有显著差异。
但要注意,对小样本(n<5),notch可能延伸到箱子外面,这时候就别用了,会很难看。
箱子宽度 还可以与成正比,这样能直观地显示各组样本量的差异。
为什么是根号n?因为统计精度的提升与成正比。
从箱线图读懂数据的"身材"
掌握了基本元素,你就能从箱线图中读出更多信息。
箱线图反映样本变异性
对称分布 的箱线图,中位数在箱子中央,上下触须长度相近,看起来很"端正",数据可能接近正态分布。
但右偏分布(正偏) 就不一样了,中位数会偏向箱子下方,上触须明显长于下触须,右侧可能有离群点而左侧很少。
这种分布在生物学中很常见,比如收入分布、基因表达量,都是典型的右偏。
左偏分布(负偏) 则相反,中位数偏向箱子上方,下触须更长。
样本量对箱线图的影响也很明显。
小样本(n=5-10)时,箱线图各部分波动很大,notch可能很宽,甚至伸出箱子外。
随着样本量增加,箱线图逐渐趋于稳定,更能代表总体分布。
这就是为什么建议n<5时直接画数据点,不要画箱线图。
为什么四分位数比均值更"抗揍"?
很多人问:为什么用中位数和四分位数,而不是均值和标准差?
答案跟稳健性有关。
假设有这样一组数据:1, 2, 3, 4, 5。均值是3,中位数也是3,看起来差不多。
但如果把最后一个数据点变成离群值:1, 2, 3, 4, 1000。这时均值变成了202,而中位数依然是3。
一个离群点就把均值"带偏"了近百倍,但中位数纹丝不动!
这就是中位数的"稳健性(robustness)":它对极端值不敏感,能更好地代表数据的"典型水平"。
类似的,IQR也比标准差更稳健。同样的例子,第一组数据的标准差约1.58,IQR是3;加入离群点后,标准差暴增到446,但IQR依然是3。
当然,这不是说均值和标准差没用。
如果你的数据接近正态分布、没有明显离群值、样本量足够大,那么均值和标准差更有效,因为它们利用了所有数据点的信息。
但问题是,样本量小时很难判断分布是否正态,这时候用中位数更安全。
箱线图 vs. 条形图:一场"颜值与内涵"的较量
不同的可视化方法比较
条形图有三个致命缺陷。
第一,零点的"虚假引力" ——条形的视觉重量会误导你关注均值与零点的距离,但对统计样本,零点往往没有特殊意义。
第二,基线的选择会"撒谎" ——改变y轴的起点,柱子的相对高度看起来就完全不同,加上轴截断更是可以"指鹿为马"。
第三,信息量太少 ——只展示均值和误差棒,完全看不到数据分布和离群值。
箱线图则完全不同。它展示五个统计量(最小值、Q1、中位数、Q3、最大值),能看到数据的对称性、分散程度,还能直接显示离群点。
而且箱线图不依赖分布假设,对偏态数据、有离群值的数据都适用,四分位数的稳健性很强。
更重要的是,箱线图的最小样本量只需5个(虽然推荐10+),而条形图理论上至少需要30个样本才有意义。
实用建议
什么时候该用什么图?这里有个简单的判断标准:
用条形图 :展示计数、比例数据(如三个城市的人口),数据类型不是统计样本
用箱线图 :统计样本数据(如三组小鼠的体重),数据可能有偏态或离群值,样本量较小(5-30),想展示数据分布的细节
用均值-误差图 :数据接近正态分布,想强调趋势(如时间序列),样本量足够大(n≥14)
箱线图的"陷阱"与"避坑指南"
箱线图虽好,但使用时也有些需要注意的地方。
样本量的问题 最容易被忽略。n<5时,四分位数估计极不稳定,直接画数据点更好。n=5-10时可以画箱线图,但要谨慎解读,必须标注样本量。n≥10时箱线图才比较可靠。
标注不清楚 是另一个大问题。很多论文的箱线图不说清楚样本量是多少、触须的定义是什么、箱子宽度是否反映了样本量。
建议在图例中明确说明这些信息。Nature Methods推荐的BoxPlotR工具http://boxplot.tyerslab.com/ 会自动生成规范的图例,可以参考。
还有一些常见的误读 需要避免:
- 把箱子边界当成"均值±标准误"(错!是Q1和Q3)
- 把中位数线当成"均值"(它们通常不一样)
- 看到notch不重叠就认为"有显著差异"(需要正式统计检验确认)
最后要注意软件的细微差异 。
不同软件对四分位数的计算方法略有不同,有的基于简单平均,有的基于线性插值,R语言甚至用"hinges"而不是严格的四分位数。
影响通常很小,但对边界情况(如有重复值)可能导致细微差别。建议选定一个软件,保持一致。
给生信人的特别提醒
作为生信分析者,你每天处理的组学数据有其特殊性。
RNA-seq的表达量高度偏态,大多数基因低表达,少数基因高表达;ChIP-seq的peak强度也是多数很弱,少数很强。
还有批次效应的问题,不同批次的样本可能系统性偏移,箱线图能直观看出这种差异。
更不用说离群样本了,某个样本质量不好,或者来自不同亚群,都会在箱线图上一目了然。
用条形图展示这些数据就是"自欺欺人"。箱线图会告诉你数据的真实面貌。
单细胞数据更极端——很多基因在很多细胞中表达量为0,少数细胞、少数基因有高表达。
这种数据如果用均值,完全没有意义,必须用中位数或其他稳健统计量。
快速上手 (R)
# 基础箱线图
boxplot(data1, data2, data3,
names = c("Group A", "Group B", "Group C"),
ylab = "Expression level",
col = "lightblue")
# 添加notch和数据点
boxplot(data1, data2, data3, notch = TRUE)
stripchart(list(data1, data2, data3),
vertical = TRUE, method = "jitter",
add = TRUE, pch = 20, col = "red")
在线工具:BoxPlotR
不会编程?试试BoxPlotR (http://boxplot.tyerslab.com/)。这个工具的界面非常友好,复制粘贴数据或上传文件,选择触须类型、是否添加notch等选项,就能自动生成规范图例,还能下载高分辨率矢量图。最大的优点是它会自动生成符合学术规范的图例文字,可以直接复制到论文里。
BoxPlotR 实例图
后记
十年前,Nature Methods编辑部呼吁科研界"戒掉条形图的习惯"。十年过去,情况有所改善,但条形图依然大行其道。部分原因是惯性和工具(Excel到现在都不能轻松生成箱线图),但作为新一代科研人员,我们有责任改变这个现状。
箱线图不是唯一的答案,但它是个好的开始。下次准备画图时,问自己三个问题:我的数据是什么类型?数据分布是什么样的?我想传达什么信息?根据答案选择最合适的方式。
记住:图表是用来交流的,不是用来装饰的。让我们用更好的方式,讲述数据的故事。
参考文献
Krzywinski, M. & Altman, N. Visualizing samples with box plots. Nature Methods11 , 119-120 (2014).
Spitzer, M. et al. BoxPlotR: a web tool for generation of box plots. Nature Methods11 , 121-122 (2014).
Nature Methods Editorial. Kick the bar chart habit. Nature Methods11 , 113 (2014).