【数据分析】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).

—— 全文完 ——

感谢阅读,期待你的点赞 + 关注 + 评论 + 收藏 + 转发,我们下期见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/3831.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML应用指南:利用GET请求获取全国特斯拉充电桩位置

随着电动汽车的普及&#xff0c;充电基础设施的建设变得至关重要。作为电动汽车领域的先驱&#xff0c;特斯拉不仅在车辆技术创新上持续领先&#xff0c;还积极构建广泛的充电网络&#xff0c;以支持其不断增长的用户群体。为了提升用户体验和服务质量&#xff0c;开发人员和数…

【原创】大数据治理入门(2)《提升数据质量:质量评估与改进策略》入门必看 高赞实用

提升数据质量&#xff1a;质量评估与改进策略 引言&#xff1a;数据质量的概念 在大数据时代&#xff0c;数据的质量直接影响到数据分析的准确性和可靠性。数据质量是指数据在多大程度上能够满足其预定用途&#xff0c;确保数据的准确性、完整性、一致性和及时性是数据质量的…

OpenVela——专为AIoT领域打造的开源操作系统

目录 一、系统背景与开源 1.1. 起源 1.2. 开源 二、系统特点 2.1. 轻量化 2.2. 标准兼容性 2.3. 安全性 2.4. 高度可扩展性 三、技术支持与功能 3.1. 架构支持 3.2. 异构计算支持 3.3. 全面的连接套件 3.4. 开发者工具 四、应用场景与优势 4.1. 应用场景 4.2. …

寒假1.18

web&#xff08;报错注入&#xff09; [第一章 web入门]SQL注入-2 题解&#xff1a; 打开是个403界面&#xff0c;还以为没开成 通过题目提示&#xff0c;访问/login.php /user.php 合在一起访问屁都没有&#xff0c;分开访问&#xff0c;/login.php回显&#xff1a; /user.p…

如何通过 Apache Airflow 将数据导入 Elasticsearch

作者&#xff1a;来自 Elastic Andre Luiz 了解如何通过 Apache Airflow 将数据导入 Elasticsearch。 Apache Airflow Apache Airflow 是一个旨在创建、安排&#xff08;schedule&#xff09;和监控工作流的平台。它用于编排 ETL&#xff08;Extract-Transform-Load&#xff0…

企业分类相似度筛选实战:基于规则与向量方法的对比分析

文章目录 企业表相似类别筛选实战项目背景介绍效果展示基于规则的效果基于向量相似的效果 说明相关文章推荐 企业表相似类别筛选实战 项目背景 在当下RAG&#xff08;检索增强生成&#xff09;技术应用不断发展的背景下&#xff0c;掌握文本相似算法不仅能够助力信息检索&…

Jenkins-Pipeline简述

一. 什么是Jenkins pipeline&#xff1a; pipeline在jenkins中是一套插件&#xff0c;主要功能在于&#xff0c;将原本独立运行于单个或者多个节点的任务连接起来&#xff0c;实现单个任务难以完成的复杂发布流程。Pipeline的实现方式是一套Groovy DSL&#xff0c;任何发布流程…

基于海思soc的智能产品开发(高、中、低soc、以及和fpga的搭配)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 市场上关于图像、音频的soc其实非常多&#xff0c;这里面有高、中、低档&#xff0c;开发方式也不相同。之所以会这样&#xff0c;有价格的因素&am…

C# 修改项目类型 应用程序程序改类库

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

6、原来可以这样理解C语言_函数(1/8)函数的概念

目录 一、函数的概念 一、函数的概念 数学中我们其实就⻅过函数的概念&#xff0c;⽐如&#xff1a;⼀次函数 ykxb &#xff0c;k和b都是常数&#xff0c;给⼀个任意的x&#xff0c;就 得到⼀个y值。 其实在C语⾔也引⼊函数&#xff08;function&#xff09;的概念&#xff0c…

Excel 技巧10 - 如何检查输入重复数据(★★)

