【数据分析】02- A/B 测试:玩转假设检验、t 检验与卡方检验
一、背景:当“审判”成为科学
1.1 虚拟场景——法庭审判
想象这样一个场景:有一天,你在王国里担任“首席审判官”。你面前站着一位嫌疑人,有人指控他说“偷了国王珍贵的金冠”。但究竟是他干的,还是他是被冤枉的?你需要做出审判。
• 如果你只是听到“民众都说他很可疑”,就随便判有罪,也许冤枉了一个无辜的人;
• 如果你因为证据不够充分,放任他走了,而真凶恰好就是他?那可怎么办?
这时候,作为审判官,你要收集证据(证人证言、现场线索),并进行理性分析。你不会轻易下结论,而是先假设他无罪(原假设),然后看证据有多强。若证据足够强大,说明在“嫌疑人无罪”的情况下,这么极端的指纹、目击等线索出现简直是“小概率事件”,于是你认定他“极可能有罪”,就推翻了无罪假设。
这便是“假设检验”的核心思想:我们总是先假设“没有差异”“没有效应”(就像嫌疑人无罪),然后让数据“自己说话”,看要不要推翻这个假设。
1.2 假设检验的现代发展
• 过去:统计学家费雪(Fisher)等人在 20 世纪初确立了这套“原假设 vs. 备择假设 + p 值 + 显著性水平”的理论框架。
• 现在:在大数据时代,我们依然需要这种方法来对数据做严谨推断,比如互联网产品的A/B 测试、医药领域的疗效分析、金融风控决策等等。
• 原因:不论数据多庞大,随机性和噪声总在,所以我们要有一把“判定差异是否超越随机”的尺子,这就是假设检验。
二、假设检验:原理、角色与流程
2.1 原假设、备择假设
1. 原假设(Null Hypothesis)
默认都是原假设,即罪人没有罪,需要p值低于阈值的时候我们才会推翻(拒绝)我们的原假设
• 嫌疑人无罪;
• 两个方案无差异;
• 新药无显著疗效……
一般总是表示“没有改变、没有差异、没有效果”。
2. 备择假设(Alternative Hypothesis )
• 嫌疑人有罪;
• 两个方案的确有差异;
• 新药确实起了作用……
2.2 p 值:出现极端证据的概率
• p 值(p-value)是指:在原假设为真的前提下,获得我们这么极端(或更极端)观测结果的概率。
• 如果 p 值很小,比如 < 0.05(这就是显著性水平 的常用阈值 0.05),就意味着:
• “在没有差异的情况下,居然还能看到这么极端的数据,太小概率了吧?!”
• 所以我们倾向于说,“估计是原假设不对”,即拒绝原假设。
就是他是好人的情况下,出现这些不利(极端)证据,概率也太小了吧,所以我们认为他是坏人
2.3 Type I 与 Type II 错误
• Type I 错误:错把一个无罪的人判了死刑(原假设其实对,但被我们拒绝)
• Type II 错误:把真正的罪犯当好人放了(原假设其实不对,但我们没拒绝)
• 做实验或统计分析时,我们也要小心平衡:(Type I 错误率)和 (Type II 错误率),别因极度谨慎而漏掉真差异,也别因过度敏感而冤枉“无差异”的情况。
三、A/B 测试:让你的产品决策更像“法庭审判”
3.1 你在做的,正是“统计审判”!
互联网里,每当你想更换按钮颜色、重新设计界面布局,或者改进推荐算法时,却不确定是不是更好——就能用A/B 测试来模拟“法庭审判”流程:
1. 原假设:新方案和老方案在关键指标(点击率、转化率等)上“无差异”;
2. 备择假设:新方案有更好的表现;
3. 随机分配:把用户随机分成两组,一部分看 A,另一部分看 B;
4. 观察结果:收集一段时间数据,看 B 组指标是否明显高于 A 组;
5. 检验:若差异明显到“原假设难以成立”,就说明新方案的确优于旧方案,推翻原假设。
3.2 常见陷阱
• 样本量过小:就好比证据太少,判案没把握;
• 多重测试:一次试验比较很多方案,就像同时审好几个案子,可能在某个案件里意外得到“极端证据”;
• 外部干扰:如果不是随机分组、A/B 组用户画像差别太大,就像找了一群偏见法官,对审判结果会有偏颇。
四、t 检验:如何量化“均值上的差异”?
4.1 t 检验的来龙去脉
• 场景:我想知道“两个组的平均值”到底差多少,比如“男性与女性的平均身高差异”,或者“A 组人群的日均观看时长 vs. B 组人群的日均观看时长”。
• 原理:
• 分子是“两个平均值之间的差”,分母是“这俩差值可能出现的标准误(综合了方差和样本量)”。
• 若这个 t 值很大,表明相对随机波动而言,均值差距太明显,p 值就会小。
4.2 适合场合
1. 数据近似正态分布,或者样本量足够大(中心极限定理可以帮忙);
2. 数值型指标,且你关心“平均值”本身的差异;
3. 如果两组是独立样本,就用“独立样本 t 检验”;若是一组人自己前后对比,则用“配对 t 检验”。
4.3 t 检验代码
案例分析:
案例1:独立样本t检验
问题描述:比较男性和女性的平均身高是否存在显著差异。
import numpy as np
from scipy import stats# 生成模拟数据
np.random.seed(0)
male_heights = np.random.normal(175, 7, 100) # 男性身高(cm)
female_heights = np.random.normal(165, 6, 100) # 女性身高(cm)# 进行独立样本t检验
t_stat, p_value = stats.ttest_ind(male_heights, female_heights)print(f't统计量: {t_stat:.2f}')
print(f'p值: {p_value:.4f}')# 结果解读
alpha = 0.05
if p_value < alpha:print("拒绝原假设,认为男性和女性的平均身高存在显著差异。")
else:print("无法拒绝原假设,认为男性和女性的平均身高无显著差异。")
输出:
案例2:独立样本t检验
问题描述: 在A/B测试中,评估新版本(B)是否显著提升了转化率。
import numpy as np
from scipy import stats# 生成模拟数据
np.random.seed(0)
control = np.random.binomial(1, 0.10, 1000) # 控制组转化率10%
treatment = np.random.binomial(1, 0.12, 1000) # 试验组转化率12%# 计算转化率
control_rate = np.mean(control)
treatment_rate = np.mean(treatment)print(f'控制组转化率: {control_rate:.2%}')
print(f'试验组转化率: {treatment_rate:.2%}')# 进行独立样本t检验
t_stat, p_value = stats.ttest_ind(treatment, control)print(f't统计量: {t_stat:.2f}')
print(f'p值: {p_value:.4f}')# 结果解读
alpha = 0.05
if p_value < alpha:print("拒绝原假设,认为新版本显著提升了转化率。")
else:print("无法拒绝原假设,认为新版本未显著提升转化率。")
输出:
案例3:药物疗效的配对样本t检验
问题描述: 评估某药物在治疗前后患者的血压变化,判断药物是否有效。
import numpy as np
from scipy import stats# 生成模拟数据
np.random.seed(0)
pre_treatment_bp = np.random.normal(150, 10, 30) # 治疗前血压
post_treatment_bp = pre_treatment_bp - np.random.normal(10, 5, 30) # 治疗后血压# 进行配对样本t检验
t_stat, p_value = stats.ttest_rel(post_treatment_bp, pre_treatment_bp)print(f't统计量: {t_stat:.2f}')
print(f'p值: {p_value:.4f}')# 结果解读
alpha = 0.05
if p_value < alpha:print("拒绝原假设,认为药物显著降低了血压。")
else:print("无法拒绝原假设,认为药物未显著降低血压。")
输出:
五、卡方检验:处理“分类变量”就靠它
5.1 当你的证据是“频数”而非“均值”
• 如果你拿到的是“买 or 不买”这样的分类标签,或者“一共投票给 A/B/C 的人数分别是多少”,就不能简单地比较平均值。
• 这时要用卡方检验(Chi-Square),因为它专门对“观察到的频数”和“期望的频数”做比较。
5.2 原理简述
5.3 卡方检验代码
import numpy as np
from scipy.stats import chi2_contingency# 构建列联表
# 行:性别(男、女),列:购买(是、否)
data = np.array([[30, 10],[20, 20]])# 进行卡方检验
chi2, p, dof, expected = chi2_contingency(data)print(f'卡方统计量: {chi2:.2f}')
print(f'p值: {p:.4f}')
print('期望频数:')
print(expected)# 结果解读
alpha = 0.05
if p < alpha:print("拒绝原假设,认为性别与购买决策存在关联。")
else:print("无法拒绝原假设,认为性别与购买决策无关联。")
输出:
六、再回到法庭:如何让判决更高效?
1. 注意样本量:别审太少证据就想定罪,也别没完没了地搜证耽误时间。
2. 明确检验方法:是要比较数值平均?还是比较分类频数?选对 t 检验 or 卡方检验。
3. 控制误差率: 设多少?怎么平衡漏判与冤判?
4. 多重比较调整:若你要审好几件案子(或 A/B 测试好多种版本),要做相应方法调整,避免“捡到极端结果就说差异大”。
七、总结:只要有决策,就可能需要假设检验
从审判一个嫌疑人是否有罪,到互联网 A/B 测试中判断“新老方案孰优孰劣”,再到科研里探讨“实验组与对照组”效果差异,我们都能看到假设检验的身影。它让我们在随机干扰中保持理性,用t 检验检查数值均值,用卡方检验衡量分类差异,用A/B 测试来做商业产品优化。
文章小结:
1. 假设检验:就像法庭审案,“无罪”假设先行,数据若够极端就能推翻;
2. A/B 测试:互联网“快速试验”神器;
3. t 检验:比较“两组均值”时最常用;
4. 卡方检验:用来判断分类/频数的差异或关联度。
希望通过这个“法庭审判”比喻,让你更好理解为何需要假设检验,以及如何把它用在各种实际场景上。本文若能带给你启发或快乐,请不吝在 一键三连(点赞、收藏、关注)并评论分享哦!让更多人知道,“统计思维”才是我们在复杂世界里做出理性决策的秘密武器。
参考阅读
• Fisher, R. A. (1925). Statistical Methods for Research Workers.
• Montgomery, D. C. (2017). Design and Analysis of Experiments.
• Pearson, K. (1900). On the criterion… (The seminal paper on Chi-Square test).
—— 全文完 ——
感谢阅读,期待你的点赞 + 关注 + 评论 + 收藏 + 转发,我们下期见!
相关文章:

