A/B实验之置信检验(一):如何避免误判 (I类) 和漏报 (II类)

假设检验的依据:如何避免误判和漏报


A/B实验系列相关文章(置顶)

1.A/B实验之置信检验(一):如何避免误判和漏报
2.A/B实验之置信检验(二):置信检验精要

引言

在数据驱动决策的时代,假设检验作为一种重要的统计方法,帮助我们在不确定性中做出明智的选择。无论是评估新推荐算法的效果,还是测试市场营销策略的成功与否,假设检验都是确保结论可靠性的关键步骤。本文将详细介绍假设检验的基础知识、常见误区及其在实际中的应用。

在这里插入图片描述


一、什么是假设检验?

假设检验是一种基于样本数据来推断总体参数的方法。其核心思想是在两种对立假设之间做出选择:原假设(H0)和备择假设(Ha)。原假设通常表示“无差异”或“无效应”,而备择假设则代表存在某种差异或效应。通过收集数据并计算统计量,我们可以决定是否有足够的证据拒绝原假设。

当然,让我们更详细地解释假设检验中的原假设 (H0) 和备择假设 (Ha),并探讨它们在AB实验(例如推荐系统的性能测试)中的应用。

1. 基本概念

假设检验是一种统计方法,用来决定是否应该拒绝关于总体参数的某个声明。这个过程基于样本数据,并试图通过这些数据来推断总体的真实情况。它帮助我们评估一个假设是否合理,或者是否有足够的证据支持一个替代的假设。

在这里插入图片描述

1.1 原假设 (Null Hypothesis, H0)

定义: 原假设通常是关于“无效应”或“无差异”的声明,即我们想要测试的变化实际上对结果没有影响。在推荐系统的情境下,原假设可以是新算法与旧算法之间没有显著的性能差异。

示例: 在一个推荐系统的AB测试中,原假设可能是:“新推荐算法的点击率不高于当前使用的推荐算法。”

符号表示: H 0 : μ new = μ old H_0: \mu_{\text{new}} = \mu_{\text{old}} H0:μnew=μold,这里 μ new \mu_{\text{new}} μnew μ old \mu_{\text{old}} μold 分别代表新旧推荐算法下的平均点击率。

1.2 备择假设 (Alternative Hypothesis, Ha)

定义: 备择假设是对原假设的对立面,表示存在某种效应或差异。在推荐系统的情境下,备择假设可以是新算法确实提高了性能。

示例: 对应于上面的例子,备择假设可以是:“新推荐算法的点击率高于当前使用的推荐算法。”

符号表示: H a : μ new > μ old H_a: \mu_{\text{new}} > \mu_{\text{old}} Ha:μnew>μold 或者 H a : μ new ≠ μ old H_a: \mu_{\text{new}} \neq \mu_{\text{old}} Ha:μnew=μold(如果考虑双向检验)。前者称为单侧检验,后者称为双侧检验,取决于你关心的是改进还是任何方向上的变化。

2. 为什么需要这两个假设?

  • 科学怀疑主义: 我们从认为变化不会带来效果开始(即接受原假设),除非有足够强的数据证据迫使我们改变这一观点。
  • 逻辑对立: 两个假设必须相互排斥且完全覆盖所有可能性。这意味着如果一个假设被证明为假,则另一个必然为真。
  • 决策框架: 它们提供了一个明确的决策框架,指导我们在数据分析后做出结论:是保持现状(不拒绝H0),还是采取行动(拒绝H0,接受Ha)。

3. 如何使用这两个假设进行决策?

  1. 设定显著性水平α: 这是我们愿意接受的最高误报率(Type I Error的概率)。通常选择0.05或0.01。
  2. 收集数据并计算检验统计量: 根据样本数据,计算出能够衡量两组间差异大小的统计量(如z-score或t-score)。
  3. 确定临界值或p值: 查找对应于α水平的临界值,或者直接计算p值,它是观察到的数据(或更极端数据)在原假设为真的条件下发生的概率。
  4. 比较并作出决定: 如果p值小于α,我们就拒绝原假设;否则,我们不能拒绝原假设。
3.1 核心概念 – 显著性水平
显著性水平 (α) 是什么?

