主要内容

Fillutions.

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

描述

例子

B= filloutliers (一个Fillmethod.发现异常值一个并根据Fillmethod..例如,Fillouteriers(A,'上一个')用前面的非离群值元素替换离群值。默认情况下,离群值是一个大于三倍的值中位绝对偏差(疯狂)远离中位数。如果一个是矩阵还是表格Fillutions.分别对每一列进行操作。如果一个是一个多维数组吗Fillutions.沿着第一个维度操作,其尺寸不等于1。

例子

B= filloutliers (一个Fillmethod.findmethod.指定检测异常值的方法。例如,filloutliers(a,'之前'','卑鄙')的元素定义离群值一个离均值超过三个标准差。

B= filloutliers (一个Fillmethod.,'百分比',阈值将异常值定义为指定百分位数之外的点阈值.的阈值参数是一个包含上下百分位阈值的双元素行向量,例如[90]

例子

B= filloutliers (一个Fillmethod.movmethod.窗口指定根据窗口长度定义的用于检测本地异常值的移动方法窗口.例如,Filloutliers(a,'之前','movmean',5)识别离群值是指在一个五元素窗口内距离本地平均值超过三个本地标准偏差的元素。

例子

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

例子

B= filloutliers (___名称,价值指定使用一个或多个名称-值对参数检测和替换离群值的附加参数。例如,Filloutliers(a,'上一个','samplepoints',t)检测到异常值一个相对于时间向量的相应元素t

例子

BTF.lUC] = fillouters(___还返回由检测方法计算的离群值和阈值的位置信息。TF.是指示异常值的位置的逻辑阵列一个.的lU, 和C参数表示低于阈值和上限阈值和高度阈值,并且由异常值检测方法使用的中心值。

例子

全部收缩

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

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

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

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

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

图中包含一个轴对象。轴对象包含两个类型为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);

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

[b,tf,u,l,c] = fillutliers(a,“剪辑”“movmedian”小时(5),“SamplePoints”t);情节(t, t, B,“o”)传说(“原始数据”'填充数据'

图中包含一个轴对象。轴对象包含两个类型为line的对象。这些对象代表原始数据,填充数据。

显示替换异常值的阈值。

L(TF)
ans = -0.8779

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

沿对角线创建包含异常值的数据矩阵。

A = RANDN(5,5)+ DIAG(1000 * on(1,5))
一个=5×510.3.× 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

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

[B,TF,较低,上部,中心] = 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

您可以使用以下命令直接访问检测到的离群值及其填充值TF.作为一个索引向量。

[a(tf)b(tf)]
ANS =.5×210.3.× 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,较低,上部,中心] = FillOutliers(A,“剪辑”);绘图(x,a,x,b,“o”,x,较低的* oon(1,10),x,上部* x(1,10),x,中心* x(1,10))图例(“原始数据”'填充数据''较低的门槛'“上阈值”'中心值'

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

输入参数

全部收缩

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

如果一个是一个表,那么它的变量必须是类型的或者单身的,或者你也可以用“DataVariables”名称 - 值对以列出或者单身的变量明确。当您使用包含数据类型以外的数据类型的表时,指定变量很有用或者单身的

如果一个是一个时间表,然后Fillutions.仅在表元素上运行。行时间必须是唯一的,以升序列出。

数据类型:|单身的|桌子|时间表

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

填补方法 描述
数字标量 填充指定的标量值
'中央' 由决定的中心值填充findmethod.
“剪辑” 由确定的下限阈值小于的元素用下限阈值填充findmethod..填充大于由上阈值大的元素的上阈值findmethod.
'以前的' 用之前的非离群值填充
“下一个” 用下一个非离群值填充
“最近的” 填充最接近的非异常值
'线性' 使用相邻的线性插值填充,非异常值
样条的 使用分段立方样条插值填充
'pchip' 使用形状保存分段立方样条插值填充
“makima” 修改Akima立方Hermite插值(数字,持续时间, 和约会时间数据类型)

数据类型:|单身的|字符

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

方法 描述
'中位' 异常值被定义为来自中位数超过三个鳞片的元素。缩放的疯狂被定义为C *中位数(ABS(ABS(a))),在那里C = -1 /(SQRT(2)* ERFCINV(3/2))
'意思' 离均值超过三个标准差的元素被定义为离均值超过三个标准差的元素。该方法速度快,但鲁棒性差'中位'
四分位数的 异常值定义为高于上四分位数(75%)或低于下四分位数(25%)的四分位数间范围超过1.5的元素。当数据输入时,这个方法很有用一个不是正态分布。
'grubbs' 使用Grubbs的测试检测到异常值,该测试基于假设检测将删除每个迭代的一个异常值。此方法假定数据一个是正态分布。
“gesd” 使用概括的极端学生偏差测试检测异常值。这种迭代方法类似于'grubbs',但当有多个异常值相互掩蔽时,性能会更好。

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

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

方法 描述
“movmedian” 异常值被定义为从本地中位于窗口长度的窗口长度超过三个本地缩放的元素窗口.这种方法也称为aHampel过滤器
“movmean” 离群值定义为在指定的窗长范围内距离本地均值超过三个本地标准偏差的元素窗口

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

窗口是一个正整数标量,窗口是围绕当前元素和包含窗口1相邻的元素。如果窗口甚至,然后窗口以当前和以前的元素为中心。

窗口是一个正整数的二元向量吗[b f],窗口包含当前元素,b元素向后,f元素前进。

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

数据类型:|单身的|INT8.|int16|int32|int64|uint8|uint16|UINT32|UINT64|持续时间

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

考虑一个矩阵一个

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

Fillouteriers(A,Fillmethod,2)根据每行中的数据填充异常值。

一个是桌子或时间表,昏暗的不支持。金宝appFillutions.分别对每个表或时间表变量进行操作。

数据类型:|单身的|INT8.|int16|int32|int64|uint8|uint16|UINT32|UINT64

名称-值参数

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

例子:Fillouteriers(A,'Center','均值','阈值Fact',4)
数据选项

全部收缩

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

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

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

指定单表变量名称的字符矢量或标量字符串

'var1'

“var1”

标量索引

标量表变量索引

3.

逻辑矢量

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

[真为假假]

函数处理

接受表变量作为输入并返回逻辑标量的函数句柄,逻辑标量必须为真的只有一个表变量

@isnumeric

vartype下标

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

vartype(数字)

请注意

当输入数据为金宝app时间表.时间表总是使用行时间向量作为样本点。要使用不同的样本点,必须编辑时间表,以便行时间包含所需的样本点。

移动窗口是相对于样本点定义的。例如,如果t那么,时间向量是否与输入数据相对应呢Filloutliers(Rand(1,10),'上一个','movemean',3,'samplepoints',t)有一个代表之间的时间间隔的窗口T(i)-1.5T(i)+1.5

当样本点向量具有数据类型时约会时间或者持续时间,然后移动窗口长度必须具有类型持续时间

例子:FillOutliers([1 100 3 4],'最近','samplepoints',[1 2.5 3 4])Filloutliers(t,'最近','samplepoints',“var1”)

数据类型:单身的||约会时间|持续时间

要操作的表变量,指定为逗号分隔对,由“DataVariables”这张表中有一个选项。的“DataVariables”值表示要填充的输入表的哪些变量。桌中的其他变量未指定“DataVariables”通过到输出而不被操作。

选项 描述 例子
变量名

指定单表变量名称的字符矢量或标量字符串

'var1'

“var1”

变量名称矢量

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

{“Var1”“Var2”}

[" Var1”“Var2”)

可变指标的标量或向量

表变量指数的标量或向量

1

[1 3 5]

逻辑矢量

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

(真的假的真的)

函数处理

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

@isnumeric

vartype下标

属性生成的表下标vartype功能

vartype(数字)

例子:Filloutliers(A,'上一个','Datavariables',[“var1”“var2”“var4”))

孤立点检测的选项

全部收缩

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

为方法'中位'“movmedian”时,检测阈值因子代替缩放的MAD数量,MAD数量默认为3。

为方法'意思'“movmean”时,检测阈值因子代替离均值的标准差数,默认为3。

为方法'grubbs'“gesd”时,检测阈值因子为0 ~ 1之间的标量。接近0的值会产生更少的离群值,接近1的值会产生更多的离群值。默认检测阈值因子为0.05。

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

当指定的方法是时不支持此名称值对金宝app'百分比'

数据类型:|单身的|INT8.|int16|int32|int64|uint8|uint16|UINT32|UINT64

最大离群值计数“gesd”方法指定为逗号分隔的对,由“MaxNumOutliers”一个正标量。的“MaxNumOutliers”属性返回的离群值的最大数目“gesd”方法。例如,Filloutliers(a,'linear','gesd','maxnumoutliers',5)返回值不超过5个异常值。

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

数据类型:|单身的|INT8.|int16|int32|int64|uint8|uint16|UINT32|UINT64

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

“OutlierLocations”时不能指定名称-值对findmethod.指定了。

输出TF.是一样的“OutlierLocations”价值。

数据类型:逻辑

输出参数

全部收缩

填充的离群值数组,以向量、矩阵、多维数组、表或时间表的形式返回。的元素B与那些相同一个,但所有异常值都被替换为根据Fillmethod.

数据类型:|单身的|桌子|时间表

离群值指示器,以向量、矩阵或多维数组的形式返回。一个元素的TF.真的当对应的元素一个是一个异常值和错误的否则。TF.大小是一样的吗一个

数据类型:逻辑

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

数据类型:|单身的|桌子|时间表

离群值检测方法使用的上限阈值,返回为标量、向量、矩阵、多维数组、表或时间表。例如,默认离群值检测方法的上限值是比输入数据中值高出3倍的MAD。U具有相同的尺寸一个在所有尺寸中,除了长度为1的操作尺寸。

数据类型:|单身的|桌子|时间表

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

数据类型:|单身的|桌子|时间表

更多关于

全部收缩

平均绝对偏差

对于随机变量矢量一个组成的N中值绝对偏差(MAD)定义为

疯了=值 | 一个 - 中位数 一个 |

i = 1,2,…,N

缩放的疯狂被定义为C *中位数(ABS(ABS(a)))在哪里C = -1 /(SQRT(2)* ERFCINV(3/2))

扩展功能

介绍了R2017a