当前位置: 首页 > article >正文

【漫话机器学习系列】083.安斯库姆四重奏(Anscombe‘s Quartet)

安斯库姆四重奏(Anscombe's Quartet)

1. 什么是安斯库姆四重奏?

安斯库姆四重奏(Anscombe's Quartet)是一组由统计学家弗朗西斯·安斯库姆(Francis Anscombe)1973 年 提出的 四组数据集。它们的均值、方差、回归直线、相关系数等统计量几乎相同,但当绘制成图表时却呈现出完全不同的分布形态

这个四重奏展示了数据可视化的重要性,表明仅凭统计数值不能全面反映数据的真实分布。


2. 数据集示例

安斯库姆的四个数据集如下,每个数据集包含 (x, y) 对

数据集xxx 值yyy 值
第一组10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 58.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68
第二组10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 59.14, 8.14, 8.74, 8.77, 9.26, 8.10, 6.13, 3.10, 9.13, 7.26, 4.74
第三组10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 57.46, 6.77, 12.74, 7.11, 7.81, 8.84, 6.08, 5.39, 8.15, 6.42, 5.73
第四组8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 86.58, 5.76, 7.71, 8.84, 8.47, 7.04, 5.25, 5.56, 7.91, 6.89, 6.11

尽管这些数据集的均值、方差、相关系数、回归直线 近似相同,但它们的实际分布却大不相同。


3. 统计量分析

对每个数据集计算以下统计量,我们发现它们几乎相等

  • 均值
  • 方差
  • 相关系数
  • 回归直线

尽管统计量相同,但它们的数据分布和图形表现却大相径庭


4. 数据可视化

如果只看统计量,可能会认为四个数据集的分布类似。但当我们绘制散点图时,会看到完全不同的形态:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# 加载 Anscombe's Quartet 数据集
anscombe = sns.load_dataset("anscombe")# 创建 2x2 子图
fig, axes = plt.subplots(2, 2, figsize=(10, 8))
fig.suptitle("Anscombe's Quartet")# 子集名称
datasets = ["I", "II", "III", "IV"]# 遍历四个数据集并绘制散点图和回归直线
for i, ax in enumerate(axes.flatten()):data = anscombe[anscombe['dataset'] == datasets[i]]  # 修正筛选方式ax.scatter(data['x'], data['y'], label=f'Dataset {datasets[i]}', color='blue', edgecolor='k')ax.set_title(f"Dataset {datasets[i]}")# 计算回归直线m, b = np.polyfit(data['x'], data['y'], 1)ax.plot(data['x'], m * data['x'] + b, color='red', label="Regression Line")plt.tight_layout()
plt.show()

运行结果

5. 观察四个数据集的不同

从图中可以看出:

  • 数据集 1:正常的线性回归数据分布。
  • 数据集 2:呈现非线性关系,回归直线并不能很好地描述数据趋势。
  • 数据集 3:大多数点与回归直线接近,但存在一个异常值(outlier)
  • 数据集 4:x 值恒定,数据呈现一条垂直线,回归模型毫无意义。

6. 重要性:统计数据 ≠ 数据特性

安斯库姆四重奏的核心思想是:

  1. 统计数值不能完全代表数据分布。必须配合数据可视化进行分析。
  2. 数据可视化可以揭示数据的模式,如线性关系、异常值、非线性分布等
  3. 异常值可能极大地影响回归分析,不能仅依赖统计量进行判断。

7. 结论

  • 仅依赖均值、方差、相关系数等统计数值,可能导致误导性的结论。
  • 进行数据分析时,应结合可视化手段(如散点图、直方图等),直观检查数据的分布。
  • 安斯库姆四重奏提醒我们,数据科学不只是数学统计,还包括数据探索与可视化。

8. 拓展:现代版安斯库姆四重奏

在 2017 年,Alberto Cairo 提出了“Datasaurus Dozen”,扩展了安斯库姆四重奏的思想。它展示了一组具有相同统计量但形态完全不同的数据集,其中包括:

  • 恐龙形状
  • 圆形分布
  • 星形分布
  • 水平线形分布

👉 核心思想仍然是:数据可视化远比仅依赖统计数值更重要。


9. 总结

主题说明
安斯库姆四重奏4 组数据集,统计特性相似但分布不同
均值、方差、相关系数统计量不能完全代表数据特征
可视化的重要性必须结合数据可视化(散点图等)
数据分布差异可能是非线性、异常值、特定形态
现代扩展“Datasaurus Dozen” 进一步说明数据可视化的重要性

🚀 数据分析不仅仅是计算统计量,数据可视化同样不可忽视!

相关文章:

【漫话机器学习系列】083.安斯库姆四重奏(Anscombe‘s Quartet)

安斯库姆四重奏(Anscombes Quartet) 1. 什么是安斯库姆四重奏? 安斯库姆四重奏(Anscombes Quartet)是一组由统计学家弗朗西斯安斯库姆(Francis Anscombe) 在 1973 年 提出的 四组数据集。它们…...

kafka消费端之分区分配策略

文章目录 概述分区分配策略RangeAssignor分配策略RoundRobinAssignor分配策略StickyAssignor自定义分区分配策略 总结 概述 我们知道kafka的topic可以被分成多个分区,消费者在集群模式下消费时一个消费组内的每个消费者实例只能消费到一个分区的消息,那…...

e2studio开发RA2E1(9)----定时器GPT配置输入捕获

e2studio开发RA2E1.9--定时器GPT配置输入捕获 概述视频教学样品申请硬件准备参考程序源码下载选择计时器时钟源UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user_uart_callback ()printf输出重定向到串口定时器输入捕获配…...

【Elasticsearch】分桶聚合功能概述

这些聚合功能可以根据它们的作用和应用场景分为几大类,以下是分类后的结果: 1.基础聚合(Basic Aggregations) • Terms(字段聚合) 根据字段值对数据进行分组并统计。 例子:按产品类别统计销…...

开源安全一站式构建!开启企业开源治理新篇章

在如今信息技术日新月异、飞速发展的数字化时代,开源技术如同一股强劲的东风,为企业创新注入了源源不断的活力,然而,正如一枚硬币有正反两面,开源技术的广泛应用亦伴随着不容忽视的挑战。安全风险如影随形,…...

功能架构元模型

功能架构的元模型是对功能架构进行描述和建模的基础框架,它有助于统一不同团队对系统的理解,并为系统的设计和开发提供一致的标准和规范。虽然具体的元模型可能因不同的应用领域和特定需求而有所差异,但一般来说,功能架构的元模型可以涵盖以下几个方面: 组件/模块元模型:…...

Node.js 与 npm 版本兼容性问题详解:如何避免版本冲突

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…...

鸿蒙开发中 SaveButton 按钮 保存按钮点击后权限授权失败。

原因分析 查看官方文档的解释 在 控制台中 过滤这个字段 过滤关键字"SecurityComponentCheckFail"可以获取具体原因。 得到 产生的原因 是 因为层叠的原因 savebutton 组件必须的 在屏幕的最高层 不能有任何的覆盖和遮挡 通过这样书写就解决了 // 下面是安…...

胜任力冰山模型:深入探索职业能力的多维结构

目录 1、序言 2、什么是胜任力? 3、任职资格和胜任力的区别 4、胜任力冰山模型:职场能力的多维展现 4.1、冰山水面上的部分 4.2、冰山水面下的部分 4.3、深层的个人特质与价值观 5、如何平衡任职资格与胜任能力 6、结语 1、序言 在快速发展的I…...

C#面试常考随笔12:游戏开发中常用的设计模式【C#面试题(中级篇)补充】

C#面试题(中级篇),详细讲解,帮助你深刻理解,拒绝背话术!-CSDN博客 简单工厂模式 优点: 根据条件有工厂类直接创建具体的产品 客户端无需知道具体的对象名字,可以通过配置文件创建…...

gst_pad_add_probe使用笔记

gst_pad_add_probe 是 GStreamer 中的一个函数,用于在 pad 上添加探针(probe)函数,以便监控或者修改流经该 pad 的数据。通过探针,可以在数据流的不同阶段执行自定义操作,如修改、丢弃或分析数据。 函数原…...

Google地图瓦片爬虫——进阶版

紧接上一篇——Google地图瓦片爬虫 clash节点自动切换 为了防止一个IP地址访问频率过快问题,自动切换clash的节点 def change_node(is_stop):while True:_r requests.get("http://127.0.0.1:11053/proxies", headersclash_headers, verifyFalse)# 这里…...

将Deepseek接入pycharm 进行AI编程

目录 专栏导读1、进入Deepseek开放平台创建 API key 2、调用 API代码 3、成功4、补充说明多轮对话 总结 专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——…...

《论文阅读》GPT-3是否会产生移情对话?一种新的情境示例选择方法和用于生成同理心对话的自动评估度量 ICCL 2022

《论文阅读》GPT-3是否会产生移情对话?一种新的情境示例选择方法和用于生成同理心对话的自动评估度量 ICCL 2022 前言贡献PromptIn-context learningSITSMEMOSITSM新的自动指标实验前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲…...

华水967数据结构2024真题(回忆版)

一、 选择[10道) (20分). 1、数据结构中,从逻辑结构上可以把数据结构分为() 答案:线性结构和非线性结构 2、给了一个二叉树的中序遍历,求二叉树的后序遍历 解析: 要根据中序遍历的结果来推导后序遍历,需要知道二叉…...

javaEE初阶————多线程初阶(3)

大家新年快乐呀,今天是第三期啦,大家前几期的内容掌握的怎么样啦? 1,线程死锁 1.1 构成死锁的场景 a)一个线程一把锁 这个在java中是不会发生的,因为我们之前讲的可重入机制,在其他语言中可…...

webpack配置方式

1. 基本配置文件 (webpack.config.js)(导出一个对象) 最常见的方式是通过 webpack.config.js 文件来配置 Webpack,导出一个对象。你可以在这个文件中导出一个配置对象,指定入口、输出、加载器、插件等。 // webpack.config.js m…...

【Flink快速入门-1.Flink 简介与环境配置】

Flink 简介与环境配置 实验介绍 在学习一门新的技术之前,我们首先要了解它的历史渊源,也就是说它为什么会出现,它能够解决什么业务痛点。所以本节我们的学习目的是了解 Flink 的背景,并运行第一个 Flink 程序,对它有…...

WPF基础 | 初探 WPF:理解其核心架构与开发环境搭建

WPF基础 | 初探 WPF:理解其核心架构与开发环境搭建 一、前言二、WPF 核心架构2.1 核心组件2.2 布局系统2.3 数据绑定机制2.4 事件处理机制 三、WPF 开发环境搭建3.1 安装 Visual Studio3.2 创建第一个 WPF 应用程序 结束语优质源码分享 WPF基础 | 初探 WPF&#xff…...

深入学习MySQL 支持的事务隔离级别

MySQL 支持四种事务隔离级别,分别是读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和可串行化(Serializable)。不同的隔离级别对数据…...

JVM 四虚拟机栈

虚拟机栈出现的背景 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多…...

深入理解小波变换:信号处理的强大工具

引言 在科学与工程领域,信号处理一直是关键环节,傅里叶变换与小波变换作为重要的分析工具,在其中发挥着重要作用。本文将深入探讨小波变换,阐述其原理、优势以及与傅里叶变换的对比,并通过具体案例展示其应用价值。 一…...

【大数据技术】搭建完全分布式高可用大数据集群(Kafka)

搭建完全分布式高可用大数据集群(Kafka) kafka_2.13-3.9.0.tgz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群 Kafka 的详细步骤。 注意: 统一约定将软件安装包存放于虚拟机的/software目录下,软件安装至/opt目录下。 安…...

使用git clone一个指定文件或者目录

1 创建一个空文件夹 mkdir -p test2 进入创建的文件夹 cd /test3 执行git init初始化git 在新建的文件夹下执行初始化动作是因为要保证本地是在git的环境下,为关联远程仓库提供前提。 git init4 与远程仓库进行关联 以我自己的gitcode仓库为例 git remote add…...

解决react中函数式组件usestate异步更新

问题:在点击modal组件确认后 调用后端接口,使用setstateone(false)使modal组件关闭,但是设置后关闭不了,在设置setstateone(false)前后打印出了对应的stateone都为true,但…...

关于ESP-IDF 5.4 中添加第三方组件esp32-camera找不到文件,编译错误解决办法(花了一天时间解决)

最近需要使用ESP32-S3-CAM 的OV2640摄像头采集图像,为了加速开发进度,于是选择了esp32-camera组件,该组件不是官方组件,需要自己git clone。但在为项目添加esp32-camera组件时,一直编译错误,找不到头文件&a…...

Android LifecycleOwner 闪退,java 继承、多态特性!

1. 闪退 同意隐私政策后,启动进入游戏 Activity 闪退 getLifecycle NullPointerException 空指针异常 FATAL EXCEPTION: main Process: com.primer.aa.gg, PID: 15722 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.primer.aa.…...

feign Api接口中注解问题:not annotated with HTTP method type (ex. GET, POST)

Bug Description 在调用Feign api时,出现如下异常: java.lang.IllegalStateException: Method PayFeignSentinelApi#getPayByOrderNo(String) not annotated with HTTPReproduciton Steps 1.启动nacos-pay-provider服务,并启动nacos-pay-c…...

Swipe横滑与SwipeItem自定义横滑相互影响

背景 vue项目&#xff0c;H5页面&#xff0c;使用vant的组件库轮播组件<Swipe>&#xff0c;UI交互要求&#xff0c;在每个SwipeItem中有内容&#xff0c;可自横滑&#xff0c;查看列表内容 核心代码 <template><Swipeclass"my_swipe":autoplay&quo…...

[LeetCode]day16 242.有效的字母异位词

242. 有效的字母异位词 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的 字母异位词 示例 1: 输入: s "anagram", t "nagaram" 输出: true示例 2: 输入: s "rat"…...