简单来说:显著性水平(通常用α表示)是你愿意接受的“误判”风险。它就像是一个“容忍度”,告诉你在多大程度上你可以接受错误地认为新事物比旧事物更好,而实际上并没有区别。

在这里插入图片描述

为什么需要设定这个“容忍度”?

当你测试一个新的推荐算法时,你希望知道它是否真的比旧算法好。但是,有时候即使新算法并不真正更好,由于随机因素的影响,数据可能会让你觉得它更好。为了避免这种情况,你需要设定一个“容忍度”,也就是显著性水平α。

设定α = 0.05意味着什么?

如果你设定了α = 0.05,这意味着你允许自己有5%的机会犯错——也就是说,有5%的可能性你会错误地认为新算法更好,而实际上它并没有改进。换句话说,如果你做了100次这样的测试,大约会有5次你可能会得出错误的结论。

如何使用α来做决定?

当你做完实验并收集了数据后,你会计算出一个叫做p值的东西。p值告诉你,如果新算法和旧算法其实没有区别,那么你观察到的数据有多不可能发生。

  • 如果p值小于或等于α(比如0.05),你就认为新算法确实更好,并且这种差异不是偶然发生的。
  • 如果p值大于α,你就认为没有足够的证据证明新算法更好,可能只是随机波动造成的。
举个🌰

假设你在做一个AB测试,看看新推荐算法是否提高了用户的点击率。你设定了α = 0.05,然后根据实验结果计算出p值为0.03。因为p值(0.03)小于α(0.05),所以你可以说:“我们有足够的证据表明新算法确实提高了点击率,而且这种提高不太可能是偶然的。”

相反,如果p值是0.07,那么你就不能说新算法更好,因为你缺乏足够强的证据来支持这一点。

总结

设定显著性水平α就像是给自己设定了一个“安全线”。它帮助你控制错误判断的风险,确保你在做决策时有足够的信心。通过选择合适的α值,你可以在发现真实改进和避免错误结论之间找到平衡。

3.2 核心概念 – p值
什么是p值?

p值(p-value) 是衡量样本数据与原假设一致程度的一个指标。它表示的是,在原假设为真的情况下,观察到当前数据或更极端数据的概率。换句话说,p值告诉我们如果原假设是真的,那么我们看到的数据有多“异常”。

  • 小的p值(如小于0.05)表明数据与原假设不一致的可能性较大,因此我们可能会拒绝原假设。
  • 大的p值(如大于0.05)则意味着数据与原假设一致的可能性较大,因此我们没有足够的证据拒绝原假设。
判别方法
  1. 设定显著性水平α:通常设定为0.05或0.01,这决定了我们愿意接受的最大误报率(Type I Error)。
  2. 计算检验统计量:根据你的数据和检验类型(如t检验、z检验等),计算相应的检验统计量。
  3. 查找p值
    • 使用统计表:对于简单的检验,如z检验或t检验,可以使用统计表来查找对应的p值。
    • 使用统计软件或编程语言:大多数现代统计软件包(如R, Python的SciPy库等)可以直接计算p值。
  4. 比较p值与α:如果p值小于或等于α,则拒绝原假设;否则,不能拒绝原假设。
计算过程

示例:单样本z检验
假设有一个样本数据,想要检验它的均值是否与已知总体均值有显著差异。我们将通过以下步骤计算p值:

数据准备

  • 样本数据 data = [ 52 , 53 , 54 , 55 , 56 ] \text{data} = [52, 53, 54, 55, 56] data=[52,53,54,55,56]
  • 已知的总体均值 μ = 50 \mu = 50 μ=50
  • 已知的总体标准差 σ = 5 \sigma = 5 σ=5

步骤 1:计算样本均值

x ˉ = ∑ data n = 52 + 53 + 54 + 55 + 56 5 = 54 \bar{x} = \frac{\sum \text{data}}{n} = \frac{52 + 53 + 54 + 55 + 56}{5} = 54 xˉ=ndata=552+53+54+55+56=54

步骤 2:计算z统计量

