机器学习 - 比较检验

列联表

列联表(Contingency Table)是一种用于显示两个或多个分类变量之间关系的表格。它广泛应用于统计学中的分类数据分析,尤其在独立性检验和关联性分析时。列联表的每个单元格展示了相应分类变量组合的频数(或比例)。

列联表的结构

列联表通常呈现为矩阵形式,行和列表示不同的分类变量。例如,一个简单的2x2列联表如下:

变量B的类别1变量B的类别2
变量A的类别1ab
变量A的类别2cd

其中:

  • a, b, c, d分别表示变量A的不同类别与变量B的不同类别组合的频数。

列联表的应用

  1. 卡方检验(Chi-Square Test):用于检验两个分类变量之间是否存在统计显著性的关联。
  2. Fisher精确检验(Fisher’s Exact Test):当样本量较小时,Fisher精确检验比卡方检验更合适。
  3. McNemar检验:用于配对样本的二分类数据,常用于前后对比实验中的数据分析。
  4. 独立性检验:通过分析列联表,确定两个变量是否相互独立。

示例

假设我们有一个关于是否喜欢某种产品的调查,调查结果包括性别和是否喜欢产品两个变量。可以用一个2x2列联表来表示:

性别 \ 喜欢产品
男性3020
女性2525

这个列联表展示了男性和女性分别喜欢和不喜欢产品的频数。

总结

列联表是一种显示两个或多个分类变量之间关系的表格。通过分析列联表中的频数分布,可以了解变量之间的关联性,并进行统计检验。

交叉验证t检验

交叉验证是一种评估机器学习模型性能的方法。它通过将数据集分成若干个子集,反复训练和验证模型来评估其性能稳定性和预测能力。常用的交叉验证方法包括k折交叉验证和留一法。

t检验是一种统计方法,用于比较两组数据的均值是否存在显著差异。常见的t检验类型包括:

  • 独立样本t检验:用于比较两个独立样本的均值。
  • 配对样本t检验:用于比较同一组样本在不同条件下的均值。

交叉验证t检验结合交叉验证与t检验,通过交叉验证评估模型性能,并使用t检验判断性能差异是否显著。交叉验证t检验并不是基于列联表的,它侧重于连续数据的均值比较。

McNemar检验

McNemar检验是一种非参数统计检验,用于比较配对样本的二分类数据,常用于分析前后变化的数据。例如,评估某种治疗方法前后患者症状的改善情况。McNemar检验使用2x2列联表,其中包含两个分类变量的频数分布:

事件B发生事件B不发生
事件A发生ab
事件A不发生cd

McNemar检验通过比较b和c的差异来判断两个分类变量是否具有显著变化。它确实是基于列联表的。

实例与公式

卡方检验

公式
[ \chi^2 = \sum \frac{(O_i - E_i)^2}{E_i} ]

其中,( O_i ) 是观察频数,( E_i ) 是期望频数。

示例

假设我们有一个列联表如下:

喜欢不喜欢
男性3020
女性2525

我们可以使用卡方检验来判断性别和是否喜欢产品之间是否存在关联。

import scipy.stats as stats# 构建列联表
data = [[30, 20], [25, 25]]# 进行卡方检验
chi2, p, dof, expected = stats.chi2_contingency(data)print(f"Chi2: {chi2}, p-value: {p}")
McNemar检验

公式
[ \chi^2 = \frac{(b - c)^2}{b + c} ]

示例

假设我们有如下2x2列联表用于McNemar检验:

后者阳性后者阴性
前者阳性105
前者阴性1520

我们可以使用McNemar检验来分析前后情况的变化。

import statsmodels.api as sm# 构建列联表
data = [[10, 5], [15, 20]]# 进行McNemar检验
result = sm.stats.mcnemar(data)print(f"Chi2: {result.statistic}, p-value: {result.pvalue}")

