引语
在这上一篇和这一篇文字中,会试图给出一些实际发生过而且相对容易理解的数学错误,但是还有很多没有提到的错误。 每一个数据集都会以某种方式对我们提出数学上的挑战,其影响可能会造成若干数量级的误差。
当错误的结果是比较夸张时,比如120%的人超过60岁,绝大多数人可以避开这个陷阱,除了一些极其粗心的人。 然而,当误差的幅度小得多的时候,就非常不容易察觉,往往会陷入很久之后,才以一种悔恨悲愤的心情,面对既成事实, 不得已修正再修正.
陷阱:麻烦的总计
Ben Jones, 也就是Aoiding Data Pitfalls的作者,在这部书中坦言: 他与这个陷阱有一种特殊的因缘,因为有一次他实际上是在警告人们如何避免这个陷阱的时候,掉进里面的。 此后,他被迫学会了自嘲。就在前几年,他在南加州大学(University of Southern California)为专攻健康数据的记者们举办了一个培训课程,并向其提到正在写这本书的这一章,还强调在演讲和研讨会期间,会提醒他们如何注意各种各样的陷阱。
在进行培训时,只要有可能,Ben更喜欢使用听众感兴趣或与其工作相关的数据。 这里面有风险,因为这意味着将向听众展示一个他们熟悉的话题的数据,而培训者自身却不一定熟悉。 实际上这件事很有意思的,因为培训者也会成为学习者,Ben认为:在听众向我学习如何使用数据的同时,我也会向他们提出了有关领域的问题。
因为这次特别的研讨会,是在Ben的家乡—加利福尼亚州举办的,他选择将2001年到2015年间加州居民感染的传染病数据 (数据由加州公共卫生部门的传染病中心提供,可见https://data.chhs.ca.gov/dataset/infectious-disease-cases-by-countyyear-and-sex.)按照县(county)、年份(year)和性别(sex)进行分类。讲过了一个很蹩脚的笑话之后,他开始讲解将如何使用很脏的数据来工作,然后正式的内容开始了。
对这些数据提出的第一个问题很简单:在这段时间里,据报道, 加州居民总共感染了多少种传染病?通过统计数据集中的记录数, 得到的答案是15,002,836,如下图所示
Ben知道,这完全是一个圈套。他之前已经看过了数据,感觉这个文件的结构有些古怪。 每个县、年份和疾病组合在电子表格中有三行:一行是男性居民,一行是女性居民, 另一行是居民总数,即男性加女性。图4.12是数据集中前10个条目的快照。
那么,这意味着在Count列的用一个简单的求和函数将造成重复计算。加州男性居民每感染一种疾病都会被计算两次, 一次在性别等于“男性”的那一行,另一次在性别等于“总数”的那一行;女性也是如此。
在研讨会上Ben接着问这些记者,关于在加州报道的传染病,他们还想知道些什么。 于是,观众席中一个初出苗头的数据记者举起手,好像是提前准备好的,问道,“是否男性和女性的感染数量偏多了?”
Ben非常常规的点了点头,说这真是一个了不起的问题, 并提示听证要通过在颜色编码中添加性别来寻找答案,如图4.13所示。
教室里沉默了片刻,困惑的学生们看着图,而Ben,则用一种可能很不令人信服的方式,假装对结果感到震惊。他说:“这是什么呢?是在性别属性中有一个名为Total的值,占已报告疾病总数的50%。这意味着我们重复计算了,不是吗?从2001年到2015年,加州报告的传染病病例为1500万, 但实际只有这个数字的一半,大约750万。我们的第一个答案差了2倍!我告诉过你,我们会掉进陷阱的;这种错误称为非法侵入总数(Trespassing Totals)。
Ben的演讲部分结束了,学生们也认为自己得到了适当的警告,Ben也自认为相当聪明。 之后他继续对同样的数据集进行分析。 为了探究下按县计算的传染病数量,他做了如下一张图
这时一个学员问:“嘿,Ben,地图右下角的那条未知信息是什么意思?”
一开始Ben并没有注意到它, 就点进去看下,想了一会儿,不禁微笑。每个县的每一种疾病和年份组合都有一行, 但加州县增加了一行(如下图所示)。
为什么呢?纽约州有一个纽约州的县,但加州肯定没有加州县。 可以想象,创建和发布数据集的人想要提供每一种疾病和年份组合的一行, 使得所有县的报告病例加可以在一起,他们使用州名作为“所有县”的占位符。
Ben承认,这个事实本身并不是很有趣。最初的问题—总共报道了多少传染病—的答案是1500万,但不是差了2倍, 而是差了4倍!实际数字不是750万,而是374万。 因为各种总行数,每个性别计算了两次,然后为每个县又计算了两次。 Ben身体力行,向学员们显示了他掉进的陷阱比想象的要深两倍。数据确实总有办法羞辱我们,不是吗?
在之前的文章中,我们已经看到过汇总数据时,如何导致某些类别为空或null,以及当依赖于软件默认值而没有足够仔细地查看视图时, 有时会如何错过重要的信息;这里还看到了数据中令人讨厌的总行数是如何出现的,甚至可以使最简单的答案出错一个数量级。
我们需要意识到做数据时的这些问题,然后再对所持观点和分析结果给出适当结论。如果不探索数据的外部轮廓及其内部信息, 就有可能认定某些实际上并不存在的趋势存在,也有可能错过一些关键信息。
汇总或聚合数据是一种相对简单的数学操作(有些人认为非常琐碎),但我们已经看到,即使是这些基本步骤也可能非常棘手。 下面考虑一下,当做一些稍微复杂一点点的数学上时会发生什么,比如下一节会涉及处理比率的事情。
陷阱:荒谬的百分比
这个所谓的新话题是为了说明当我们分析数据时,数学上的错误会以另一种方式把我们引入歧途。 下面这个例子处理的是百分比,也颇有其棘手之处。 每年,世界银行都会编制并发布一套数据,估计每个国家居住在城市环境中的人口比例。在此先感恩一下世界银行的数据团队。
世界银行网站上显示的时间轴显示,全球城市人口占总人口的比例从1960年的33.6%上升到2016年的54.3%。 在这个网站上可以下载这一比例的数据集(数据来自https://data.worldbank.org/indicator/SP.URB.TOTL.IN.ZS),让我们深入研究一个国家和地区的数据。
有了这些数据,我们可以创建一个简单的世界地图,显示2016年每个国家据称居住在城市环境的百分比(图4.16)。 这张地图使用绿色调来显示城市人口较低的国家(黄色和浅绿色)和城市人口较高的国家(蓝色到紫色)。
看下非洲的那个黄色国家,那就是厄立特里亚( Eritrea), 城市人口真的是0%吗?真的就是绿色调色板中亮黄色的对应值?
实际上,这并不是地图上唯一的亮黄色国家,还有科索沃和圣马丁( Kosovo and Saint Martin)。 其中科索沃是一个部分得到承认的国家,圣马丁是法国的海外集合体, 但厄立特里亚是非洲联盟和联合国的成员国,其最大城市阿斯马拉约有65万居民。
在刚刚下载的世界银行数据集种,这三个国家的值是空的。 为null的原因还不完全清楚,但不管原因是什么, Tableau默认这两个国家的null值为0%,就厄立特里亚而言, 这对地图的观察者是一种误导(图4.17)。
将这三个国家从地图中排除,再看下其他国家的数据(图4.18)。
还不错——现在的地图靠谱多了, 但是如果想从地区层面而不是国家层面来分析城市人口的百分比会怎样呢?例如,2016年北美有多少人住在一个城市?
幸运的是,世界银行为每个国家都提供了一个区域数据字段,北美地区包括美国,加拿大和百慕大(墨西哥被包括在拉丁美洲和加勒比地区)。我们可以快速列出这三个国家的城市人口百分比,如图4.19所示。
但是我们如何从这三个国家层面的数字中确定整个地区的百分比呢?显然,把它们加起来得到263.80%是不明智的, 按理说没有人会把没有这样公分母的百分比加起来,其实呢,这样的人也有若干。
还有人认为,答案是可以通过求这些值的平均值来估计的。 因此,北美三个国家的简单算术平均值可以得到263.80%,然后除以3。 这样做时,计算出该地区城市人口的平均百分比为87.93%(图4.20)。
完事大吉?非也。真的不能以这种方式把这些比例数据结合起来。
这个问题与每个百分比都是两个数字的商有关。 每个商的分子是居住在那个特定国家的城市环境中的人数, 分母是那个特定国家的总人口。分母不一样,加的不是同一类别的东西。 误差很难估计,不要认为数据工具上什么的数据都是合理的,如下图。
换句话说,只有在每个国家的人口都完全相同的情况下,才能合理地把商相加。 此时甚至不知道每个国家的人口,因为这些数据并不包括在下载的数据中。
至此,似乎陷入了僵局,无法在地区层面找到答案。仅凭这个数据集,确实不能。 这里有个错误思维方式,人们会认为似乎现有数据应该能够在地区层面上回答这个问题: 每个国家都有一个值,并且每个国家都被划分为区域;这是很简单的聚合,误差会有那么大么? 就这样以侥幸心理,又为简单计算过程所诱惑,而慢慢的“成功”入坑。
如果我们分析的不是比率、或百分比,比如总人口, 那么就可以精确的进行汇总,并在区域层面回答问题,也不需要担心那些与非商值匹配的分母。
结果是,总人口数据集是一个缺失的关键,有它可以帮助解决关于城市人口百分比的区域问题。 幸运的是,世界银行还发布了一套单独的数据集(可见https://data.worldbank.org/indicator/SP.POP.TOTL),其中包括每个国家在一段时间内的人口总数。再次感恩世界银行的数据团队。
把现有数据集与国家人口的数据集进行合并,这样做可以马上告诉我们为什么最初的算术平均方法会遇到麻烦 ——这三个国家的人口有很大的不同(图4.22)
使用这个表格,就可以相当直接地确定区域商数的分母——北美总人口(由世界银行定义)。 我们可以把最后一列的这三个数相加得到359,457,493。
现在需要的是每个国家的城市人口总数,可以用城市人口百分比乘以每个国家的总人口来估计。 有了这个,可以很容易地计算区域商,通过这两个数字除以一起得到81.81%(图4.23)。
看这张表,我们可以看到城市人口的区域百分比非常接近美国的值。 准确地说,它只比美国的价值高出百分之二。其原因现在显而易见:美国主导着该地区的人口,几乎90%的居民居住在那里。 百慕大100%的居民都生活在城市中,其人口只占该地区总人口的不到0.02%。 因此,在确定区域平均水平时给予它们同等的权重根本就不准确。
另一种方法是将这三个国家分别放在城市人口与城市人口百分比的散点图上, 按人口大小划分圆圈, 并将这两种计算方法,也就是正确和不正确的区域百分比相加(图4.24)。
对于北美来说,展示这个陷阱以及如何一步步避免是很方便的, 因为该地区只列出了三个国家,所以整个区域表很容易展示出来。 如果对世界银行数据集中的每个地区都进行类似的分析,可以创建如图4.25所示的斜坡图, 如下图显示各地区正确百分比和不正确的对比。 请注意,对拉丁美洲和加勒比地区的采取对百分比求均值的预测是多么的错误, 把人口因素考虑进去,而不是仅仅对每个国家的百分比进行平均, 该地区的城市化率从65%上升到80%以上。
这似乎是一个小问题,讲过之后,有人会感觉不会再掉进这个陷阱了。 但其实很多人还是会忽视这些迹象,而一头栽进其中。每次发现自己已经在坑里的时候,真是欲哭无泪。 慢慢练习吧,渐渐会有较好的识别能力。在聚合或者汇总百分比和比例时要非常小心,这的确是一件棘手的事情。
想获取更多内容,请关注海数据实验室公众号。
本期分享到这里,我们会每天更新内容,咱们下期再见,期待您的再次光临。有什么建议,比如想了解的知识、内容中的问题、想要的资料、下次分享的内容、学习遇到的问题等,请在下方留言。如果喜欢请关注。
社群推荐:
更多有关数据分析的精彩内容欢迎加入海数据在线数据分析交流群,有什么想法或者疑问都可在里面提出,与同行零距离交流,共同成长进步,请识别下面二维码加火星小海马微信,邀你进群。