z = x ˉ − μ σ / n = 54 − 50 5 / 5 = 4 5 / 5 = 4 2.236 ≈ 1.79 z = \frac{\bar{x} - \mu}{\sigma / \sqrt{n}} = \frac{54 - 50}{5 / \sqrt{5}} = \frac{4}{5 / \sqrt{5}} = \frac{4}{2.236} \approx 1.79 z=σ/n xˉμ=5/5 5450=5/5 4=2.23641.79

步骤 3:查找p值

可以使用标准正态分布表或编程语言来查找p值。这里我们使用Python中的scipy.stats.norm.cdf()函数来计算双侧检验的p值。

from scipy import stats

# 已知的z统计量
z_stat = 1.79

# 双侧检验的p值
p_value = 2 * (1 - stats.norm.cdf(abs(z_stat)))

print(f"z统计量: {z_stat}")
print(f"p值: {p_value}")

这段代码会输出:

z统计量: 1.79
p值: 0.0733

标准对照表类似下面:

在这里插入图片描述

步骤 4:解释

在这个例子中,p值约为0.0733。如果我们设定了显著性水平α = 0.05,那么p值大于α,所以我们不能拒绝原假设。这意味着根据当前数据,我们没有足够的证据证明样本均值与总体均值之间存在显著差异。

总结
  • p值 表示在原假设为真的情况下,观察到当前数据或更极端数据的概率。
  • 计算p值 涉及确定合适的统计检验、计算检验统计量、查找对应的p值,并将其与显著性水平α进行比较。
  • 解释p值 帮助我们决定是否拒绝原假设,从而得出关于数据是否有统计显著性的结论。

二、常见的假设检验类型

在这里插入图片描述

  1. t检验:用于比较两个独立样本的均值。
  2. z检验:当样本量足够大或总体标准差已知时使用。
  3. 卡方检验(χ²):用于分类变量之间的关系测试。
  4. ANOVA(方差分析):用于比较三个或更多组的均值。
  5. 非参数检验:如Mann-Whitney U检验、Kruskal-Wallis检验等,适用于非正态分布的数据。

三、Type I 和 Type II 错误

在这里插入图片描述

1. Type I Error (I型错误)

1.1 概念

Type I Error(I型错误),也称为误报(False Positive),是指在原假设实际上是正确的情况下,我们错误地拒绝了它。简单来说,就是“不该说有变化时却说了”。

1.2 判别方法
  • 显著性水平α:我们通过设定显著性水平α来控制犯Type I Error的概率。α通常设定为0.05或0.01,这意味着我们愿意接受最高5%或1%的误报率。
  • p值:计算出的p值小于或等于α时,我们会拒绝原假设。如果p值很小,说明数据与原假设不一致的可能性较大,我们可能会犯Type I Error。
1.3 注意事项
  • 降低α值:选择更低的α值(如从0.05降到0.01),可以减少犯Type I Error的风险,但同时也会使检测到真实效应变得更加困难。
  • 权衡风险:降低Type I Error的风险可能会增加Type II Error的风险,因此需要根据具体情况权衡两者之间的关系。
1.4 举个🌰

假设你去医院做了一项血液检测,用来检查是否患有某种罕见疾病。医生根据检测结果告诉你,你的测试呈阳性,意味着你可能患上了这种疾病。然而,实际上你并没有患病。这就是一个Type I Error的例子,发生了误报—错误人为检测结果阳性,而实际上并没有。在统计学中,Type I Error就像是这个误报。它发生在我们根据数据得出结论说新事物(比如新的推荐算法)确实带来了改进,但实际上它并没有带来任何真正的改进。

2. Type II Error (II型错误)

2.1 概念

Type II Error(II型错误),也称为漏报(False Negative),是指在原假设实际上是错误的情况下,我们错误地接受了它。简单来说,就是“该说有变化时却没有说”。

2.2 判别方法
  • 检验力(Power = 1 - β):检验力是避免犯Type II Error的能力。高检验力意味着测试更有可能检测到真实存在的效果,从而减少了β值。检验力取决于样本量、效应大小、显著性水平α以及数据变异性等因素。
  • p值:如果p值大于α,我们不能拒绝原假设。此时,可能存在Type II Error的风险,因为我们可能错过了真实的效应。
