冷水间闲聊-第-7-集-Anscombe-的四重奏和数据恐龙
冷水间闲聊,第 7 集:Anscombe 的四重奏和数据恐龙
数据分析

由作者使用 GPT-4 创建的图像
你是否曾听到同事自信地宣称“我越在轮盘赌上输得越多,就越接近赢?”,或者有过老板要求你不要把事情复杂化,只提供“一个数字”,而忽略你解释为什么这样的数字不存在的尝试?也许你甚至和同事分享过生日,办公室里的每个人都对这看似奇怪的宇宙巧合发表了评论。
这些时刻是典型的冷水间闲聊例子——一种特殊的闲聊,在休息室、咖啡机和当然,冷水间中蓬勃发展。这是员工分享各种公司八卦、神话和传说、不准确的科学观点、令人震惊的个人轶事或直接谎言的地方。什么都可以。因此,在我的 冷水间闲聊 文章中,我讨论了我在办公室听到的奇怪且通常科学上无效的观点,并探讨了真正发生的事情。
那么,这是今天博客的冷水间观点:
描述性统计完全匹配,所以数据集基本上是相同的。没有必要深入挖掘。
当然,这可能有些道理——如果你从未上过统计学课程。🙃 但在现实中,非常不同的数据集可以具有相同的描述性统计指标,例如均值、平均值或标准差。换句话说,尽管描述性统计可以 描述 数据集,但它们并不能 定义 它。为了获得完整的画面,人们需要始终 绘制 数据。
无论如何,第一个展示这一点的人是 Frank Anscombe,他用他现在臭名昭著的 Anscombe 的四重奏。
🍨 DataCream 是一份提供数据驱动文章和数据、技术、AI 和机器学习观点的通讯。如果你对这些主题感兴趣,请订阅。
那么,关于 Anscombe 的四重奏呢?
因此,Anscombe 的四分位数是一组具有几乎相同描述性统计数据的四个数据集,然而,当可视化时,它们看起来却非常不同。该数据集属于公共领域,并且方便地在 seaborn 库中可用,使我们能够随意探索正在发生的事情。我们可以通过以下方式轻松加载数据集:
import seaborn as sns
data = sns.load_dataset("anscombe")
然后,我们可以使用 matplotlib 创建四个数据集的可视化:
import matplotlib.pyplot as plt
sns.relplot(
data=data,
x="x", y="y",
col="dataset", hue="dataset",
kind="scatter",
palette="deep",
height=4, aspect=1
)
plt.suptitle("Anscombe's Quartet", y=1.05)
plt.show()

作者使用 Python 和 Anscombe 的四分位数数据创建的图像
尤其是所有四个数据集都由 11 个(x, y)点组成:
-
dataset I 看起来是简单的线性关系
-
dataset II 明显是一条抛物线
-
dataset III 明显是线性关系,但有一个大的异常值
-
dataset IV 是一条垂直线,但同样,被一个大的异常值扭曲
所有四个数据集彼此之间都非常不同,然而,当我们计算它们的描述性统计数据时,我们会遇到一个剧情转折——所有四个数据集几乎具有相同的描述性统计数据。更具体地说,我们可以按以下方式计算描述性统计数据:
import pandas as pd
from scipy.stats import linregress
def calculate_statistics(group):
mean_x = group['x'].mean()
var_x = group['x'].var()
mean_y = group['y'].mean()
var_y = group['y'].var()
correlation = group[['x', 'y']].corr().iloc[0, 1]
slope, intercept, r_value, p_value, std_err = linregress(group['x'], group['y'])
r_squared = r_value ** 2
return pd.Series({
"Mean of x": mean_x,
"Variance of x": var_x,
"Mean of y": mean_y,
"Variance of y": var_y,
"Correlation of x and y": correlation,
"Linear regression line": f"y = {intercept:.2f} + {slope:.2f}x",
"R2 of regression line": r_squared
})
statistics = data.groupby("dataset").apply(calculate_statistics)
for dataset, stats in statistics.iterrows():
print(f"Dataset: {dataset}")
for key, value in stats.items():
print(f" {key}: {value}")
print()

