主要内容

filloutliers

检测并替换数据中的异常值

描述

例子

B= filloutliers (一个fillmethod中发现异常值一个并替换它们fillmethod.例如,filloutliers (A,“之前”)用先前的非离群值元素替换离群值。默认情况下,离群值是一个超过三倍的值绝对偏差中位数远离中位数。如果一个那么是矩阵还是表格呢filloutliers分别对每一列进行操作。如果一个那么是多维数组吗filloutliers沿大小不等于1的第一个维度操作。

例子

B= filloutliers (一个fillmethodfindmethod指定用于检测异常值的方法。例如,filloutliers (A,“之前”,“的意思是”)的元素定义异常值一个超过3个标准差。

B= filloutliers (一个fillmethod,百分位数,阈值中将异常值定义为中指定的百分位数之外的点阈值.的阈值参数是包含较低和较高百分位阈值的两元素行向量,例如[90]

例子

B= filloutliers (一个fillmethodmovmethod窗口属性定义的窗口长度,指定用于检测局部异常值的移动方法窗口.例如,filloutliers (A,‘以前’,‘movmean’,5)将异常值标识为五个元素窗口内距离局部平均值超过三个局部标准偏差的元素。

例子

B= filloutliers (___昏暗的沿维度操作昏暗的一个对于前面的任何语法。例如,filloutliers(“线性”,2)对矩阵的每一行进行操作一个

例子

B= filloutliers (___名称,值指定用于使用一个或多个名-值对参数检测和替换异常值的其他参数。例如,filloutliers (A,‘以前’,‘SamplePoints’,t)检测异常值一个相对于时间向量的相应元素t

例子

B特遣部队lUC= filloutliers(___还返回由检测方法计算的异常值和阈值的位置信息。特遣部队逻辑数组是否指示异常值的位置一个.的lU,C参数表示异常值检测方法使用的下限和上限阈值以及中心值。

例子

全部折叠

创建一个包含异常值的数据向量,并使用线性插值替换异常值。绘制原始数据和填充数据。

A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];B = filloutliers(A,“线性”);情节(1:15,1:15,B,“o”)传说(“原始数据”“窜改数据”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象表示原始数据,插值数据。

创建一个包含异常值的向量,并将异常值定义为距离平均值三个标准偏差之外的点。将离群值替换为最近的非离群值元素,并绘制原始数据和插值数据。

A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];B = filloutliers(A,“最近的”“的意思是”);情节(1:15,1:15,B,“o”)传说(“原始数据”“窜改数据”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象表示原始数据,插值数据。

使用移动中值在与时间向量相对应的正弦波中找到局部异常值。

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

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

中数据对应的时间向量一个

t = datetime(2017 1 1 0, 0, 0) +小时(0:长度(x) 1);

将异常值定义为滑动窗口内距离局部中值超过3个局部缩放MAD的点。找到异常值的位置一个相对于里面的点t窗口大小为5小时。使用该方法将计算出的阈值填充为离群值“剪辑”,并绘制原始数据和填充数据。

[B,TF,U,L,C] = filloutliers(A,“剪辑”“movmedian”小时(5),“SamplePoints”t);情节(t, t, B,“o”)传说(“原始数据”填充数据的

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象表示原始数据、填充数据。

显示替换异常值的阈值。

L (TF)
Ans = -0.8779

为矩阵的每一行填充异常值。

在对角线上创建一个包含异常值的数据矩阵。

A = randn(1,5) + diag(1000*ones(1,5))
一个=5×5103.× 1.0005 -0.0013 -0.0013 -0.0002 0.0007 0.0018 0.9996 0.0030 -0.0001 -0.0012 -0.0023 0.0003 1.0007 0.0015 0.0007 0.0009 0.0036 -0.0001 1.0014 0.0016 0.0003 0.0028 0.0007 0.0014 1.0005

根据每行中的数据用零填充离群值,并显示新值。

[B,TF,lower,upper,center] = filloutliers(A,0,2);B
B =5×50 -1.3077 -1.3499 -0.2050 0.6715 1.8339 0 3.0349 -0.1241 -1.2075 -2.2588 0.3426 0 1.4897 0.7172 0.8622 3.5784 -0.0631 0 1.6302 0.3188 2.7694 0.7147 1.4172 0

可以直接访问检测到的异常值及其填充值特遣部队作为一个下标向量。

((TF) B (TF))
ans =5×2103.× 1.0005 0 0.9996 0 1.0007 0 1.0014 0 1.0005 0

在数据向量中找到离群值,并使用“剪辑”方法。绘制原始数据、填充数据、检测方法确定的阈值和中心值。“剪辑”用上阈值替换离群值。

X = 1:10;A = [60 59 49 49 58 100 61 57 48 58];[B,TF,lower,upper,center] = filloutliers(A,“剪辑”);情节(x, x、B“o”, x,低*的(10),x,上层* (10),x,中心*(10))的传说(“原始数据”填充数据的“低门槛”“上阈值”的中心值

图中包含一个轴对象。axis对象包含5个line类型的对象。这些对象表示原始数据、填充数据、下限阈值、上限阈值、中心值。

输入参数

全部折叠

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

如果一个是一个表,那么它的变量必须是类型,或者使用“DataVariables”要列出的名称-值对显式变量。当您使用包含非数据类型变量的表时,指定变量非常有用

如果一个那么,有时间表吗filloutliers仅对表元素进行操作。行时间必须唯一,并按升序列出。

数据类型:||表格|时间表

替换异常值的填充方法,指定为数值标量或以下之一:

填补方法 描述
数字标量 用指定的标量值填充
“中心” 填充由所确定的中心值findmethod
“剪辑” 填充小于由确定的较低阈值的元素的较低阈值findmethod.填充大于由确定的上限阈值的元素的上限阈值findmethod
“以前” 填充先前的非离群值
“下一个” 填充下一个非离群值
“最近的” 用最近的非离群值填充
“线性” 使用邻近的非离群值的线性插值填充
样条的 使用分段三次样条插值填充
“pchip” 使用形状保持分段三次样条插值填充
“makima” 修正Akima立方Hermite插值(数字,持续时间,datetime仅限数据类型)

数据类型:||字符

检测异常值的方法,指定为以下之一:

方法 描述
“中值” 离群值定义为距离中值超过三个比例MAD的元素。缩放后的MAD定义为c *值(abs(中位数(A))),在那里c = 1 /(√(2)* erfcinv (3/2))
“的意思是” 离群值被定义为超出平均值三个标准偏差的元素。这种方法更快,但健壮性较差“中值”
四分位数的 异常值被定义为高于上四分位数(75%)或低于下四分位数(25%)的1.5个四分位数区间的元素。此方法在数据丢失时非常有用一个不是正态分布的。
“拉布” 使用Grubbs的检验来检测异常值,该检验基于假设检验每次迭代删除一个异常值。该方法假定数据在一个正态分布。
“gesd” 异常值检测使用广义极端学生化偏差检验异常值。这种迭代方法类似于“拉布”,但当有多个异常值相互掩盖时,性能会更好。

百分比阈值,指定为两个元素的行向量,其元素位于区间[0,100]中。第一个元素表示较低的百分位数阈值,第二个元素表示较高的百分位数阈值。例如,阈值为[90]将异常值定义为低于第10百分位和高于第90百分位的点。的第一个元素阈值必须小于第二个元素。

用于检测异常值的移动方法,指定为以下之一:

方法 描述
“movmedian” 离群值定义为在指定的窗口长度上,从局部中值开始超过三个局部缩放MAD的元素窗口.这种方法也被称为aHampel过滤器
“movmean” 异常值定义为在指定的窗口长度内,与局部平均值相比超过三个局部标准偏差的元素窗口

窗口长度,指定为正整数标量、正整数的两个元素向量、正持续时间标量或正持续时间的两个元素向量。

窗口是正整数标量,窗口围绕当前元素居中并包含窗口1相邻的元素。如果窗口为偶数时,则窗口以当前元素和以前的元素为中心。

窗口两元向量是正整数吗f [b],该窗口包含当前元素,b元素向后,和f元素。

一个是时间表还是“SamplePoints”指定为datetime持续时间向量,窗口必须有类型持续时间,窗口是相对于样本点计算的。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|持续时间

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

考虑一个矩阵一个

filloutliers (fillmethod, 1)根据每一列的数据填充异常值。

filloutliers (fillmethod, 2)根据每行数据填充异常值。

一个是一张表格或时间表,昏暗的不支持。金宝appfilloutliers分别沿着每个表或时间表变量进行操作。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

名称-值参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:filloutliers (A,‘中心’,‘意思’,‘ThresholdFactor’,4)
数据选项

全部折叠

样本点,由逗号分隔的对组成“SamplePoints”当输入数据是表格时,可以是样本点值的向量,也可以是下表中的选项之一。样本点代表x数据的-轴位置,并且必须排序并包含唯一的元素。采样点不需要均匀采样。向量[1 2 3…]是默认值。

当输入数据是一个表时,可以使用以下选项之一将样本点指定为表变量。

表格输入选项 描述 例子
变量名

指定单个表变量名的字符向量或标量字符串

“Var1”

“Var1”

标量变量索引

标量表变量索引

3.

逻辑向量

一种逻辑向量,其每个元素对应于一个表变量,其中真正的指定相应的变量作为样本点,所有其他元素都是

[真假假]

函数处理

接受表变量作为输入并返回逻辑标量(必须为)的函数句柄真正的仅用于一个表变量

@isnumeric

vartype下标

类生成的表下标vartype仅为一个变量返回下标的函数

vartype(数字)

请注意

当输入数据为时,不支持此名值对金宝app时间表.时间表总是使用行时间的向量作为样本点。若要使用不同的抽样点,必须编辑时间表,使行时间包含所需的抽样点。

移动窗口是相对于样本点定义的。例如,如果t那么,乘以向量是否对应于输入数据filloutliers(兰德(10),‘以前’,‘movmean’,3,SamplePoints, t)是否有一个表示时间间隔的窗口-1.5 t(我)而且t(我)+ 1.5

当样本点向量有数据类型时datetime持续时间,则移动窗口长度必须有类型持续时间

例子:filloutliers([1 100 3 4],'最近','SamplePoints',[1 2.5 3 4])filloutliers (T,“最近”、“SamplePoints”,“Var1”)

数据类型:||datetime|持续时间

要操作的表变量,指定为逗号分隔的对,由“DataVariables”这张表中的一个选项。的“DataVariables”Value指示要填充输入表中的哪些变量。表中未指定的其他变量“DataVariables”在不被操作的情况下传递到输出。

选项 描述 例子
变量名

指定单个表变量名的字符向量或标量字符串

“Var1”

“Var1”

变量名向量

由字符向量或字符串数组组成的单元格数组,其中每个元素都是表变量名

{“Var1”“Var2”}

[" Var1”“Var2”)

变量指标的标量或向量

表变量索引的标量或向量

1

[1 3 5]

逻辑向量

一种逻辑向量,其每个元素对应于一个表变量,其中真正的包括相应的变量和不包括它

[真真假假]

函数处理

接受表变量作为输入并返回逻辑标量的函数句柄

@isnumeric

vartype下标

类生成的表下标vartype函数

vartype(数字)

例子:filloutliers(A,'previous','DataVariables',["Var1" "Var2" "Var4"])

异常值检测选项

全部折叠

检测阈值因子,指定为由逗号分隔的对组成“ThresholdFactor”一个非负标量。

为方法“中值”而且“movmedian”,检测阈值因子替换缩放后的MAD个数,默认为3。

为方法“的意思是”而且“movmean”,检测阈值因子替换均值的标准差数,默认为3。

为方法“拉布”而且“gesd”,检测阈值因子为0 ~ 1之间的标量。接近0的值会导致离群值的数量减少,接近1的值会导致离群值的数量增加。默认检测阈值因子为0.05。

四分位数的方法,检测阈值因子替换四分位范围的数量,默认为1.5。

当指定的方法为时,不支持此名值对金宝app百分位数的

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

的最大离群值计数“gesd”方法,指定为由逗号分隔的对组成“MaxNumOutliers”一个正标量。的“MaxNumOutliers”属性返回的离群值的最大数目“gesd”方法。例如,filloutliers (A,“线性”,‘gesd’,‘MaxNumOutliers’,5)返回不超过5个异常值。

的默认值“MaxNumOutliers”这个整数是否最接近其中元素数量的10%一个.为最大离群值设置较大的值可以确保检测到所有离群值,但代价是降低计算效率。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

已知的异常值指示器,指定为由逗号分隔的对组成“OutlierLocations”和一个逻辑向量,矩阵,或相同大小的多维数组一个.已知的异常值指示器元素可以是真正的在…的相应位置标明一个异常值一个否则。指定“OutlierLocations”关闭默认的离群值检测方法,只使用已知离群值指示器的元素来定义离群值。

“OutlierLocations”时不能指定名称-值对findmethod都是确定的。

输出特遣部队是一样的“OutlierLocations”价值。

数据类型:逻辑

输出参数

全部折叠

填充异常值数组,返回为矢量、矩阵、多维数组、表或时间表。的要素B和的一样吗一个,但将所有异常值替换为fillmethod

数据类型:||表格|时间表

异常值指示器,以向量、矩阵或多维数组的形式返回。的元素特遣部队真正的时对应的元素一个是一个异常值和否则。特遣部队尺寸和一个

数据类型:逻辑

离群值检测方法使用的较低阈值,以标量、向量、矩阵、多维数组、表或时间表的形式返回。例如,默认的异常值检测方法的低值是输入数据的中位数以下3个缩放MAD。l尺寸和一个在所有维度中,除了长度为1的操作维度。

数据类型:||表格|时间表

异常值检测方法使用的上限阈值,以标量、向量、矩阵、多维数组、表或时间表的形式返回。例如,默认的异常值检测方法的上限是输入数据的中位数上的3个缩放MAD。U尺寸和一个在所有维度中,除了长度为1的操作维度。

数据类型:||表格|时间表

离群值检测方法使用的中心值,以标量、向量、矩阵、多维数组、表或时间表的形式返回。例如,默认异常值检测方法的中心值为输入数据的中位数。C尺寸和一个在所有维度中,除了长度为1的操作维度。

数据类型:||表格|时间表

更多关于

全部折叠

绝对偏差中位数

对于一个随机变量向量一个N标量观测时,中位数绝对偏差(MAD)定义为

中位数 | 一个 中位数 一个 |

i = 1,2,…,N

缩放后的MAD定义为c *值(abs(中位数(A)))在哪里c = 1 /(√(2)* erfcinv (3/2))

扩展功能

在R2017a中引入