2.3 注意事项
  • 增加样本量:更多的数据可以提高检测到真实效应的能力,从而减少β值。
  • 增大效应大小:确保你测试的是一个足够大的效应,这样更容易被检测到。这可以通过预实验来估计。
  • 降低数据变异性:通过控制实验条件或选择更一致的数据源,可以减少数据的变异性,从而更容易检测到真实的效应。
2.4 举个🌰

继续用安检的例子来解释。假设有一个隐藏的违禁物品,但安检门却没有发出警报。这是一个漏报的例子——安检系统未能发现实际存在的问题。在统计学中,Type II Error就像是这个漏报。它发生在我们根据数据得出结论说新事物(比如新的推荐算法)没有带来改进,但实际上它确实有所改进。

3. 总结

  • Type I Error 是在不应该的时候认为有变化或差异(误报),其概率由α控制。
  • Type II Error 是在应该的时候没有发现变化或差异(漏报),其概率由β表示。
  • 两者之间存在权衡关系:降低一种错误的风险往往会增加另一种错误的风险。
  • 理解并管理这两种错误对于设计有效的实验和做出可靠的统计推断至关重要。

四、应用

假设检验不仅限于学术研究,它同样广泛应用于商业领域。例如,在一个典型的推荐系统AB测试中,你可能会将一部分用户随机分配给A组(使用旧算法),另一部分分配给B组(使用新算法)。然后,你可以测量每个组的点击率、转化率等关键指标。通过假设检验,你可以判断新算法是否带来了统计上显著的不同表现。

五、总结

假设检验是一项强大的统计工具,它使我们能够在不确定的世界中找到确定的答案。通过理解和应用假设检验,不仅可以提高数据分析的能力,还能为团队提供更有价值的见解。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每日一题:链表中环的入口结点

文章目录 判断链表环的入口节点描述数据范围:复杂度要求:输入输出 示例代码实现思路解析注意事项: 判断链表环的入口节点 描述 给定一个链表,判断该链表是否存在环。如果存在环,返回环的入口节点;如果不存…

深度学习blog-Meanshift均值漂移算法-最大熵模型

均值漂移(Mean Shift)是一种无监督的聚类算法,广泛应用于数据挖掘和计算机视觉任务。它通过移动样本点到其近邻的均值位置来寻找数据的高密度区域,最终形成聚类。 均值漂移算法原理 均值漂移算法的核心思想是通过滑动窗口&#…

51c自动驾驶~合集45

我自己的原文哦~ https://blog.51cto.com/whaosoft/13020031 #运动控制和规划控制需要掌握的技术栈~ 各大垃圾家电造车厂又要开始了~~~​ 1、ROS的通信方式 李是Lyapunov的李:谈谈ROS的通信机制 话题通信和服务通信,其中话题通信是通过发布和订阅…

Python基于jieba和wordcloud绘制词云图

【Cesium】自定义材质,添加带有方向的滚动路线 🍖 前言🎶一、实现过程✨二、代码展示🏀三、运行结果🏆四、知识点提示 🍖 前言 Python基于jieba和wordcloud绘制词云图 🎶一、实现过程 读取文本…

计算机网络与服务器

目录 架构体系及相关知识 三层架构: 四层架构: 常见的应用的模式: OSI模型 分层 数据链路层 TCP/IP模型 TCP和UDP都是传输层的协议 TCP三次握手、四次次分手 URL&HTTP协议详解 网址URL 结构化 报文行 报文头 空行 报文体…

Cursor实现go项目配置并实现仓库Gin项目运行

✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。 🍎个人主页:Meteors.的博客 💞当前专栏:知识备份 ✨特色专栏:知识分享 &#x…

141.环形链表 142.环形链表II