作者使用 Python 和 Anscombe 的四分位数数据创建的图像
数字相同,视觉效果却截然不同。🤷♀️ 疯狂,对吧?这就是为什么无论数字如何,始终可视化数据都如此重要的原因。用 Anscombe 自己的话说,统计学家中的一种常见但错误的信念是“数值计算是精确的,但图表是粗糙的。”
Anscombe 的四分位数是强调数据可视化重要性的强大例子,因为可视化不仅不同,而且明显不同——只需一眼,就可以理解这些数据集彼此完全不同。换句话说,可视化立即为我们提供了描述性统计数据未能包含的有意义信息。
没有人确切知道 Anscombe 最初是如何想出这些数据集的,但这项2017 年的研究提出了一种从头创建此类数据集的方法。这允许我们产生具有几乎相同描述性统计数据的非常不同的数据集的无限例子——我最喜欢的是数据龙十二生肖 🦖。与 Anscombe 的四分位数类似,数据龙十二生肖包括十三个——一打加上数据龙——具有几乎相同描述性统计数据的非常不同的数据集。
这些数据集可在datasauRus R 包下使用MIT 许可证获取,该许可证允许商业用途。

作者使用 R 语言和datasauRus R 包中的 Datasaurus dozen 数据集创建的图像

作者使用 R 语言和datasauRus R 包中的 Datasaurus dozen 数据集创建的图像
再次强调,所有这些数据集在描述性统计上几乎完全相同,然而,它们却有着惊人的不同。显然,跳过可视化步骤会导致信息的大量丢失。
当一个图表本可以有所帮助时
安斯康姆四重奏或 Datasaurus 可能看起来像是简单的例子,旨在向我们传授数据可视化的重要性。但,不要被误导;这个教训——数据可视化的重要性——不是一个理论概念,而是一个非常真实的概念,在现实世界中有着具体的含义。
1. 2008 年金融危机
以 2008 年金融危机为例。当时银行和投资公司使用的模型,严重依赖于像 _价值在风险(VaR)这样的聚合风险指标。更具体地说,VaR 提供了一个在指定置信水平(例如 95%或 99%)下,给定时间段内投资组合可能的最大损失估计。例如,99%的 VaR 为 100 美元意味着在正常市场条件下,损失超过 100 美元的概率只有 1%。
VaR的计算基于一系列假设,例如通常使用的假设是市场回报是正态分布的。然而,正如你可能已经意识到的,‘正态分布’通常是对现实世界的一种相当粗略的解释——现实生活中大多数情况下要复杂得多,并不那么直接。
无论如何,在 2008 年金融危机的情况下,假设的“正态分布”未能代表现实,也无法解释市场回报实际数据中出现的“厚尾”现象. 分布中的“厚尾”表示极端事件(在这里是极端损失)发生的概率高于预期(来自正态分布)。换句话说,极端损失的发生频率远高于所使用的模型假设。

作者使用 Python 和scipy.stats生成数据创建的图像
然而,专注于像VaR这样的汇总指标并不能识别这些洞察。相反,对历史回报的详细可视化可以更深入地了解真正发生的事情。使用可视化工具和详细分析的个体和机构可以识别风险。
最终,VaR是一个很好的例子,说明了人们往往在看到数字——一个计算结果——时,无论这个数字是否从空中计算出来,都会感到自信和安心。在 2008 年金融危机的核心,过度依赖定量模型导致机构大大低估了风险。显然,许多其他因素也导致了这一结果——比如说相互关联的投资组合的系统风险——然而,对汇总数字的盲目信任仍然是一个强大的因素。
2. 挑战者号航天飞机灾难
即使在挑战者号航天飞机灾难中,一些数据可视化本来也能有所帮助。以参考为例,1986 年 1 月 28 日,航天飞机挑战者在起飞后 73 秒因火箭助推器部分 O 形环故障而解体。O 形环的故障是由于极端低温(2°C / 35°F,前一天晚上降至-8°C/17°F)。在发射前的很长一段时间里,莫顿·塞科尔——制造 O 形环的 NASA 分包商——的工程师们对 O 形环在低温下的性能表示担忧,甚至明确建议不要发射。根据他们提交的事故报告,他们向公司管理层展示了以下图片中的相关数据。尽管如此,他们的担忧被公司管理层忽视,最终建议 NASA 可以发射。

