R z-score 方法检测异常值

news/2025/2/9 3:01:40/

z-score 反应数值相对均值偏离多少标准差,本文利用z-score检测异常值。

z-score

z-score 的计算公示为:

z = (X – μ) / σ

  • X 表示单个原始数据值
  • μ 表示总体均值
  • σ 表示总体标准差

我们可以定义异常检测标准:如果z-score 小于 -3或 z-score 大于 3

异常值 = 观测值的z-score >3 或者 观测值的z-score <-3

准备数据

library(tibble)
library(dplyr)#make this example reproducible 
set.seed(0)#create data frame with three columns A', 'B', 'C' 
df <- tibble(A=rnorm(1000, mean=10, sd=3),B=rnorm(1000, mean=20, sd=3),C=rnorm(1000, mean=30, sd=3))#view first six rows of data frame
head(df)# A tibble: 6 x 3
#       A     B     C
#   <dbl> <dbl> <dbl>
# 1  8.12  23.4  27.3
# 2 10.6   23.3  24.2
# 3  7.49  17.4  34.9
# 4 14.8   20.6  31.6
# 5 11.0   20.2  29.8
# 6  7.54  15.0  32.1

我们可以使用z-score或四分位距方法检测异常值。本文我们讲解z-score方法。

z-score方法


# 定义z-score计算函数
zs <-function(x){(abs(x-mean(x))/sd(x))
}# 按列计算每个元素的z-score
df %>% mutate(across(c(1:3), zs) ) -> z_scores
head(z_scores)
# A tibble: 6 x 3
#       A      B      C
#   <dbl>  <dbl>  <dbl>
# 1 1.28  0.254  0.394 
# 2 0.311 1.80   0.0589
# 3 1.35  0.128  0.0811
# 4 1.29  1.32   0.388 
# 5 0.431 1.40   0.445 
# 6 1.53  0.0433 0.703 # 选择z_scores数据中三个元素值中的任何一个都不大于3的记录
z_scores %>% filter(!(A >3 | B >3 | C>3)) -> no_outliers
dim(no_outliers)  
# 994行数据正常,其他6行有异常值
# [1] 994   3z_scores %>% filter((A >3 | B >3 | C>3)) -> outliers
# 查看异常值数据
outliers# # A tibble: 6 x 3
#       A     B      C
#   <dbl> <dbl>  <dbl>
# 1 0.634 0.352 3.10  
# 2 3.29  0.801 0.881 
# 3 1.96  1.07  3.25  
# 4 1.77  1.32  3.07  
# 5 3.07  0.705 1.30  
# 6 3.23  0.923 0.0999

何时删除异常值

当发现异常值时,首先要验证是否人为错误,毕竟人工操作错误在所难免。如果确定是人为错误,我们可以替换为均值或中位数。

当该值确实不是人为造成的异常值。如果它对整体分析有重大影响,我们可以选择删除它,但要确保在最终报告或分析中提及删除了异常值。当然也有可能有了重大发现😊。


http://www.ppmy.cn/news/560189.html

相关文章

z变换解差分方程例题_Z变换及差分方程的求解

Z变换及差分方程的求解 第二讲 离散时间动态经济系统运动分析及稳定性分析 2.1离散时间函数与Z变换 目的要求&#xff1a;通过本节的学习使学生掌握离散时间函数及Z变换的概念&#xff0c;会使用Z变换的性质解决问题&#xff0c;掌握差分方程及离散时间系统的运动分析方法。 教…

数学定义摘录

摘录自维基百科&#xff1a; 整数模n乘法群&#xff08;Multiplicative group of integers modulo n&#xff09;(Z/p^nZ)^表示环(Z/p^nZ)的单位&#xff08;乘法&#xff09;群。 整数模n环记作Z/nZ或Z/(n)&#xff08;即整数环模去理想nZ(n)&#xff0c;由n的倍数组成&#x…

linux.sh文件 -z,详解shell脚本[] [[]] -n -z 的含义解析

在写脚本的时候,总是搞不懂[] [[]]的区别,这次写一个总结,把它掌握牢固 []和test 两者是一样的,在命令行里test expr和[ expr ]的效果相同。 test的三个基本作用是判断文件、判断字符串、判断整数。支持使用 ”与或非“ 将表达式连接起来。 test中可用的比较运算符只有==和…

html z-index 设置无效,css z-index属性不起作用的原因及解决方法

在CSS中,只能通过代码改变层级,这个属性就是z-index,要让z-index起作用有个小小前提,就是元素的position属性要是relative,absolute或是fixed。 1.第一种情况(z-index无论设置多高都不起作用情况): 这种情况发生的条件有三个: 1、父标签 position属性为relative; 2、问…

Zint生成二维码及png操作

环境搭建点击查看编译demo ubuntu下使用编译 连接动态库编译 gcc -o demo demo.c zint_code.c -lzint 连接静态库编译 gcc -o demo demo.c zint_code.c -static -L. -lzint -lpng16 -lz -lm arm-linux下使用编译 a、把交叉编译链中的libz.a、libm.a拷贝到demo中 b、执行编译命…

z-index的理解

一、基本概念 z-index 属性是设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序 较低的元素的前面。 元素可拥有负的 z-index 属性值。 Z-index 仅能在定位元素上奏效&#xff08;例如 position:absolute;&#xff09;。 该属性设置一个定位元素沿 z 轴的位置&a…

GIS坐标中的Z值和M值

在ArcGIS中&#xff0c;我们常用的几何类型有点、线、面、体&#xff08;体&#xff0c;在涉及三维的情况下使用&#xff09;&#xff0c;但在这之外&#xff0c;可能会遇到带ZM的类型&#xff0c;如图所示&#xff0c;面ZM&#xff0c;它与面类似&#xff0c;但比面多两个字段…

STM32F407ZGT6最小系统原理图和PCB

目录 一、原理图 二、PCB 三、3D图 资料下载地址&#xff1a;STM32F407ZGT6最小系统原理图和PCB 一、原理图 二、PCB 三、3D图