本文首发于微信公众号【生物狗窝】,欢迎关注!

写这篇文章的灵感,来自于知识星球【真知拙见】的一组讨论(评论区有折扣链接,别着急着付全款就进去了……):

你被柱状图骗了好多年!统计图表中的大坑!-肽度TIMEDOO

其中一个核心内容,是理解“图表与统计量的产生原理”。这是什么意思呢?

让我们来模拟一组数据,用Excel来生成一些“随机”(并不)数 [滑稽]:

你被柱状图骗了好多年!统计图表中的大坑!-肽度TIMEDOO

每一列,是同一组数据,每组有2400+个数据点。然后我们来开始作图,描述这些数据。

首先是含有误差线的柱状图(barplot):

你被柱状图骗了好多年!统计图表中的大坑!-肽度TIMEDOO

看起来,每一组的均数都差不多,误差也差不多一样大。

这时候有人举手说:不对,如果数据不是正态分布的,我们就不能用均数和标准差来描述数据。要用中位数和分位数来作图。

好的~那我们就用箱式图(boxplot)吧:

你被柱状图骗了好多年!统计图表中的大坑!-肽度TIMEDOO

桥豆麻袋!!!

你被柱状图骗了好多年!统计图表中的大坑!-肽度TIMEDOO

肿么所有组看起来都一样???我读书少你不要骗我!!!

如果我们把原始的数据点,一个一个反映在图上,就变成了这样:

你被柱状图骗了好多年!统计图表中的大坑!-肽度TIMEDOO

原来,这5组数据的分布是完全不一样的。

Left组的数据,分布偏左;Right组的数据,分布偏右;Normal组的数据,是正态分布,中间多两边少;Split组的数据,是两边多中间少;而Lines组,则是呈多簇分布。

从这个例子中,我们需要掌握一个重要观点:描述数据,或者解读数据的时候,不能只关注其“集中性”和“离散性”指标(如均数、中位数、标准差、四分位数等),还得关注原始数据的分布形式。

以上数据,其实是来自这篇统计学论文(我稍微调整了一下):

autodeskresearch.com/pu

而在那篇文章中,还用了一个动画来展示这个大坑:

你被柱状图骗了好多年!统计图表中的大坑!-肽度TIMEDOO

看到了吧:7组不同数据,无论其分布怎么改变,用boxplot做出来,都是一模一样的。

但有时候,直接展示原始数据点,又不是很方便。因为数据点一多,数据就容易挤在一起,很难看出分布关系。这时候,我们就要引入violin plot(小提琴图)来展示数据。

你被柱状图骗了好多年!统计图表中的大坑!-肽度TIMEDOO

小提琴图那个充满曲线的躯体,展示的是数据的分布形式。如果你把它切掉一半,那就是跟密度图(density plot)或者直方图(histogram)一样了。而小提琴的身体内部,还可以塞进箱式图,展示中位数、四分位间距,甚至95%置信区间。

因此,小提琴图,可以认为是密度图 + 箱式图 + 其他特性的合体。如果你还不能理解的话,就看下面这个图:

你被柱状图骗了好多年!统计图表中的大坑!-肽度TIMEDOO

其实就是把上面那个密度图,和下面的箱式图,给怼到一起了。这样就充分发挥了两种图的优势。

小提琴图还有一个进化版,叫Beanplot,姑且叫它豆荚图好了:

你被柱状图骗了好多年!统计图表中的大坑!-肽度TIMEDOO

Beanplot的R包原生支持许多小提琴图没有的特性,上面那张图一眼就看清楚了,不需要解释太多。如果你不需要这些features,也可以当成小提琴图来使。

Beanplot的R包地址在这里:

cran.r-project.org/web/

具体的示例也可以从该页面的Vignettes中找到。

本文首发于微信公众号【生物狗窝】,欢迎关注!