以上代码展示了如何使用Python进行卡方检验和McNemar检验的具体操作。通过这些实例和公式,可以更好地理解这些检验方法的应用和实现。

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

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

相关文章

【2024_CUMCM】LINGO入门+动态规划

目录 什么是动态规划 怎么使用动态规划? 例题:最短路线问题 2020b-问题一 稳定性分析 灵敏度分析 什么是动态规划 基本想法:将原问题转换为一系列相互联系的子问题,然后通过逐层递推求得最后的解 基本思想:解决…

X12端口配置指南:ISA ID、测试指示符与997

通过知行之桥EDI系统实现X12 & 标准XML之间的格式转换时,需要完善交换头ISA ID及其限定符、测试标识符以及997的相关配置。 在X12文件中有两组EDI ID对,分别是发送方 ID 限定符 及发送方ID ,接收方 ID 限定符及接收方ID。 比如&#xf…

STM32Cubemx配置生成 Keil AC6支持代码

文章目录 一、前言二、AC 6配置2.1 ARM ComPiler 选择AC62.2 AC6 UTF-8的编译命令会报错 三、STM32Cubemx 配置3.1 找到stm32cubemx的模板位置3.2 替换文件内核文件3.3 修改 cmsis_os.c文件3.4 修改本地 四、编译对比 一、前言 使用keil ARM compiler V5的时候,编译…

RK3568 buildroot 使用dropbear实现ssh远程的方法

RK3568 buildroot 使用dropbear实现ssh远程的方法 文章目录 RK3568 buildroot 使用dropbear实现ssh远程的方法前言一、创建S99dropbear.sh脚本二、创建sshd_config三、添加root账户密码到系统验证登录前言 rk3568 linux 的sdk中,buildroot已经集成了dropbear的所需的lib库环境…

交替打印-GO

