【C++】中位数求解,中位数绝对偏差MAD的应用

news2024/11/17 16:18:45

在这里插入图片描述

标准正态分布是一种均值为0、标准差为1的特殊连续概率分布。它的概率密度函数是对称的钟形曲线。

中位数绝对偏差(Median Absolute Deviation,MAD)是一种用于衡量数据集的离散程度的统计量。它衡量了观测值相对于数据集的中位数的平均偏离程度。MAD 的计算过程首先找到数据集的中位数,然后计算每个观测值与中位数的绝对差,并求这些绝对差的中位数。

标准正态分布和 MAD 的关系约为 0.6745 是基于统计推断的结果。具体为沙呢:

  1. 对于标准正态分布,约68% 的数据落在均值加减一个标准差的范围内,常见的3sigma原则,约95% 的数据落在均值加减两个标准差的范围内,约99.7% 的数据落在均值加减三个标准差的范围内。这是根据正态分布的性质推导出来的。

  2. 中位数绝对偏差(MAD)的特性是,在标准正态分布中,数据集的中位数绝对偏差大约等于标准差乘以一个常数。这个常数约为0.6745。

对于标准正态分布的观测值,约50% 的数据落在中位数加减一个中位数绝对偏差的范围内。而对于标准正态分布,中位数绝对偏差的均值是标准差的某个倍数,经过计算得到约为0.6745。因此,我们可以使用这个常数来近似地将 MAD 转换为标准差的估计值。

需要注意的是,这个关系只在标准正态分布下成立。对于其他分布,该关系可能不准确。但在实际应用中,由于 MAD 具有鲁棒性(对异常值不敏感)和简单计算等优点,因此常常用作统计中的一种离散程度衡量指标。

float MADScaleEstimator::compute(std::vector<float>& errors) const
{
  CHECK(!errors.empty()) << "Error vector is empty.";
  auto it = errors.begin()+std::floor(errors.size()/2);
  std::nth_element(errors.begin(), it, errors.end()); // compute median
  return 1.48f * (*it); // 1.48f / 0.6745
}

这段代码是一个名为 MADScaleEstimator 的函数的实现,它计算给定浮点数向量 errors 的中位数绝对偏差(Median Absolute Deviation,MAD)的估计值。

具体功能如下:

  1. 首先,代码使用 CHECK(!errors.empty()) 来确保输入的错误向量 errors 不为空,如果为空,则抛出异常并输出错误信息 “Error vector is empty.”。

  2. 然后,代码通过使用标准库函数 std::nth_element 来找到 errors 向量的中位数。std::nth_element 函数在 errors.begin()errors.end() 之间找到第 (errors.size()/2) 个元素,并将其放置在 it 迭代器位置上,从而将 errors 向量分成两部分,左边小于中位数,右边大于等于中位数。

  3. 最后,代码返回 1.48f * (*it),这里使用了常量 1.48f 乘以中位数值 (*it) 来估计中位数绝对偏差(MAD)。这个系数(1.48)是一个经验值,用于将中位数绝对偏差转换成标准差估计的近似值。由于标准正态分布的标准差与 MAD 的关系约为 0.6745,因此 1.48f / 0.6745 用于进行该转换。

提供了一种通过计算浮点数向量的中位数和应用常量倍数来估计中位数绝对偏差的功能。

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

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

相关文章

plt中利用plt.subplots()设置xy轴的共享坐标轴

plt.subplots(nrowos,ncols,sharex,sharey,figsize(4, 3),dpi200,constrained_layoutTrue,**kwargs) 参数&#xff1a; nrows&#xff1a;表示规划区域的行数ncols&#xff1a;表示规划区域的列数index&#xff1a;表示选择区域的索引&#xff0c;默认从1开始编号constrained…

复习第二章之Redis

一、什么是Redis Redis 本质上是一个 Key-Value 类型的内存数据库&#xff0c;很像 memcached&#xff0c;整个 数据库统统加载在内存当中进行操作&#xff0c;定期通过异步操作把数据库数据 flush 到硬盘 上进行保存。因为是纯内存操作&#xff0c;Redis 的性能非常出色&…

华为流程体系:流程架构「OES方法」

目录 内容简介 OES方法 端到端的流程 专栏列表 CSDN学院 作者简介 内容简介 今天继续来谈谈华为流程体系中的流程架构。 在前期的内容已经介绍过 POS 流程架构的方法。 这里就先回顾一下 POS 方法的相关内容&#xff1a; 关于 POS&#xff0c;大家可以参看上面的这张图…

软件测试员的非技术必备技能

成为软件测试人员所需的技能 非技术技能 以下技能对于成为优秀的软件测试人员至关重要。 将您的技能组合与以下清单进行比较&#xff0c;以确定软件测试是否适合您 - 分析技能&#xff1a;优秀的软件测试人员应具备敏锐的分析能力。 分析技能将有助于将复杂的软件系统分解为…

Keepalived 在CentOS 7安装并配置监听MySQL双主