【数据分析】02- A/B 测试:玩转假设检验、t 检验与卡方检验
一、背景:当“审判”成为科学 1.1 虚拟场景——法庭审判 想象这样一个场景:有一天,你在王国里担任“首席审判官”。你面前站着一位嫌疑人,有人指控他说“偷了国王珍贵的金冠”。但究竟是他干的,还是他是被冤枉的&…...
Windows下的C++内存泄漏检测工具Visual Leak Detector (VLD)介绍及使用
在软件开发过程中,内存管理是一个至关重要的环节。内存泄漏不仅会导致程序占用越来越多的内存资源,还可能引发系统性能下降甚至程序崩溃。对于Linux平台来说,内存检测工具非常丰富,GCC自带的AddressSanitizer (asan) 就是一个功能…...

[苍穹外卖] 1-项目介绍及环境搭建
项目介绍 定位:专门为餐饮企业(餐厅、饭店)定制的一款软件产品 功能架构: 管理端 - 外卖商家使用 用户端 - 点餐用户使用 技术栈: 开发环境的搭建 整体结构: 前端环境 前端工程基于 nginx 运行 - Ngi…...

人物一致性训练测评数据集
1.Pulid 训练:由1.5M张从互联网收集的高质量人类图像组成,图像标题由blip2自动生成。 测试:从互联网上收集了一个多样化的肖像测试集,该数据集涵盖了多种肤色、年龄和性别,共计120张图像,我们称之为DivID-120,作为补充资源,还使用了最近开源的测试集Unsplash-50,包含…...
AI的出现,是否能替代IT从业者?
AI的出现,是否能替代IT从业者? AI在IT领域中的应用已成趋势,IT 从业者们站在这风暴之眼,面临着一个尖锐问题:AI 是否会成为 “职业终结者”?有人担忧 AI 将取代 IT 行业的大部分工作,也有人坚信…...

