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

chatgpt/2023/10/4 7:59:44

在这里插入图片描述

标准正态分布是一种均值为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 medianreturn 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.exyb.cn/news/show-5313979.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

Qt 改变QLabel背景颜色

在桌面应用程序开发时&#xff0c;需要显示一些状态信息&#xff0c;例如客户端是否掉线&#xff0c;串口是否打开等&#xff0c;我们可以用一些标志显示给用户&#xff0c;例如如果QLabel显示绿色&#xff0c;表示连接成功&#xff0c;显示黑色表示失败。 方法一&#xff1a;…

7.31--Day01实战单体项目苍穹外卖

总结 今天回来在高铁上构想了一下&#xff0c;感觉大二有很多的事情要做&#xff0c;这个暑假还有一个月不能浪费了&#xff0c;回来最重要的事情就是看病了&#xff0c;身体一定要调养好了&#xff0c;大二的规划&#xff0c;大二上继续做省大创&#xff0c;需要做的有软件开…

Eureka 学习笔记3:EurekaHttpClient

版本 awsVersion ‘1.11.277’ EurekaTransport 用于客户端和服务端之间进行通信&#xff0c;封装了以下接口的实现&#xff1a; ClosableResolver 接口实现TransportClientFactory 接口实现EurekaHttpClient 接口实现及其对应的 EurekaHttpClientFactory 接口实现 private …

C# 循环等知识点

《1》程序&#xff1a;事先写好的指令&#xff08;代码&#xff09; using 准备工具 namespace 模块名称 { class 子模块{ static void main()//具体事项 { 代码 } } } 《2》变量&#xff1a;内存里的一块空间&#xff0c;用来存储数据常用的有小数&#xff0c;整数&#xff0c…

【Golang】Golang进阶系列教程--Go 语言 map 如何顺序读取?

文章目录 前言现象原因如何顺序读取推荐阅读 前言 Go 语言中的 map 是一种非常强大的数据结构&#xff0c;它允许我们快速地存储和检索键值对。 然而&#xff0c;当我们遍历 map 时&#xff0c;会有一个有趣的现象&#xff0c;那就是输出的键值对顺序是不确定的。 现象 先看…

提升数据质量的四大有效方式

在数字时代的今天&#xff0c;企业对于高质量、值得信赖的数据的需求越来越高。 目前&#xff0c;已经有很多企业将数据质量视为技术问题而非业务问题&#xff0c;这也是获取高质量数据的最大限制因素。只有查找技术缺陷&#xff0c;例如重复数据、缺失值、乱序序列&#xff0…

国内外遥感数据处理软件对比

1.国内遥感数据处理软件概况 1.1北京航天宏图信息技术股份有限公司 1.1.1公司简介 航天宏图信息技术股份有限公司成立于2008年,是国内遥感和北斗导航卫星应用服务商,致力于卫星应用软件国产化、行业应用产业化、应用服务商业化,研发并掌握了具有完全自主知识产权的PIE(Pix…

MyBatis小记_three

目录 注解开发 环境搭建 1.创建Maven工程 2.创建实体类 3.提供接口&#xff0c;并提供增删改查的方法 4.编写SqlMapConfig.xml 主配置文件 5.采用注解的方式&#xff0c;来进行增删改查 6.测试 7.测试保存用户的方法 8.测试更新用户 9.测试删除一个用户 10.根据id查…
推荐文章