【重新定义matlab强大系列五】函数filloutliers检测并替换数据中的离群值

news/2025/3/31 8:55:08/

🔗 运行环境:matlab

🚩 撰写作者:左手の明天

🥇 精选专栏:《python》

🔥  推荐专栏:《算法研究》

#### 防伪水印——左手の明天 ####

💗 大家好🤗🤗🤗,我是左手の明天!好久不见💗

💗今天开启新的系列——重新定义matlab强大系列💗

📆  最近更新:2023 年 05 月 03 日,左手の明天的第 281 篇原创博客

📚 更新于专栏:matlab

#### 防伪水印——左手の明天 ####


目录

函数语法

B = filloutliers(A,fillmethod ) 

B = filloutliers(A,fillmethod ,fillmethod ) 

B = filloutliers(A,fillmethod ,"percentiles",threshold ) 

B = filloutliers(A,fillmethod ,movmethod,window) 

B = filloutliers(___,dim) 

B = filloutliers(___,Name,Value) 

示例

在向量中对离群值进行插值

使用均值检测和最邻近值填充方法

使用移窗检测法

填充矩阵行中的离群值

指定离群值位置

返回离群值阈值


函数语法

B = filloutliers(A,fillmethod ) 

查找 A 中的离群值并根据 fillmethod 替换它们。例如,filloutliers(A,"previous") 将离群值替换为上一个非离群值元素。

  • 如果 A 是矩阵,则 filloutliers 分别对 A 的每列进行运算。

  • 如果 A 是多维数组,则 filloutliers 沿 A 的大小不等于 1 的第一个维度进行运算。

  • 如果 A 是表或时间表,则 filloutliers 分别对 A 的每个变量进行运算。

默认情况下,离群值是指与中位数相差超过三倍经过换算的 中位数绝对偏差(MAD)的值。

B = filloutliers(A,fillmethod ,fillmethod ) 

指定检测离群值的方法。例如,filloutliers(A,"previous","mean") 将 A 中与均值相差超过三倍标准差的元素定义为离群值。

B = filloutliers(A,fillmethod ,"percentiles",threshold ) 

将离群值定义为 threshold 所指定的百分位数以外的点。threshold 参数是包含上下百分位数阈值的二元素行向量,例如 [10 90]

B = filloutliers(A,fillmethod ,movmethod,window) 

使用窗长度为 window 的移动窗均值或中位数来检测局部离群值。例如,filloutliers(A,"previous","movmean",5) 将包含五个元素的窗口中与局部均值相差超过三倍局部标准差的元素标识为离群值。

B = filloutliers(___,dim) 

指定 A 的运算维度。例如,filloutliers(A,"linear",2) 沿矩阵 A 的每一行运算。

B = filloutliers(___,Name,Value) 

使用一个或多个名称-值参数指定用来检测和替换离群值的其他参数。例如,filloutliers(A,"previous","SamplePoints",t) 相对于时间向量 t 中的对应元素检测 A 中的离群值。

示例

在向量中对离群值进行插值

使用 "linear" 方法填充数据向量中的离群值,并可视化填充的数据。

创建一个包含两个离群值的数据向量。

A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];

使用线性插值替换离群值。

B = filloutliers(A,"linear");

绘制原始数据和填充了离群值的数据。

plot(A)
hold on
plot(B,"o-")
legend("Original Data","Filled Data")

使用均值检测和最邻近值填充方法

识别数据表中的潜在离群值,使用 "nearest" 填充方法填充任何离群值,并可视化清洗后的数据。

创建一个数据时间表,并可视化数据以检测潜在的离群值。

T = hours(1:15);
V = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];
A = timetable(T',V');
plot(A.Time,A.Var1)

填充数据中的离群值,其中离群值定义为偏离均值超过三倍标准差的值。将离群值替换为最接近的非离群值元素。

B = filloutliers(A,"nearest","mean")
B=15×1 timetableTime     Var1_____    ____1 hr      57 2 hr      59 3 hr      60 4 hr     100 5 hr      59 6 hr      58 7 hr      57 8 hr      58 9 hr      61 10 hr     61 11 hr     62 12 hr     60 13 hr     62 14 hr     58 15 hr     57 

在同一个图中,绘制原始数据和填充了离群值的数据。

hold on
plot(B.Time,B.Var1,"o-")
legend("Original Data","Filled Data")

使用移窗检测法

使用移动中位数,检测并填充与时间向量对应的正弦波内的局部离群值。

创建包含一个局部离群值的数据向量。

x = -2*pi:0.1:2*pi;
A = sin(x);
A(47) = 0;

创建与 A 中的数据对应的时间向量。

t = datetime(2017,1,1,0,0,0) + hours(0:length(x)-1);

将离群值定义为滑动窗内与局部中位数相差超过三倍局部换算 MAD 的点。在 A 中查找与 t 中的点对应的离群值的位置,窗口大小为 5 小时。使用 "clip" 方法,用计算的阈值填充离群值。

[B,TF,L,U,C] = filloutliers(A,"clip","movmedian",hours(5),"SamplePoints",t);

绘制原始数据和填充了离群值的数据。

plot(t,A)
hold on
plot(t,B,"o-")
legend("Original Data","Filled Data")

填充矩阵行中的离群值

创建一个数据矩阵,其对角线上包含离群值。