乘联会:1月汽车零售预计175万辆 环比暴跌33.6%
快科技1月18日消息,据乘联会的初步推算,2025年1月狭义乘用车零售总市场规模预计将达到约175万辆左右。与去年同期相比,这一数据呈现了-14.6%的同比下降态势;而相较于上个月,则出现了-33.6%的环比暴跌情况。 为了更清晰…...

LLM - 大模型 ScallingLaws 的 CLM 和 MLM 中不同系数(PLM) 教程(2)
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145188660 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Scalin…...

开发神器之cursor
文章目录 cursor简介主要特点 下载cursor页面的简单介绍切换大模型指定ai学习的文件指定特定的代码喂给ai创建项目框架文件 cursor简介 Cursor 是一款专为开发者设计的智能代码编辑器,集成了先进的 AI 技术,旨在提升编程效率。以下是其主要特点和功能&a…...

使用 Ansys Motor-CAD 的自适应模板加速创新
应对现代电机设计挑战 电机设计不断发展,Ansys 正在通过创新解决方案引领潮流,不断突破可能的界限。随着电动汽车、工业自动化和可再生能源系统的快速增长,对优化电机的需求从未如此之高。工程师面临着越来越大的压力,他们需要开发…...

RabbitMQ前置概念
文章目录 1.AMQP协议是什么?2.rabbitmq端口介绍3.消息队列的作用和使用场景4.rabbitmq工作原理5.整体架构核心概念6.使用7.消费者消息推送限制(work模型)8.fanout交换机9.Direct交换机10.Topic交换机(推荐)11.声明队列…...

