MATLAB中isoutlier函数用法

目录

语法

说明

示例

检测向量中的离群值

使用均值检测方法

使用移窗检测法

检测矩阵中的离群值

可视化离群值阈值


        isoutlier函数的功能是查找数据中的离群值

语法

TF = isoutlier(A)
TF = isoutlier(A,method)
TF = isoutlier(A,"percentiles",threshold)
TF = isoutlier(A,movmethod,window)
TF = isoutlier(___,dim)
TF = isoutlier(___,Name,Value)
[TF,L,U,C] = isoutlier(___)

说明

        ​TF = isoutlier(A) 返回一个逻辑数组,当在 A 的元素中检测到离群值时,该数组中与之对应的元素为 true。​

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

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

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

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

        ​TF = isoutlier(A,method) 指定检测离群值的方法。例如,isoutlier(A,"mean") 对偏离均值超过三倍标准差的所有元素返回 true。

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

        ​TF = isoutlier(A,movmethod,window) 使用窗长度为 window 的移动窗方法检测局部离群值。例如,isoutlier(A,"movmedian",5) 对一个包含五个元素的窗口内偏离局部中位数超过三倍局部换算 MAD 的所有元素返回 true。

        ​TF = isoutlier(___,dim) 为上述任一语法指定 A 的运算维度。例如,isoutlier(A,2) 沿矩阵 A 的每一行运算。​

        ​TF = isoutlier(___,Name,Value) 使用一个或多个名称-值参数指定用于检测离群值的其他参数。例如,isoutlier(A,"SamplePoints",t) 相对于时间向量 t 中的对应元素检测数组 A 中的离群值。

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

示例

检测向量中的离群值

        查找数据向量中的离群值。输出中的逻辑值 1 表示离群值的位置。

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

使用均值检测方法

        将离群值定义为偏离均值三倍标准差以上的点,并查找离群值在向量中的位置。

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

使用移窗检测法

        使用移动检测方法来检测对应于时间向量的正弦波中的局部离群值。创建包含一个局部离群值的数据向量。

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 个小时。绘制数据和检测到的离群值的图。

TF = isoutlier(A,"movmedian",hours(5),"SamplePoints",t);
plot(t,A)
hold on
plot(t(TF),A(TF),"x")
legend("Original Data","Outlier Data")

如图所示:

检测矩阵中的离群值

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

A = magic(5) + diag(200*ones(1,5))A = 5×5217    24     1     8    1523   205     7    14    164     6   213    20    2210    12    19   221     311    18    25     2   209

基于每行中的数据查找离群值的位置。

TF = isoutlier(A,2)TF = 5x5 logical array1   0   0   0   00   1   0   0   00   0   1   0   00   0   0   1   00   0   0   0   1

可视化离群值阈值

        定位数据向量中的离群值,并可视化该离群值。创建包含一个局部离群值的数据向量。

x = 1:10;
A = [60 59 49 49 58 100 61 57 48 58];

使用默认检测方法 "median" 定位离群值。

[TF,L,U,C] = isoutlier(A);

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

plot(x,A)
hold on
plot(x(TF),A(TF),"x")
yline([L U C],":",["Lower Threshold","Upper Threshold","Center Value"])
legend("Original Data","Outlier Data")

如图所示:

参数说明

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

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

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

method — 检测离群值的方法

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

方法描述
"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 个百分位数的点。

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

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

相关文章

controller接口上带@PreAuthorize的注解如何访问 (postman请求示例)