A = randn(5,5) + diag(1000*ones(1,5))
A = 5×5
103 ×1.0005   -0.0013   -0.0013   -0.0002    0.00070.0018    0.9996    0.0030   -0.0001   -0.0012-0.0023    0.0003    1.0007    0.0015    0.00070.0009    0.0036   -0.0001    1.0014    0.00160.0003    0.0028    0.0007    0.0014    1.0005

基于每一行中的数据用零填充替换离群值,然后显示新值。

[B,TF] = filloutliers(A,0,2);
B
B = 5×50   -1.3077   -1.3499   -0.2050    0.67151.8339         0    3.0349   -0.1241   -1.2075-2.2588    0.3426         0    1.4897    0.71720.8622    3.5784   -0.0631         0    1.63020.3188    2.7694    0.7147    1.4172         0

可以使用 TF 作为索引向量,访问检测到的离群值及其填充的值。

[A(TF) B(TF)]
ans = 5×2
103 ×1.0005         00.9996         01.0007         01.0014         01.0005         0

指定离群值位置

创建一个包含两个离群值的向量,并检测这些离群值的位置。

A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];
detect = isoutlier(A)
detect = 1x15 logical array0   0   0   1   0   0   0   0   1   0   0   0   0   0   0

使用 "nearest" 方法填充离群值。不使用检测方法,而是提供由 isoutlier 检测到的离群值位置。

B = filloutliers(A,"nearest","OutlierLocations",detect)
B = 1×1557    59    60    59    59    58    57    58    61    61    62    60    62    58    57

返回离群值阈值

使用 "clip" 填充方法替换数据向量中的离群值。

创建一个包含一个离群值的数据向量。

A = [60 59 49 49 58 100 61 57 48 58];

使用默认方法 "median" 检测离群值,使用 "clip" 填充方法用上阈值替换该离群值。

[B,TF,L,U,C] = filloutliers(A,"clip");

绘制原始数据、填充了离群值的数据以及由离群值检测方法确定的阈值和中心值。中心值是数据的中位数,上阈值和下阈值分别高于和低于中位数三倍换算 MAD。

plot(A)
hold on
plot(B,"o-")
yline([L U C],":",["Lower Threshold","Upper Threshold","Center Value"])
legend("Original Data","Filled Data")

 


#### 防伪水印——左手の明天 ####

💗 大家好🤗🤗🤗,我是左手の明天!好久不见💗

💗今天开启新的系列——重新定义matlab强大系列💗

📆  最近更新:2023 年 05 月 03 日,左手の明天的第 281 篇原创博客

📚 更新于专栏:matlab

#### 防伪水印——左手の明天 ####


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

相关文章

详解Python web框架到底是怎么来的?

前言 咱都知道软件开发的架构有两种,分别是C/S架构与B/S架构,本质上都是借助socket实现网络通信,因此Django作为一个web框架本质上也是一个socket服务端,浏览器则是客户端,我们可以自己实现简易的web框架来更好的理解…

Nginx原理解析

master和worker 当linux启动的时候,会有两个和nginx相关的进程,一个是master,一个是worker。 master如何工作 当客户端发送请求到nginx之后,master会接收到这个请求,然后通知所有的worker进程,此时,work…

OpenCV实战(21)——基于随机样本一致匹配图像

OpenCV实战(21)——基于随机样本一致匹配图像 0. 前言1. 基于随机样本一致匹配图像1.1 计算基本矩阵与匹配集1.2 随机样本一致算法 2. 算法优化2.1 优化基本矩阵2.2 优化匹配集 3. 完整代码小结系列链接 0. 前言 当两台摄像机拍摄同一场景时&#xff0c…

jdbc和druid和mybatis之间的关系

第一种方式 jdbc整合了:加载数据库驱动,创建连接,写原生语句,执行,关闭这些东西. 第二种方式 mybatis对jdbc进行封装,他允许你通过配置的形式,配置数据库参数,并且允许你通过xml来写动态sql语句.if:test让你可以把sql变得灵活起来.并且还能将你的查询结果直接映射到你想要的…

位置式pid和增量式pid

位置式PID控制器和增量式PID控制器的数学模型如下所示: 位置式PID控制器的数学模型: u ( t ) K p e ( t ) K i ∫ 0 t e ( τ ) d τ K d d e ( t ) d t u(t) K_p e(t) K_i \int_{0}^{t} e(\tau) d\tau K_d \frac{de(t)}{dt} u(t)Kp​e(t)Ki​∫…

回首来路多感概,最是奋斗动人心。

我们必需要在不同的时代有不同的领悟,才能充满生机地去迎接生命中每个新的开始。 文章目录 前言 初心 成长 收获 憧憬 出发 前言 今天是我成为csdn创作者一周年纪念日,我非常开心能够和大家分享我的写作之旅。在这一年里,我经历了许多挑…

【Python】【进阶篇】19、Django项目创建第一个应用

目录 19、Django项目创建第一个应用1. 创建应用2. 应用的添加 19、Django项目创建第一个应用 Django 项目就是基于 Django 框架开发的 Web 应用,它包含了一组配置和多个应用,我们把应用称之为 App,在前文中对它也做了相应的介绍,…

交换机-Exchanges

交换机 Exchanges 概念 RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。相反,生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简…