http转化为https生成自签名证书
背景 项目开发阶段前后交互采用http协议,演示环境采用htttps协议 ,此处为个人demo案例 组件 后端:springBoot 前端:vue web 服务:tomcat 部署环境:linux 生成自签名证书 创建目录 存储证书位置 # mkdir -p…...

《贪心算法:原理剖析与典型例题精解》
必刷的贪心算法典型例题! 算法竞赛(蓝桥杯)贪心算法1——数塔问题-CSDN博客 算法竞赛(蓝桥杯)贪心算法2——需要安排几位师傅加工零件-CSDN博客 算法(蓝桥杯)贪心算法3——二维数组排序与贪心算…...

【网络协议】【http】【https】RSA+AES-TLS1.2
【网络协议】【http】【https】RSAAES-TLS1.2 https并不是一个协议 而是在传输层之间添加了SSL/TLS协议 TLS 协议用于应用层协议(如 HTTP)和传输层(如 TCP)之间,增加了一层安全性来解决 HTTP 存在的问题,H…...

【数据库】MySQL数据库之约束与多表查询
约束 1.概述 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据目的:保证数据库中数据的正确性、有效性,完整性和一致性分类: 注意:约束是作用于表中字段上的,可以在创建表/修改表…...
【Pandas】pandas Series dot
Pandas2.2 Series Binary operator functions 方法描述Series.add()用于对两个 Series 进行逐元素加法运算Series.sub()用于对两个 Series 进行逐元素减法运算Series.mul()用于对两个 Series 进行逐元素乘法运算Series.div()用于对两个 Series 进行逐元素除法运算Series.true…...

02UML图(D2_行为图)
目录 学习前言 ---------------------------------- 讲解一:活动图 ---------------------------------- 讲解二:用例图 ---------------------------------- 讲解三:状态机图 ---------------------------------- 讲解四:…...

Kali环境变量技巧(The Environment Variable Technique Used by Kali
Kali环境变量技巧 朋友们好,我们今天继续更新《黑客视角下的Kali Linux的基础与网络管理》中的管理用户环境变量。为了充分利用我们的黑客操作系统Kali Linux,我们需要理解和善于使用环境变量,这样会使我们的工具更具便利,甚至具…...

【C++】如何从源代码编译红色警戒2地图编辑器
【C】如何从源代码编译红色警戒2地图编辑器 操作视频视频中的代码不需要下载三方库,已经包含三方库。 一、运行效果:二、源代码来源及编程语言:三、环境搭建:安装红警2安装VS2022下载代码,源代码其实不太多,…...

安路FPGA开发工具TD:问题解决办法 及 Tips 总结
安路科技(Anlogic)是一家专注于高性能、低功耗可编程逻辑器件(FPGA)设计和生产的公司。其提供的开发工具TD(TangDynasty)是专门为安路FPGA系列产品设计的集成开发环境(IDE)。以下是对…...

【Django开发】django美多商城项目完整开发4.0第12篇:商品部分,表结构【附代码文档】
本教程的知识点为: 项目准备 项目准备 配置 1. 修改settings/dev.py 文件中的路径信息 2. INSTALLED_APPS 3. 数据库 用户部分 图片 1. 后端接口设计: 视图原型 2. 具体视图实现 用户部分 使用Celery完成发送 判断帐号是否存在 1. 判断用户名是否存在 后…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...

给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...

ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...