1. 访问接口 /*** 查询时段列表*/RateLimiter(time 10,count 10)ApiOperation("查询时段列表")PreAuthorize("ss.hasPermi(ls/sy:time:list)")GetMapping("/list")public TableDataInfo list(LsTime lsTime){startPage();List<LsTime> l…

01 PHP基础知识讲解

一 php基础知识 PHP文件的默认拓展名是“php”。 PHP文件中包含HTML标记、PHP标记、PHP代码以及空格和注释。 PHP标记&#xff1a;开始标记<?php 结束标记 ?> 中间内容是PHP代码。 PHP代码&#xff1a;学习第一个指令 echo 功能是用于输出字符串 。 语句结束符&a…

Kotlin+MVVM 构建todo App 应用

作者&#xff1a;易科 项目介绍 使用KotlinMVVM实现的todo app&#xff0c;功能界面参考微软的Todo软件&#xff08;只实现了核心功能&#xff0c;部分功能未实现&#xff09;。 功能模块介绍 项目模块&#xff1a;添加/删除项目&#xff0c;项目负责管理todo任务任务模块&a…

时序分解 | MATLAB实现MVMD多元变分模态分解信号分量可视化

时序分解 | MATLAB实现MVMD多元变分模态分解信号分量可视化 目录 时序分解 | MATLAB实现MVMD多元变分模态分解信号分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MVMD多元变分模态分解 可直接替换Excel运行包含频谱相关系数图 Matlab语言 1.算法新颖小众&…

Matlab之数组字符串函数汇总

一、前言 在MATLAB中&#xff0c;数组字符串是指由字符组成的一维数组。字符串可以包含字母、数字、标点符号和空格等字符。MATLAB提供了一些函数和操作符来创建、访问和操作字符串数组。 二、字符串数组具体怎么使用&#xff1f; 1、使用单引号或双引号括起来的字符序列 例…

数据结构 - 双向链表

文章目录 目录 文章目录 前言 一、什么是双向链表? 双向链表有什么优势? 二、双向链表的设计和实现 1.设计思想 尾增 : 在链表的末尾添加新的元素 头插 : 在链表头部插入节点 删除 : 根据val的值删除节点 查找 : 根据索引的值查找并返回节点 总结 前言 大家好,今天给…

Linux TCP和UDP协议

目录 TCP协议TCP协议的面向连接1.三次握手2.四次挥手 TCP协议的可靠性1.TCP状态转移——TIME_WAIT 状态TIME_WAIT 状态存在的意义&#xff1a;&#xff08;1&#xff09;可靠的终止TCP连接。&#xff08;2&#xff09;让迟来的TCP报文有足够的时间被识别并被丢弃。 2.应答确认、…

Google Chrome 浏览器以全屏模式打开

目录 前言以全屏模式打开禁止弹出无法更新的提示窗禁止翻译网页Chrome设置禁止翻译网页可能1可能2可能3 网页添加指令禁止Chrome翻译网页 禁用脚本气泡浏览器解决办法html解决办法方法1&#xff1a;鼠标滑过超链接时&#xff0c;使状态栏不出现超链接方法2&#xff1a;方法3&am…

微服务06-Dockerfile自定义镜像+DockerCompose部署多个镜像

常见的镜像在DockerHub能找到&#xff0c;但是我们自己写项目得自己构造镜像 1 镜像结构 作用&#xff1a;提高复用性&#xff0c;当应用需要更新时&#xff0c;不再是整个系统重装进行更新 &#xff0c;而是对需要更新的部分进行更新&#xff0c;其他地方不动——>这就是分…

如何写出一篇爆款产品文案,从目标受众到市场分析!

一篇爆款产品文案意味着什么?意味着更强的种草能力&#xff0c;更高的销售转化和更强的品牌传播力。今天来分享下如何写出一篇爆款产品文案&#xff0c;从目标受众到市场分析&#xff01; 一、产品文案策略 一篇爆款产品文案&#xff0c;并不是一时兴起造就的。在撰写之前&…

解决报错之org.aspectj.lang不存在

一、IDEA在使用时&#xff0c;可能会遇到maven依赖包明明存在&#xff0c;但是build或者启动时&#xff0c;报找不存在。 解决办法&#xff1a;第一时间检查Setting->Maven-Runner红圈中的√有没有选上。 二、有时候&#xff0c;明明依赖包存在&#xff0c;但是Maven页签中…

录音新手必备,2款音频录制软件推荐!

“有好用的音频录制软件推荐吗&#xff1f;最近需要录制歌曲去参加一个线上的歌手大赛&#xff0c;只需要上传自己录制的音乐就可以了&#xff0c;但是录音软件的质量太差了&#xff0c;就想问问有没有好用的音频录制软件&#xff0c;谢谢。” 随着数字化时代的到来&#xff0…

MATLAB实现函数拟合

目录 一.理论知识 1.拟合与插值的区别 2.几何意义 3.误差分析 二.操作实现 1.数据准备 2.使用cftool——拟合工具箱 三.函数拟合典例 四.代码扩展 一.理论知识 1.拟合与插值的区别 通俗的说&#xff0c;插值的本质是根据现有离散点的信息创建出更多的离散点&#xf…

利用Scrum敏捷工具管理敏捷产品迭代Sprint Backlog

​什么是Sprint Backlog&#xff1f; Sprint Backlog是Scrum的主要工件之一。在Scrum中&#xff0c;团队按照迭代的方式工作&#xff0c;每个迭代称为一个Sprint。在Sprint开始之前&#xff0c;PO会准备好产品Backlog&#xff0c;准备好的产品Backlog应该是经过梳理、估算和优…

程序依赖相关知识点(PDG,SDG)

什么叫可达性 变量v的定义d&#xff1a;对变量v的赋值语句称为变量v的定义 变量v的使用&#xff1a;在某个表达式中引用变量v的值 当变量v被再次赋值时&#xff0c;上一次赋值对变量v的定义d就被kill掉了 如果定义d到点p之间存在一条路径&#xff0c;且在路径中定义d没有被…

RabbitMQ管控台使用

安装成功RabbitMQ后&#xff0c;进入到管理控制台界面 拷贝配置文件到指定目录当中然后重启RabbitMQ。

ES-OAS-ERP-电子政务-企业信息化

ES-OAS-ERP-电子政务-企业信息化 专家系统ES办公自动化系统OAS企业资源规划ERP典型的信息系统架构模型 专家系统ES 模拟人类专家&#xff0c;解决结构化&#xff0c;半结构化问题 数据级&#xff0c;知识库级&#xff0c;控制级 专家系统的特点就是和人的区别 启发性知识&#…

RHCSA-VM-Linux基础配置命令

1.代码命令 1.查看本机IP地址&#xff1a; ip addr 或者 ip a [foxbogon ~]$ ip addre [foxbogon ~]$ ip a 1&#xff1a;<Loopback,U,LOWER-UP> 为环回2网卡 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP>为虚拟机自身网卡 2.测试网络联通性&#xff1a; [f…

HTTPS加密协议详解:TLS/SSL握手过程

1、握手与密钥协商过程 基于RSA握手和密钥交换的客户端验证服务器为示例详解TLS/SSL握手过程。 (1).client_hello 客户端发起请求&#xff0c;以明文传输请求信息&#xff0c;包含版本信息&#xff0c;加密套件候选列表&#xff0c;压缩算法候选列表&#xff0c;随机数&#…

Kotlin 协程 - 生命周期 Job

一、概念 对于每一个由协程构建器开启的协程&#xff0c;都会返回一个 Job 实例用来管理协程的生命周期。launch()直接返回 Job实现&#xff0c;async() 返回的 Deferred 实现了 Job接口。 Job public fun start(): Boolean public fun cancel(cause: CancellationException? …