本文讲了如何在Excel中通过COUNTIF来检查输入重复数据。 当输入重复数据时&#xff0c;显示错误提示。 1&#xff0c;通过COUNTIF来检查输入重复数据 比如下面是想检查不要输入重复的学号。 选中C列&#xff0c;点 Menu > 数据 > 数据验证 在数据验证页面&#xff0c…

【Linux系统】Ext系列磁盘文件系统二:引入文件系统(续篇)

inode 和 block 的映射 该博文中有详细解释&#xff1a;【Linux系统】inode 和 block 的映射原理 目录与文件名 这里有几个问题&#xff1a; 问题一&#xff1a; 我们访问文件&#xff0c;都是用的文件名&#xff0c;没用过 inode 号啊&#xff1f; 之前总是说可以通过一个…

[计算机网络]一. 计算机网络概论第一部分

作者申明&#xff1a;作者所有文章借助了各个渠道的图片视频以及资料&#xff0c;在此致谢。作者所有文章不用于盈利&#xff0c;只是用于个人学习。 1.0推荐动画 【网络】半小时看懂<计算机网络>_哔哩哔哩_bilibili 1.1计算机网络在信息时代的作用 在当今信息时代&…

Python操作Excel——openpyxl使用笔记(2)

2. 操作工作表 前面提到一个工作簿中会有一个或者多个工作表&#xff0c;当前使用的工作表被称作活动工作表&#xff0c;这里展开介绍一下对于工作表的一些操作。 2.1 枚举所有工作表 使用for循环可以很方便的遍历每个工作表&#xff1a; import openpyxl wb openpyxl.o…

Social LSTM:Human Trajectory Prediction in Crowded Spaces | 文献翻译

概要 行人遵循不同轨迹以避免障碍物和容纳同行者。任何在这种场景中巡航的自动驾驶车辆都需要能够遇见行人的未来位置并相应地调整其路线以避免碰撞。轨迹预测问题能够被看作一个顺序生成任务&#xff0c;其中我们对基于行人过去的位置预测其未来的轨迹感兴趣。根据最近RNN&am…

从零开始:Gitee 仓库创建与 Git 配置指南

引言 Git 是一款广泛使用的版本控制工具&#xff0c;它能够帮助开发者在开发过程中高效地管理代码的版本。而 Gitee&#xff08;码云&#xff09;是国内知名的 Git 托管平台&#xff0c;它提供了强大的代码托管、团队协作和项目管理功能。如果你是 Git 和 Gitee 的新手&#x…

挖掘机检测数据集,准确识别率91.0%,4327张原始图片,支持YOLO,COCO JSON,PASICAL VOC XML等多种格式标注

挖掘机检测数据集&#xff0c;准确识别率91.0%&#xff0c;4327张图片&#xff0c;支持YOLO&#xff0c;COCO JSON&#xff0c;PASICAL VOC XML等多种格式标注 数据集详情 数据集分割 训练组70&#xff05; 3022图片 有效集20&#xff05; 870图片 测试集10&…

CV 图像处理基础笔记大全(超全版哦~)!!!

一、图像的数字化表示 像素 数字图像由众多像素组成&#xff0c;是图像的基本构成单位。在灰度图像中&#xff0c;一个像素用一个数值表示其亮度&#xff0c;通常 8 位存储&#xff0c;取值范围 0 - 255&#xff0c;0 为纯黑&#xff0c;255 为纯白。例如&#xff0c;一幅简单的…

QT 使用QTableView读取数据库数据,表格分页,跳转,导出,过滤功能

文章目录 效果图概述功能点代码分析导航栏表格更新视图表格导出表格过滤 总结 效果图 概述 本案例用于对数据库中的数据进行显示等其他操作。数据库的映射&#xff0c;插入等功能看此博客框架&#xff1a;数据模型使用QSqlTableModel&#xff0c;视图使用QTableView&#xff0…

UI自动化测试:异常截图和page_source

自动化测试过程中&#xff0c;是否遇到过脚本执行中途出错却不知道原因的情况&#xff1f;测试人员面临的不仅是问题的复现&#xff0c;还有对错误的快速定位和分析。而异常截图与页面源码&#xff08;Page Source&#xff09;的结合&#xff0c;正是解决这一难题的利器。 在实…