数据分析中的异常值处理
今天来分享一下数据分析中的异常值处理办法
异常值的常见判定方法是:
均值±三个标准差,
这样的话异常值就只会出现在99.87%的值的范围之外。当然选择三个标准差有点太过保守,有的研究也选取了2个或2.5个标准差作为选择范围。
但是这种判定方法是存在一些问题的:
1.原始数据要满足正态分布
2.异常值会强烈的影响平均值 标准差
3.这个方法并不适用于小样本
接下来用一个列子说明:
x=c(1,3,3,6,8,10,10,1000)
平均值:130.13
标准差:351.50
那么范围就是(-856.27,1116.52)
所以结果就是没有异常值,这么大的1000愣是没识别出来。。。
下面就是今天分享的重点了:
MAD—median absolute deviation (绝对中位差)
创始人:Hampel 和 Carl Friedrich Gauss
绝对中位差是用原数据减去中位数后得到的新数据的绝对值的中位数。
In other words,中位数是想要表示一个数据集中间位置的数据,那么每个数据与中位数的差值,反映了这些数据偏离中间位置的程度,在这个偏离程度中取中位数得到的就是绝对中位差。
公式如下:
b为比例因子,通常是1.4826.(怎么来的我也没看太明白,感兴趣的同学参考后面的文献)
还是用刚才的例子还介绍这个方法的使用。
1.先从小到大排列刚才那组数据x= c(1,3,3,6,8,10,10,1000)
2.找出中值。(6+8)/2=7
3.原始数据减去中值(x1),再求绝对值(x2),再从小到大排序(x3),再计算中值。
x1=c(-6,-4,-4,-1,1,3,3,993)
x2=c(6,4,4,1,1,3,3,993)
x3=c(1,1,3,3,4,4,6,993)
median=3.5
4.用上面计算出来的中值3.5乘以b(1.4826)得到最后的mad值5.1891
5.再用原始数据的中值(7)加减3倍的mad值得到最终结果。(也可以是2倍或2.5倍)
7+(3*5.1891) = 22.57
7-(3*5.1891) = -8.57
最终正常值范围就在-8.57到22.57之间,因此原始数据中的1000就可以剔除了。
在R语言中呢,内置的核心包stats(不需要安装和library了)中有个函数mad就是用来求绝对中位差的
好了今天的分享就到这啦,如果有对森林生态感兴趣的同学,可以关注我的个人微信公众号“森林生态小小圈”啊~
数据分析中的异常值处理相关推荐
- 去除dataframe中的空行_Python数据分析中的处理与数值加速技巧简介
微信公众号:cha-diary 大家好! 在这一段时间呢,我主要针对自己调研的一个机器学习模型进行了复现.俗话说得好,读论文一时爽,到复现火葬场.我可能现在后悔就后悔在习惯了Py的解释型环境,把C的那 ...
- python数据分析实战之异常值处理
异常值处理 1.异常值定义 2.异常值处理方式 2.1 均方差 2.3 箱形图 3.实战 3.1 加载数据 3.2 检测异常值数据 3.4 显示异常值的索引位置 1.异常值定义 在统计学中,离群点是并 ...
- 深度盘点:一文详解数据分析中100个常用指标和术语
大家好,有个朋友是金融行业产品经理,最近在对已有的站内用户做分层与标签分类,需要对用户进行聚类分析.一般从事数据分析行业的朋友对这类词并不陌生,但是像市场运营人员就会把这类些名词概念搞混,导致结果不准 ...
- 数据分析中的严谨问题
数据分析中,不少人存在或多或少的不严谨操作.本文大致列举一些 关于Fold Change的计算 Fold Change是差异biomarker筛选的一个常用步骤,一般大家都使用两组的均值相除进行计算. ...
- 数据分析中的专业术语
前言 大家看到这一篇博文的时候,肯定正在准备面试,或者在准备面试的路上.这里为大家带来一些数据分析的专业名词.供大家在面试交流的时候,不要与面试官跨服务器聊天. 正文 数分的专业词汇按照以下三类进行汇 ...
- 数据分析中如何清洗数据?
在数据分析中我们重点研究的是数据,但是不是每个数据都是我们需要分析的,这就需要我们去清洗数据,通过清洗数据,这样我们就能够保证数据分析出一个很好的结果,所以说一个干净的数据能够提高数据分析的效率,因此 ...
- 大数据分析中使用关系型数据库的关键点
相当一部分大数据分析处理的原始数据来自关系型数据库,处理结果也存放在关系型数据库中.原因在于超过99%的软件系统采用传统的关系型数据库,大家对它们很熟悉,用起来得心应手. 在我们正式的大数据团队,数仓 ...
- R语言使用car包的outlierTest函数通过假设检验的方法检测回归模型中的异常值(outlier)、输出异常值对应的统计量、p值以及Bonferonnii校正p值
R语言使用car包的outlierTest函数通过假设检验的方法检测回归模型中的异常值(outlier).输出异常值对应的统计量.p值以及Bonferonnii校正p值 目录
- 如何发现数据中的异常值?对异常值是怎么处理的?
如何发现数据中的异常值?对异常值是怎么处理的? 如何发现数据中的异常值?对异常值是怎么处理的? 一种是基于统计的异常点检测算法例如极差,四分位数间距,均差,标准差等,这种方法适合于挖掘单变量的数值型数 ...
最新文章
- 电脑知识:新电脑数据迁移解决方案,看完你就会了!
- QTextEdit实现图片和文本同行显示
- LightOJ - 1245 Harmonic Number (II) 求同值区间的和
- jssdk分享设置_JSSDK自定义分享
- 支付宝支付系统繁忙,请稍后再试(ALI64)错误解决
- BZOJ3884 上帝与集合的正确用法 【欧拉定理】
- 9月20日云栖精选夜读 | 如何轻松搞定数据科学面试:Python&R语言篇
- linux嵌入式入门到精通视频教程 Linux开发工程师培训教程
- rapidminer decision tree(决策树)手册
- oop思想php,避免OOP的形式,POP的思想
- 5个步骤实现流程管理
- Confusing conditions about MySQL script
- 触动精灵 - 获取颜色相似度
- 程序员之间的幽默段子,句句都是经典
- Lora1278驱动V4.4.2讲解二:驱动多个SX1278芯片
- 基于上下文感知计算的APT攻击组织追踪方法
- vb ADO控件连接ACCESS数据库做登录密码的例子
- Android系统学习(一)------编译系统Android7.0
- JavaWeb 购物车项目
- Pandas简明教程(一):Series数据类型、DataFrame数据类型