isoutlier
发现数据中的异常值
语法
描述
例子
检测向量中的异常值
找出数据向量中的异常值。输出中的逻辑1表示异常值的位置。
A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];TF = isoutlier(A)
TF =1x15逻辑阵列0 0 0 1 0 0 0 1 0 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,“的意思是”)
TF =1x15逻辑阵列0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
使用移动检测方法
使用移动检测方法来检测与时间矢量对应的正弦波中的局部异常值。
创建一个包含本地离群值的数据向量。
X = -2*pi:0.1:2*pi;A = sin(x);A(47) = 0;
中数据对应的时间向量一个
.
t = datetime(2017 1 1 0, 0, 0) +小时(0:长度(x) 1);
将异常值定义为滑动窗口内局部中值到局部缩放MAD超过三个的点。找到异常值的位置一个
相对于里面的点t
窗口大小为5小时。绘制数据和检测到的异常值。
TF = isoutlier(A,“movmedian”小时(5),“SamplePoints”t);情节(t)在情节(t (TF) (TF),“x”)传说(“原始数据”,“离群数据”)
检测矩阵中的异常值
为矩阵的每一行找到异常值。
在对角线上创建一个包含异常值的数据矩阵。
A = magic(5) + diag(200*ones(1,5))
一个=5×5217 24 18 15 23 205 7 14 16 4 6 213 20 22 10 12 19 221 3 11 18 25 2 209
根据每一行中的数据找到异常值的位置。
TF = isoutlier(A,2)
TF =5x5逻辑阵列1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1
可视化离群阈值
在数据向量中找到一个异常值,并可视化该异常值。
创建一个包含本地离群值的数据向量。
X = 1:10;A = [60 59 49 49 58 100 61 57 48 58];
使用默认检测方法定位异常值“中值”
.
[TF,L,U,C] = isoutlier(A);
绘制原始数据、异常值、检测方法确定的阈值和中心值。中心值为数据的中位数,上下限阈值为中位数上下三个比例MAD。
情节(x)在情节(x (TF) (TF),“x”) yline([L U C],”:“, (“低门槛”,“上阈值”,“中心价值”])传说(“原始数据”,“离群数据”)
输入参数
一个
- - - - - -输入数据
向量|矩阵|多维数组|表格|时间表
输入数据,指定为矢量、矩阵、多维数组、表格或时间表。
如果
一个
是一个表,那么它的变量必须是类型双
或单
,或者使用DataVariables
参数的列表双
或单
显式变量。当您使用包含非数据类型变量的表时,指定变量非常有用双
或单
.如果
一个
那么,有时间表吗isoutlier
仅对表元素进行操作。如果使用行时间作为样本点,那么它们必须是唯一的,并按升序列出。
数据类型:双
|单
|表格
|时间表
方法
- - - - - -检测异常值的方法
“中值”
(默认)|“的意思是”
|“四分位数”
|“拉布”
|“gesd”
检测异常值的方法,指定为这些值之一。
方法 | 描述 |
---|---|
“中值” |
离群值定义为距离中值超过三个比例MAD的元素。缩放后的MAD定义为c *值(abs(中位数(A))) ,在那里c = 1 /(√(2)* erfcinv (3/2)) . |
“的意思是” |
离群值被定义为超出平均值三个标准偏差的元素。这种方法更快,但健壮性较差“中值” . |
“四分位数” |
异常值被定义为高于上四分位数(75%)或低于下四分位数(25%)的1.5个四分位数区间的元素。此方法在数据丢失时非常有用一个 不是正态分布的。 |
“拉布” |
使用Grubbs离群值检验检测离群值,基于假设检验每次迭代删除一个离群值。该方法假定数据在一个 正态分布。 |
“gesd” |
异常值检测使用广义极端学生化偏差检验异常值。这种迭代方法类似于“拉布” ,但当有多个异常值相互掩盖时,性能会更好。 |
阈值
- - - - - -百分位阈值
二元行向量
百分比阈值,指定为两个元素的行向量,其元素位于区间[0,100]中。第一个元素表示较低的百分比阈值,第二个元素表示较高的百分比阈值。的第一个元素阈值
必须小于第二个元素。
例如,阈值为[90]
将异常值定义为低于第10百分位和高于第90百分位的点。
movmethod
- - - - - -移动的方法
“movmedian”
|“movmean”
检测异常值的移动方法,指定为这些值之一。
方法 | 描述 |
---|---|
“movmedian” |
离群值定义为在指定的窗口长度上,从局部中值开始超过三个局部缩放MAD的元素窗口 .这种方法也被称为aHampel过滤器. |
“movmean” |
异常值定义为在指定的窗口长度内,与局部平均值相比超过三个局部标准偏差的元素窗口 . |
窗口
- - - - - -窗口长度
正整数标量|正整数的两元向量|正持续时间标量|正持续时间的两元向量
窗口长度,指定为正整数标量、正整数的两个元素向量、正持续时间标量或正持续时间的两个元素向量。
当窗口
是正整数标量,窗口围绕当前元素居中并包含窗口1
相邻的元素。如果窗口
为偶数时,则窗口以当前元素和以前的元素为中心。
当窗口
两元向量是正整数吗f [b]
,该窗口包含当前元素,b
元素向后,和f
元素。
当一个
是时间表还是SamplePoints
指定为datetime
或持续时间
向量,窗口
必须有类型持续时间
,窗口是相对于样本点计算的。
昏暗的
- - - - - -操作维度
正整数标量
操作维度,指定为正整数标量。如果未指定值,则默认为第一个大小不等于1的数组维数。
考虑一个米
——- - - - - -n
输入矩阵,一个
:
isoutlier (1)
的每一列数据检测异常值一个
并返回米
——- - - - - -n
矩阵。isoutlier (2)
的每一行数据检测异常值一个
并返回米
——- - - - - -n
矩阵。
对于表格或时间表输入数据,昏暗的
不支持,操作将万博1manbetx分别沿着每个表或时间表变量进行。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
例子:isoutlier(”,意味着“ThresholdFactor = 4)
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:isoutlier(“的意思是”,“ThresholdFactor”,4)
SamplePoints
- - - - - -采样点
向量|表变量名|标量|函数处理|表格vartype
下标
样本点,指定为样本点值的向量,如果输入数据是表格,则指定为下表中的选项之一。样本点代表x数据的-轴位置,并且必须排序并包含唯一的元素。采样点不需要均匀采样。向量[1 2 3…]
是默认值。
当输入数据是一个表时,您可以使用这些选项之一将样本点指定为表变量。
表格输入选项 | 描述 | 例子 |
---|---|---|
变量名 | 指定单个表变量名的字符向量或标量字符串 |
|
标量变量索引 | 标量表变量索引 |
|
逻辑向量 | 一种逻辑向量,其每个元素对应于一个表变量,其中 |
|
函数处理 | 接受表变量作为输入并返回逻辑标量(必须为)的函数句柄 |
|
vartype 下标 |
类生成的表下标 |
|
请注意
输入数据为时,不支持此名称-值参数万博1manbetx时间表
.时间表使用行时间向量作为样本点。若要使用不同的抽样点,必须编辑时间表,使行时间包含所需的抽样点。
移动窗口是相对于样本点定义的。例如,如果t
那么,乘以向量是否对应于输入数据isoutlier(兰德(1 10)“movmean”、3、“SamplePoints”,t)
是否有一个表示时间间隔的窗口-1.5 t(我)
而且t(我)+ 1.5
.
当样本点向量有数据类型时datetime
或持续时间
时,移动窗口长度必须有类型持续时间
.
例子:isoutlier(“SamplePoints”,0:0.1:10)
例子:isoutlier (T,“SamplePoints”,“Var1”)
数据类型:单
|双
|datetime
|持续时间
DataVariables
- - - - - -要操作的表变量
表变量名|标量|向量|单元阵列|函数处理|表格vartype
下标
要操作的表变量,指定为此表中的选项之一。的DataVariables
Value指示要检查输入表的哪些变量以寻找异常值。与指定变量关联的数据类型必须为双
或单
.
第一个输出特遣部队
包含假
对于未指定的变量DataVariables
除非OutputFormat
是“表格”
.
选项 | 描述 | 例子 |
---|---|---|
变量名 | 指定单个表变量名的字符向量或字符串标量 |
|
变量名向量 | 字符向量或字符串数组的单元格数组,其中每个元素都是一个表变量名 |
|
变量指标的标量或向量 | 表变量索引的标量或向量 |
|
逻辑向量 | 一种逻辑向量,其每个元素对应于一个表变量,其中 |
|
函数处理 | 接受表变量作为输入并返回逻辑标量的函数句柄 |
|
vartype 下标 |
类生成的表下标 |
|
例子:isoutlier(T,"DataVariables",["Var1" "Var2" "Var4"])
OutputFormat
- - - - - -输出数据类型
“逻辑”
(默认)|“表格”
输出数据类型,指定为以下值之一:
“逻辑”
—对于表格或时间表输入数据,返回输出特遣部队
作为一个逻辑数组。“表格”
—对于表输入数据,返回输出特遣部队
作为一张桌子。对于时间表输入数据,返回输出特遣部队
作为一个时间表。
对于向量、矩阵或多维数组输入数据,OutputFormat
不支持。万博1manbetx
例子:isoutlier (T,“OutputFormat”、“表格”)
ThresholdFactor
- - - - - -检测阈值因子
负的标量
检测阈值因子,指定为非负标量。
为方法“中值”
而且“movmedian”
,检测阈值因子替换缩放后的MAD个数,默认为3。
为方法“的意思是”
而且“movmean”
,检测阈值因子替换均值的标准差数,默认为3。
为方法“拉布”
而且“gesd”
,检测阈值因子为0 ~ 1之间的标量。接近0的值会导致离群值的数量减少,接近1的值会导致离群值的数量增加。默认检测阈值因子为0.05。
为“四分位数”
方法,检测阈值因子替换四分位范围的数量,默认为1.5。
当指定方法为时,不支持此名称-值参数万博1manbetx“百分位数”
.
MaxNumOutliers
- - - - - -最大离群值计数
正整数标量
的最大离群值计数“gesd”
方法,指定为正整数标量。的MaxNumOutliers
属性返回的离群值的最大数目“gesd”
方法。例如,isoutlier (A,“gesd”、“MaxNumOutliers”,5)
返回不超过5个异常值。
的默认值MaxNumOutliers
这个整数是否最接近其中元素数量的10%一个
.为最大离群值设置较大的值会使检测到所有离群值的可能性更大,但代价是降低计算效率。
的“gesd”
方法假定非离群值输入数据是从近似正态分布采样的。当数据没有以这种方式采样时,返回的离群值的数量可能超过MaxNumOutliers
价值。
输出参数
特遣部队
-异常值指标
向量|矩阵|多维数组|表|时间表
异常值指示器,以矢量、矩阵、多维数组、表或时间表的形式返回。
特遣部队
尺寸和一个
除非OutputFormat
是“表格”
.如果的值OutputFormat
是“表格”
,然后特遣部队
只有变量对应于DataVariables
指定。
数据类型:逻辑
l
-低阈值
标量|向量|矩阵|多维数组|表|时间表
离群值检测方法使用的较低阈值,以标量、向量、矩阵、多维数组、表或时间表的形式返回。例如,默认异常值检测方法的下限阈值为输入数据中位数以下3个MAD。l
尺寸和一个
在所有维度中,除了长度为1的操作维度。
数据类型:双
|单
|表格
|时间表
U
—上限阈值
标量|向量|矩阵|多维数组|表|时间表
异常值检测方法使用的上限阈值,以标量、向量、矩阵、多维数组、表或时间表的形式返回。例如,默认的异常值检测方法的上限阈值是输入数据的中位数上三个MAD。U
尺寸和一个
在所有维度中,除了长度为1的操作维度。
数据类型:双
|单
|表格
|时间表
C
-中心值
标量|向量|矩阵|多维数组|表|时间表
离群值检测方法使用的中心值,以标量、向量、矩阵、多维数组、表或时间表的形式返回。例如,默认异常值检测方法的中心值为输入数据的中位数。C
尺寸和一个
在所有维度中,除了长度为1的操作维度。
数据类型:双
|单
|表格
|时间表
更多关于
绝对偏差中位数
对于一个有限长度的向量一个由N标量观测时,中位数绝对偏差(MAD)定义为
为i = 1,2,…,N.
缩放后的MAD定义为c *值(abs(中位数(A)))
,在那里c = 1 /(√(2)* erfcinv (3/2))
.
参考文献
[1]NIST/SEMATECH统计方法电子手册, https://www.itl.nist.gov/div898/handbook/, 2013。
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
使用注意事项和限制:
的
“百分位数”
,“拉布”
,“gesd”
方法不受支持。万博1manbetx的
“movmedian”
而且“movmean”
方法不支持高时间表。万博1manbetx的
SamplePoints
而且MaxNumOutliers
不支持名称-值参数。万博1manbetx的价值
DataVariables
不能是函数句柄。计算
isoutlier (A)
,isoutlier(“中位数”,…)
,或isoutlier(“四分位数”,…)
在第一维上,只支持高列向量万博1manbetx一个
.
有关更多信息,请参见高大的数组.
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
的
OutputFormat
不支持名称-值参数。万博1manbetx的
“movmean”
而且“movmedian”
检测异常值的方法不支持时间表输入数据datetime万博1manbetxSamplePoints
值,或持续时间SamplePoints
值。字符串和字符数组输入必须是常量。
线程环境
使用MATLAB®在后台运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。万博1manbetx有关更多信息,请参见在线程环境中运行MATLAB函数.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
的
“movmedian”
不支持移动方法。万博1manbetx的
SamplePoints
而且DataVariables
不支持名称-值参数。万博1manbetx
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
在R2017a中引入R2022a:返回包含逻辑输出的表或时间表
对于表格或时间表输入数据,返回表格输出特遣部队
属性来代替逻辑数组OutputFormat
参数的名称-值“表格”
.
R2021b:指定样本点作为表变量
属性将样本点指定为表变量SamplePoints
名称-值参数。
另请参阅
功能
实时编辑任务
应用程序
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。