141.环形链表 & 142.环形链表II 141.环形链表 思路:快慢指针 or 哈希表 快慢指针代码: class Solution { public:bool hasCycle(ListNode *head) {if(headnullptr||head->nextnullptr)return false;ListNode *fasthead->next; //不能设置成…

信用租赁系统助力企业实现免押金租赁新模式

内容概要 在现代商业环境中,信用租赁正在迅速崛起。通过结合大数据与区块链技术,信用租赁系统彻底改变了传统的租赁流程。什么是信用租赁呢?简单说,就是不需要押金,你也能够租到你想要的物品,这对企业和消…

el-select下拉框在弹框里面错位

问题出现 Element Plus 是一个基于 Vue 3 的组件库,el-select 是其中一个用于选择器的组件。在 el-select 组件中,teleported 属性用于控制下拉菜单的渲染位置。 解决方法 teleported 属性「element-plus」 popper-append-to-body属性「element」 ‌…

IO进程day1

一、思维导图

力扣-21-合并两个有序链表

思路: 因为是升序的两个链表,我们可以进行数据域比大小,然后把p3(自己创建的)的指针域指向小的那个 注:一定要先判断两个指针为0的情况

人工智能的发展领域之GPU加速计算的应用概述、架构介绍与教学过程

文章目录 一、架构介绍GPU算力平台概述优势与特点 二、注册与登录账号注册流程GPU服务器类型配置选择指南内存和存储容量网络带宽CPU配置 三、创建实例实例创建步骤镜像选择与设置 四、连接实例SSH连接方法远程桌面配置 一、架构介绍 GPU算力平台概述 一个专注于GPU加速计算的…

QT实现 端口扫描暂停和继续功能 3

上篇QT给端口扫描工程增加线程2-CSDN博客 为按钮pushButton_Stop添加clicked事件,功能为暂停扫描,并在暂停后显示继续按钮,点击继续按钮之后继续扫描 1.更新UI 添加继续按钮 点击转到槽则会自动声明 2. 更新 MainWindow.h 需要新增的部分…

汽车微处理器安全机制以及测试介绍

本文介绍了三类汽车微处理器安全机制:硬件类、软件类和混合类,旨在提高系统的可靠性和安全性。硬件类安全机制包括逻辑内建自测试(Logic-BIST)、三重模块冗余(TMR)、内存内建自测试(Memory-BIST…

【Azure Redis 缓存】Azure Redis 遇见的连接不上问题和数据丢失的情况解答

问题描述 PHP应用再连接Azure Redis服务时,出现Connection Timed out。当通过升级提高Azure Redis的性能时候,发现之前的数据丢失了。 image.png 问题解答 当Redis服务出现Timeout的情况时,可以从Redis服务的指标(Metrics)开始查看&#xff0…

python学习笔记—15—数据容器之列表

1. 数据容器 列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict) 2. 列表 (1) 定义 tmp_list ["super", "carry", "doinb"] print(f"tmp_list {tmp_list}, tmp_list type is {type(tmp_list)}") tmp_list1 ["doi…

记录一次面试中被问到的问题 (HR面)

文章目录 一、你对公司的了解多少二、为什么对这个岗位感兴趣三、不能说的离职原因四、离职原因高情商回复五、你的核心优势是什么六、你认为你比其他面试候选人的优势是什么七、不要提及情感 一、你对公司的了解多少 准备要点: 在面试前,对公司进行充分…

VLMs之Agent之CogAgent:《CogAgent: A Visual Language Model for GUI Agents》翻译与解读

VLMs之Agent之CogAgent:《CogAgent: A Visual Language Model for GUI Agents》翻译与解读 导读:这篇论文介绍了CogAgent,一个专注于图形用户界面 (GUI) 理解和导航的视觉语言模型 (VLM)。这篇论文提出了一种新的视觉语言模型 CogAgent&#…

linux audio(1)-pulseaudio模块数据流

本文主要讨论pulseaudio模块的数据流。这里的模块(module)主要限制在sink和source这两种类型。其他类型的数据流后续有空 再撰文讨论。 pulseaudio的模块一般会启动一路线程进行数据的搬运和处理。 下面的是module-null-source模块的数据搬运线程启动代码。 进入thread_func…

ros2-4.1 服务通信介绍

服务是ROS图中节点之间的另一种通信方法。服务分为客户端和服务端,客户端发送请求给服务端,服务端可以根据客户端的请求做一些处理,然后返回结果给客户端。也称为为请求-响应模型。 服务和话题的不同之处,话题是没有返回的&#…