MATLAB中filloutliers函数用法

目录

语法

说明

示例

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

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

使用移窗检测法

填充矩阵行中的离群值

指定离群值位置

返回离群值阈值


        filloutliers函数功能是检测并替换数据中的离群值。

语法

B = filloutliers(A,fillmethod)
B = filloutliers(A,fillmethod,findmethod)
B = filloutliers(A,fillmethod,"percentiles",threshold)
B = filloutliers(A,fillmethod,movmethod,window)
B = filloutliers(___,dim)
B = filloutliers(___,Name,Value)
[B,TF]= filloutliers(___)
[B,TF,L,U,C] = filloutliers(___)

说明

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

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

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

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

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

        ​B = filloutliers(A,fillmethod,findmethod) 指定检测离群值的方法。例如,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 中的离群值。

        [B,TF]= filloutliers(___) 还返回一个逻辑数组 TF,该数组指示 B 中先前为离群值的填充元素的位置。

        ​[B,TF,L,U,C] = filloutliers(___) 还返回离群值检测方法使用的下阈值 L、上阈值 U 和中心值 C。

示例

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

        使用 "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")

如图所示:

参数说明

A--输入数据,指定为向量、矩阵、多维数组、表或时间表。

  • 如果 A 是一个表,则其变量的类型必须为 double 或 single,也可以使用 DataVariables 参数显式列出 double 或 single 变量。当您使用的表中包含 double 和 single 数据类型之外的变量时,指定变量很有用。

  • 如果 A 是一个时间表,则 filloutliers 仅对表元素进行运算。如果行时间用作采样点,则它们必须唯一,并按升序排列。

fillmethod — 填充方法

替换离群值的填充方法,指定为以下值之一。

填充方法描述
数值标量指定的标量值
"center"由 findmethod 确定的中心值
"clip"对于比 findmethod 确定的下阈值还小的元素,指定为下阈值;对于比 findmethod 确定的上阈值还大的元素,指定为上阈值
"previous"上一个非离群值
"next"下一个非离群值
"nearest"最邻近的非离群值
"linear"基于相邻的非离群值进行线性插值
"spline"分段三次样条插值
"pchip"保形分段三次样条插值
"makima"修正 Akima 三次 Hermite 插值(仅限数值、duration 和 datetime 数据类型)

findmethod — 检测离群值的方法

        检测离群值的方法,指定为以下值之一。

方法描述
"median"离群值定义为与中位数相差超过三倍换算 MAD 的元素。换算 MAD 定义为 c*median(abs(A-median(A))),其中 c=-1/(sqrt(2)*erfcinv(3/2))。
"mean"离群值定义为与均值相差超过三倍标准差的元素。此方法比 "median" 快,但没有它可靠。
"quartiles"离群值定义为比上四分位数 (75%) 大 1.5 个四分位差以上或比下四分位数 (25%) 小 1.5 个四分位差以上的元素。当 A 中的数据不是正态分布时,此方法很有用。
"grubbs"使用 Grubbs 检验检测离群值,并基于假设检验每次迭代删除一个离群值。此方法假设 A 中的数据呈正态分布。
"gesd"使用广义极端 Student 化偏差检验检测离群值。此迭代方法与 "grubbs" 类似,但当多个离群值互相遮盖时,此方法的执行效果更好。

threshold — 百分位数阈值

        百分位数阈值,指定为元素在区间 [0,100] 内的二元素行向量。第一个元素表示下百分位数阈值,第二个元素表示上百分位数阈值。threshold 的第一个元素必须小于第二个元素。

        例如,[10 90] 阈值将离群值定义为低于第 10 个百分位数或高于第 90 个百分位数的点。

movmethod — 移窗法

        用来检测离群值的移窗法,指定为下列方法之一。

方法描述
"movmedian"离群值定义为在 window 指定的窗口长度内,与局部中位数相差超过三倍局部换算 MAD 的元素。此方法也称为 Hampel 滤波器。
"movmean"离群值定义为在 window 指定的窗口长度内,与局部均值相差超过三倍局部标准差的元素。

window — 窗长度

        窗长度,指定为正整数标量、由正整数组成的二元素向量、正持续时间标量或由正持续时间组成的二元素向量。

        如果 window 是正整数标量,则窗口以当前元素为中心并且包含 window-1 个相邻元素。如果 window 是偶数,则窗口以当前元素和上一个元素为中心。

        如果 window 是由正整数组成的二元素向量 [b f],则窗口包含当前元素、其之前的 b 个元素和之后的 f 个元素。

        当 A 是时间表或者 SamplePoints 被指定为 datetime 或 duration 向量时,window 的类型必须是 duration,而且将会基于样本点来计算窗口。