keepalived安装 MySQL双主配置请看这里&#xff1a;https://tongyao.blog.csdn.net/article/details/132016200?spm1001.2014.3001.5502 128、129两台服务器安装步骤相同&#xff0c;配置文件不同&#xff0c;下面有介绍。 1.安装相关依赖包&#xff0c;并下载keepalived安…

css 利用模糊属性 制作水滴

<style>.box {background-color: #111;height: 100vh;display: flex;justify-content: center;align-items: center;/* 对比度*/filter: contrast(20);}.drop {width: 150px;height: 159px;border-radius: 50%;background-color: #fff;position: absolute;/* 模糊 */filt…

如何用12306的积分买火车票

积分买的票是不允许退票的&#xff0c;所以最好自己买票的时候用。 积分获取 是根据价格*5&#xff0c;比如我买的是100元的票就可以获得500积分。

前端学习——Vue (Day8)

Vue3 create-vue搭建Vue3项目 注意要使用nodejs16.0版本以上&#xff0c;windows升级node可以西安使用where node查看本地node位置&#xff0c;然后到官网下载msi文件&#xff0c;在本地路径下安装即可 安装完可以使用node -v检查版本信息 项目目录和关键文件 组合式API - s…

Bean的加载方式

目录 1. 基于XML配置文件 2. 基于XML注解方式声明bean 自定义bean 第三方bean 3.注解方式声明配置类 扩展1&#xff0c;FactoryBean 扩展2,加载配置类并加载配置文件&#xff08;系统迁移) 扩展3&#xff0c;proxyBeanMethodstrue的使用 4. 使用Import注解导入要注入的bean…

【Liux下6818开发板(ARM)】触摸屏

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…

怎么通过通过 p 名称空间配置 bean以及怎么去引用/注入其它 bean 对象--ref和怎么去引用/注入内部 bean 对象-内部 bean 对象

&#x1f600;前言 本章是spring基于XML 配置bean系类中第2篇讲解怎么通过通过 p 名称空间配置 bean以及怎么去引用/注入其它 bean 对象–ref和怎么去引用/注入内部 bean 对象 &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0…

小白三步即可设置企业在线帮助中心?

设置企业在线帮助中心是提升客户服务质量和用户体验的重要举措。以下将介绍三个简单的步骤&#xff0c;帮助企业建立一个高效的在线帮助中心。 第一步&#xff1a;规划与设计 在设置企业在线帮助中心之前&#xff0c;需要进行一定的规划和设计工作&#xff0c;确保帮助中心能够…

MPAndroidChart学习及问题处理

1.添加依赖 项目目录->app->build.gradle dependencies {implementation com.github.PhilJay:MPAndroidChart:v3.0.3 }项目目录->app->setting.gradle dependencyResolutionManagement {repositories {maven { url https://jitpack.io }} }高版本的gradle添加依…

解决路由缓存问题

产生原因 路由只有参数发生变化时 会复用组件实例 解决 1.选择key 简单粗暴 2.选择beforeRouteUpdate钩子函数

【javaSE】 面向对象程序三大特性之继承

目录 为什么需要继承 继承的概念 继承的语法 注意事项 父类成员访问 子类中访问父类的成员变量 子类和父类不存在同名成员变量 子类和父类成员变量同名 访问原则 子类中访问父类的成员方法 成员方法名字不同 总结&#xff1a; 成员方法名字相同 总结&#xff1a; …

spider-flow可视化爬虫界面从入门到放弃

目录 下载编译部署官网地址编译部署启动 简单使用输出文件方式可以正常执行的任务 自定义任务获取小说名 总结 下载编译部署 官网地址 修改端口、数据库、存放地址、执行文件等配置&#xff08;前后端不分离&#xff0c;配置文件端口即页面登录端口&#xff09; spider-flow-w…

Vite+Vue3 开发UI组件库并发布到npm

一直对开源UI组件库比较感兴趣&#xff0c;摸索着开发了一套&#xff0c;虽然还只是开始&#xff0c;但是从搭建到发布这套流程基本弄明白了&#xff0c;现在分享给大家&#xff0c;希望对同样感兴趣的同学有所帮助。 目前我的这套名为hasaki-ui的组件库仅有两个组件&#xff0…

Meta AI研究团队新AI模型: Llama 2 大语言模型

Llama是Facebook Research团队开发的基础语言模型集&#xff0c;旨在提供广泛的语言理解能力。它基于转换器架构&#xff0c;参数范围从7B到65B。通过使用Llama模型&#xff0c;研究人员和开发人员可以构建更先进的自然语言处理系统。您可以在GitHub上找到相关的代码和资源&…

JIT 与 C#热更

JIT与AOT 一般程序运行有两种方式&#xff0c;静态编译与动态编译。 AOT: Ahead Of Time,预先&#xff08;静态&#xff09;编译 静态编译的程序&#xff0c;需要在执行之前全部翻译为机器码&#xff0c;运行前会使得程序安装时间相对较长&#xff0c;但程序运行的时候&#…