O 形环损坏历史及各种固体火箭发动机(SRM)的温度,来源:www.nasa.gov/history/rogersrep/v5p896.htm,公有领域
关于温度与 O 形圈故障的说明图包含了大量数据,然而,说明的重点并未清晰传达。爱德华·图费在他的书《视觉解释》中提出,一个简单、清晰的温度与 O 形圈故障之间关系的图形表示可能会大有帮助,甚至可能导致关于批准发射的不同决定。据说,莫顿·塞科尔公司也向 NASA 提交了与温度相关的 O 形圈故障事件的散点图——但该图缺少没有故障的航班,因此没有太多意义。一个更好的图表,包括没有 O 形圈事件的航班,可以在《总统委员会关于航天飞机挑战者号事故的报告.》中找到。显然,这是一个更有用的图表,使人们可以立即怀疑 O 形圈故障与温度之间的相关性。图费的批评强调了这种遗漏如何导致决策失误。

每次任务中 O 形圈故障事件数量与温度的散点图,来源:总统委员会关于航天飞机挑战者号事故的报告,公有领域
尽管如此,鉴于今天与那些事件的历史和技术距离,很容易在过去的案例中找到问题。然而,意识到在许多情况下,灾难可以预见,但无法有效地传达给决策者,以便做出正确的决策,这令人心碎。
3. 1854 Broad Street 霍乱爆发
有效数据可视化的一个显著案例是 1854 年 Broad Street 霍乱爆发。1854 Broad Street 霍乱爆发。特别是,这次爆发发生在伦敦索霍区,靠近 Broad Street,在1846-1860 年霍乱大流行期间,造成 616 人死亡。
在这次爆发期间,约翰·斯诺博士设法在地图上说明了霍乱病例,并意识到它们围绕着 Broad Street 的一个水泵聚集。这导致了确定 Broad Street 的水泵被污染,实际上是爆发的源头。简单地移除水泵的手柄导致了疫情的结束。

约翰·斯诺博士的霍乱地图,来源:commons.wikimedia.org/wiki/File:Snow-cholera-map-1.jpg?uselang=en#Licensing,公有领域
这是一个重大的发现,不仅阻止了疫情,还彻底改变了人们对疾病传播和流行病学的理解。毫无疑问,这是一个简单可视化如何走得很远并揭示有影响力的见解的绝佳例子。
在我心目中
最终,从安斯康姆四重奏或数据龙十二生肖等数据集中得到的教训是,我们根深蒂固的观念“‘数值计算是精确的,但图表是粗糙的’”是有缺陷的。可视化和数值计算都是提取数据中有意义见解所必需的。最终,以有意义的方式解释数据可能更多的是一种艺术,而不是一门精确的科学,因为没有一种单一、通用的计算方法应该遵循。数据可视化不仅仅是漂亮的图片,它是避免数据分析中误解和不良决策的必要手段……
…因为数据中可能潜伏着一只数据龙。
🦖
数据问题?🍨 DataCream 可以帮助你!
-
洞察力:通过定制分析解锁可操作见解,以推动战略增长。
-
仪表盘:构建实时、视觉吸引人的仪表盘,以支持明智的决策。
有一个有趣的数据项目吗?需要以数据为中心的编辑内容或精美的数据可视化? Contact me on 💼 LinkedIn.
💖 喜欢这篇帖子?
让我们成为朋友吧!加入我
📰Substack** 💌* Medium* 💼LinkedIn ☕请我喝咖啡!**
或者,看看我的其他水壶闲聊:

浙公网安备 33010602011771号