dim--运算维度

运算维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。

以一个 m×n 输入矩阵 A 为例:

  • filloutliers(A,fillmethod,1) 根据 A 的每列中的数据填充离群值,并返回一个 m×n 矩阵。

    filloutliers(A,fillmethod,1) column-wise operation

  • filloutliers(A,fillmethod,2) 根据 A 的每行中的数据填充离群值,并返回一个 m×n 矩阵。

    filloutliers(A,fillmethod,2) row-wise operation

        对于表或时间表输入数据,不支持 dim,并且分别对每个表或时间表变量进行运算。

中位数绝对偏差

对于由 N 个标量观测值组成的有限长度向量 A,中位数绝对偏差 (MAD) 定义为

其中 i = 1,2,...,N。

换算 MAD 定义为 c*median(abs(A-median(A))),其中 c=-1/(sqrt(2)*erfcinv(3/2))。

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

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

相关文章

聚观早报 | iPhone 15系列正式发布;月饼专利申请超10000项

【聚观365】9月14日消息 iPhone 15系列正式发布 月饼专利申请超10000项 “五个女博士”自建研究院 2023中国民营企业研发十强公布 华为和小米达成全球专利交叉许可协议 iPhone 15系列正式发布 2023年苹果秋季新品发布会如期而至。发布会上,苹果发布了iPhone 1…

STM32 CAN使用记录:FDCAN基础通讯

文章目录 目的基础说明关键配置与代码轮询方式中断方式收发测试 示例链接总结 目的 CAN是非常常用的一种数据总线,被广泛用在各种车辆系统中。这篇文章将对STM32中FDCAN的使用做个示例。 CAN的一些基础介绍与使用可以参考下面文章: 《CAN基础概念》htt…

基于Xml方式Bean的配置-Bean的延时加载

SpringBean的配置详解 Bean的延时加载 当lazy-init设置为true时为延时加载,也就是当Spring容器创建的时候,不会立即创建Bean实例,等待用到时再创建Bean实例并储存到单例池中,后续使用该Bean时直接从单例池中获取即可,…

手把手教你搭建农产品商城小程序:详细步骤解析

随着移动互联网的普及,越来越多的人开始关注如何在手机上进行购物,尤其是对于农产品这类日常生活所需品。本文将手把手教你搭建一个农产品商城小程序,让你轻松实现在手机上购买农产品的愿望。 一、登录乔拓云网后台 首先,我们需要…

83 # 静态服务中间件 koa-static 的使用以及实现

静态服务中间件:koa-static 中间件可以决定是否向下执行,如果自己可以处理,那么直接处理完毕结束,如果自己处理不了,next 方法会继续向下执行 新建 public 文件夹,里面添加 index.html、style.css 文件 …

使用IDEA开发Servlet

一、新建工程 二、填写新工程的基本信息 javaee8的项目可以运行在tomcat9 三、配置tomcat 1、编辑server信息 “On frame deactivation”的意思是idea窗口发生切换时。 2、编辑部署信息 war exploded方式,这种方式是以文件夹方式部署的,支持热加载。 …

400电话客服中心电话:为您提供全方位的客户服务

在现代商业环境中,提供优质的客户服务是企业成功的关键之一。为了满足客户的需求和解决问题,许多企业选择设立400电话客服中心。400电话是一种特殊的电话号码,可以通过固定电话和移动电话拨打,客户可以通过这个号码与企业进行沟通…

2023年最热门的编程语言:前进的趋势和机会

2023年最热门的编程语言:前进的趋势和机会 2023年最热门的编程语言:前进的趋势和机会摘要引言1. 编程语言的热门趋势1.1 新兴编程语言的崛起1.2 编程语言的可持续性发展1.3 跨平台编程语言的兴起1.4 人工智能和机器学习编程语言的需求 2. 编程语言职业机…

HDMI协议Ver2.0a(学习笔记)

1 简介 本规范由HDMI论坛制定 2.目的和范围 本文件构成了高清多媒体接口2.0版规范(HDMI规范2.0版)。本规范通过引用纳入了HDMI规范1.4b版,并定义了附加和改进的功能。对Source、Sink、中继器和电缆的合规性所需的机械、电气、行为和协议要…