1 两个channel 版本 package mainimport ("fmt""sync")var wg sync.WaitGroup var c1 chan int var c2 chan intfunc A(){defer wg.Done()for i:0;i<10;i {<-c1fmt.Println(2*i)c2<-1 //牵引协程} } func B(){defer wg.Done()for i:0…

Java内存区域与内存溢出异常(自动内存管理)

序言&#xff1a;Java与C之间有一堵由内存动态分配和垃圾收集技术所围成的高墙&#xff0c;墙外面的人想进去&#xff0c;墙里面的人却想出来。 1.1概述 对于从事C、C程序开发的开发人员来说&#xff0c;在内存管理领域&#xff0c;他们既是拥有最高权力的“皇帝”&#xff0c…

使用OpenCV在按下Enter键时截图并保存到指定文件夹

使用OpenCV在按下Enter键时截图并保存到指定文件夹 在这篇博客中&#xff0c;我们将介绍如何使用OpenCV库来实现一个简单的功能&#xff1a;在按下Enter键时从摄像头截图并保存到指定的文件夹中。这个功能可以用于各种应用&#xff0c;例如监控系统、视频捕捉等。 前置条件 …

在FPGA程序中Handshake(握手)和Register(寄存器)区别

在FPGA程序中&#xff0c;Handshake&#xff08;握手&#xff09;和Register&#xff08;寄存器&#xff09;是两种不同的通信和数据传输机制。它们各有特点和适用场景。以下是它们的区别和应用场景的详细解释&#xff1a; Register&#xff08;寄存器&#xff09; 特点&#…

SQLServer用户们,你们摊上大事了!

最近一段时间&#xff0c;我们经常会收到了许多用户的咨询&#xff0c;问我们何时能纳管SQLServer&#xff1f;耐不住小伙伴们的猛烈催促及热切期待&#xff0c;本不想纳管SQLServer的研发团队也抓紧将这项需求提上日程。并在DBdoctor v3.2.2版本中成功实现了对SQLServer的纳管…

班级录取查询系统如何制作

在教育的长河中&#xff0c;我们每位老师都曾面临过这样一个问题&#xff1a;如何高效、准确地完成班级录取查询的任务&#xff1f;记得在以往&#xff0c;每当新学期伊始&#xff0c;我们不得不手忙脚乱地整理学生名单&#xff0c;然后逐一通知他们所在的班级。这个过程不仅耗…

谷歌Google Ads新账号推广方案

第一阶段重点 推广地区优化&#xff1a;分析投放国家的数据&#xff0c;剔除高花费低转化的国家&#xff0c;将预算重新分配给高性价比的国家&#xff0c;从而降低询盘成本并增加询盘数量。关键词优化&#xff1a;识别并暂停或降价高成本低回报的关键词&#xff0c;减少询盘成本…

《mysql篇》--索引事务

索引 索引的介绍 索引是帮助MySQL高效获取数据的数据结构&#xff0c;是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针&#xff0c;因为索引本身也比较大&#xff0c;所以索引一般是存储在磁盘上的&#xff0c;索引的种类有很多&#xff0c;不过如果没有特殊…

[ios-h5]在ios系统浏览器中输入框得到焦点时页面自动放大

问题&#xff1a; 在ios系统浏览器中输入框得到焦点时页面自动放大。 解决&#xff1a; 添加meta标签。 <meta name"apple-mobile-web-app-capable" content"yes" /> <meta name"viewport" content"widthdevice-width, initial-…

隐式类型转换 算术转换

目录 整型提升 间接证明整型提升的代码案例 算术转换 整型提升 何为整型提升&#xff1a; C语言的整型算术运算总是至少以缺省&#xff08;默认&#xff09;整型类型的精度来进行的 为了获得这个精度&#xff0c;表达式中的字符类型和短整型操作数在使用之前被转换为普通整…

基于SpringBoot实现轻量级的动态定时任务调度

在使用SpringBoot框架进行开发时&#xff0c;一般都是通过Scheduled注解进行定时任务的开发&#xff1a; Component public class TestTask {Scheduled(cron"0/5 * * * * ? ") //每5秒执行一次public void execute(){SimpleDateFormat df new SimpleDateFormat(…

解决 NullReferenceException: Object reference not set to an instance of an object

在 Unity 中 利用 URDF Importer import UR5e_gripper 的 URDF file 时出现错误&#xff1a; NullReferenceException: Object reference not set to an instance of an object。 理论上是有个Object 是 Null&#xff0c;当我再次检查URDF后仍觉得路径没有写错。 于是我 把Mesh…

软件测试面试200问(含答案+文档)

Part1 1、你的测试职业发展是什么&#xff1f; 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师奔去。而且我也有初步的职业规划&#xff0c;前3年积累测试经验&#xff0c;按如何做好测试工程师的要点去要求自…

spring的bean注册

bean注册 第三方jar包的类想添加到ioc中&#xff0c;加不了Component该怎么办呢。 可以使用Bean和Import引入jar包&#xff0c;可以使用maven安装到本地仓库。 修改bean的名字&#xff1a;Bean("aaa")使用ioc的已经存在的bean对象&#xff0c;如Country&#xff1a;p…

in-flight 要维持在 bdp 附近吗

试图在 bbr 和 aimd 之间保持公平是徒劳的&#xff0c;因为它们没有共识。bbr 认为 in-flight 超过 bdp 是拥塞&#xff0c;而 aimd 认为 buffer 溢出才拥塞&#xff0c;兼顾彼此&#xff0c;就是 bbr3&#xff0c;aimd 不会往左&#xff0c;bbr 就往右。 vegas 同理&#xff…

自定义@AnonymousAccess注解

一.目的&#xff1a; 自定义AnonymousAccess注解&#xff0c;可以直接在controller上添加该注解使请求绕过权限验证进行匿名访问&#xff0c;便于快速调用调试以及部分不需要进行安全验证的接口。而不是每次都需要去SecurityConfig文件中进行修改。 二.流程&#xff1a; 三.实…