QT:使用普通按钮、网格布局管理器、标签、行编辑器、水平布局管理器、垂直布局管理器做一个小项目

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> //普通按钮 #include <QGridLayout> //网格布局管理器 #include <QLabel> //标签 #include <QLineEdit> //行编辑器 #include <QHBoxLayo…

Android 系统中适配OAID获取

一、OAID概念 OAID&#xff08;Open Anonymous Identification&#xff09;是一种匿名身份识别标识符&#xff0c; 用于在移动设备上进行广告追踪和个性化广告投放。它是由中国移动通信集 团、中国电信集团和中国联通集团共同推出的一项行业标准 OAID值为一个64位的数字 二、…

Linux中安装MySQL_图解_2023新

1.卸载 为了避免不必要的错误发生,先将原有的文件包进行查询并卸载 // 查询 rpm -qa | grep mysql rpm -qa | grep mari// 卸载 rpm -e 文件名 --nodeps2.将安装包上传到指定文件夹中 这里采用的是Xftp 3.将安装包进行解压 tar -zxvf 文件名 -C 解压路径4.获取解压的全路…

生成代理:人类行为的交互模拟(Generative Agents: Interactive Simulacra of Human Behavior)

Generative Agents: Interactive Simulacra of Human Behavior 简介 论文是斯坦福大学和deepmind团队联合发表&#xff0c;主要介绍了一种利用LLM模型指导生成Agents代理的方法&#xff0c;让代理具有记忆、反思和规划的能力。 结合LLM模型创造了一个系统架构&#xff0c;架构…

Qt扩展-KDDockWidgets 简介及配置

Qt扩展-KDDockWidgets 简介及配置] 一、概述二、编译 KDDockWidgets 库1. Cmake Gui 中选择源文件和编译后的路径2. 点击Config&#xff0c;配置好编译器3. 点击Generate4. 在存放编译的文件夹输入如下命令开始编译 三、qmake 配置 一、概述 kdockwidgets是一个由KDAB组织编写…

GPIO子系统编写LED灯的驱动、linux内核定时器

一、GPIO子系统 1.概念&#xff1a; 一个芯片厂商生产出芯片后会给linux提供一个当前芯片中gpio外设的驱动&#xff0c;我们当前只需要调用对应的厂商驱动即可完成硬件的控制。而linux内核源码中的gpio厂商驱动有很多&#xff0c;这里linux内核对厂商驱动做了一些封装&#x…

无涯教程-JavaScript - MUNIT函数

描述 MUNIT函数返回指定尺寸的单位矩阵。 语法 MUNIT (dimension)争论 Argument描述Required/OptionalDimension Dimension是一个整数,指定要返回的单位矩阵的尺寸。 尺寸必须大于零。 Required Notes MUNIT返回一个数组。因此,应将其作为数组公式输入 MUNIT (N)$\begin{m…

在docker中安装MQTT教程

网上的好多关于在docker中安装MQTT教程都是错误的不完整的。这篇博客是完整的&#xff0c;实践过的&#xff0c;踩过了很多的坑得来的&#xff0c;欢迎大家享用&#xff01; 1、首先在docker中拉取镜像 docker pull eclipse-mosquitto2、创建配置文件目录 mkdir -p /docker/…

Typora远程代码执行漏洞CVE-2023-2317

0x00 前言 漏洞详情 版本16.7以前的Typora中的updater/update.html存在基于DOM的XSS&#xff0c;可以通过加载定制的markdown文件实现任意javascript代码执行。 原理分析 漏洞触发点位于Typora的updater.html文件&#xff0c;通过特定协议typora://即可访问&#xff0c;同时…

公司固定资产管理定制方案怎么写

有效的固定资产管理对企业的成功至关重要。然而&#xff0c;如何制定一套既符合公司需求又具有前瞻性的固定资产管理定制方案&#xff0c;是每个企业都需要面对的挑战。本文将从创新、流畅和清晰的角度出发&#xff0c;探讨如何撰写一份成功的固定资产管理定制方案。 创新  …

Spring实例化源码解析(一)

invokeBeanFactoryPostProcessors 前言 AbstractApplicationContext类的refresh方法是spring实例化流程的开始。本章主要是介绍invokeBeanFactoryPostProcessors(beanFactory)方法&#xff0c;对其内部源码进行详细分析。接下来就来看看这句简单的代码后面具体做了什么。Spri…