检测和替换数据中的异常值
发现异常值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)
识别离群值是指在一个五元素窗口内距离本地平均值超过三个本地标准偏差的元素。
创建包含异常值的数据向量,并使用线性插值来替换异常值。绘制原始和填充的数据。
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”)传说(“原始数据”,“窜改数据”)
创建包含异常值的向量,并将异常值定义为与平均值的三个标准偏差之外的点。将异常值替换为不是异常值的最近元素,并绘制原始数据和内插数据。
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”)传说(“原始数据”,“窜改数据”)
使用移动中位数可以在正弦波中找到对应于时间向量的本地异常值。
创建包含本地异常值的数据向量。
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”)传说(“原始数据”,'填充数据')
显示替换异常值的阈值。
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))图例(“原始数据”,'填充数据','较低的门槛',“上阈值”,'中心值')
一个
- - - - - -输入数据输入数据,指定为向量,矩阵,多维数组,表或时间表。
如果一个
是一个表,那么它的变量必须是类型的双
或者单身的
,或者你也可以用“DataVariables”
名称 - 值对以列出双
或者单身的
变量明确。当您使用包含数据类型以外的数据类型的表时,指定变量很有用双
或者单身的
.
如果一个
是一个时间表,然后Fillutions.
仅在表元素上运行。行时间必须是唯一的,以升序列出。
数据类型:双
|单身的
|桌子
|时间表
Fillmethod.
- - - - - -填充方法'中央'
|“剪辑”
|'以前的'
|“下一个”
|“最近的”
|'线性'
|样条的
|'pchip'
|“makima”
填充替换异常值的方法,指定为数字标量或以下之一:
填补方法 | 描述 |
---|---|
数字标量 | 填充指定的标量值 |
'中央' |
由决定的中心值填充findmethod. |
“剪辑” |
由确定的下限阈值小于的元素用下限阈值填充findmethod. .填充大于由上阈值大的元素的上阈值findmethod. |
'以前的' |
用之前的非离群值填充 |
“下一个” |
用下一个非离群值填充 |
“最近的” |
填充最接近的非异常值 |
'线性' |
使用相邻的线性插值填充,非异常值 |
样条的 |
使用分段立方样条插值填充 |
'pchip' |
使用形状保存分段立方样条插值填充 |
“makima” |
修改Akima立方Hermite插值(数字,持续时间 , 和约会时间 数据类型) |
数据类型:双
|单身的
|字符
findmethod.
- - - - - -异常值检测方法'中位'
(默认)|'意思'
|四分位数的
|'grubbs'
|“gesd”
检测异常值的方法,指定为以下之一:
方法 | 描述 |
---|---|
'中位' |
异常值被定义为来自中位数超过三个鳞片的元素。缩放的疯狂被定义为C *中位数(ABS(ABS(a))) ,在那里C = -1 /(SQRT(2)* ERFCINV(3/2)) . |
'意思' |
离均值超过三个标准差的元素被定义为离均值超过三个标准差的元素。该方法速度快,但鲁棒性差'中位' . |
四分位数的 |
异常值定义为高于上四分位数(75%)或低于下四分位数(25%)的四分位数间范围超过1.5的元素。当数据输入时,这个方法很有用一个 不是正态分布。 |
'grubbs' |
使用Grubbs的测试检测到异常值,该测试基于假设检测将删除每个迭代的一个异常值。此方法假定数据一个 是正态分布。 |
“gesd” |
使用概括的极端学生偏差测试检测异常值。这种迭代方法类似于'grubbs' ,但当有多个异常值相互掩蔽时,性能会更好。 |
阈值
- - - - - -百分位数阈值百分位数阈值,指定为一个元素位于区间[0,100]中的双元素行向量。第一个元素表示下百分位阈值,第二个元素表示上百分位阈值。例如,阈值为[90]
将异常值定义为10百分位低于第90百分位数的点数。第一个元素阈值
必须小于第二个元素。
movmethod.
- - - - - -移动的方法“movmedian”
|“movmean”
用于检测异常值的移动方法,指定为以下之一:
方法 | 描述 |
---|---|
“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
- - - - - -采样点vartype
下标样本点,指定为逗号分隔对,由“SamplePoints”
并且当输入数据是表时,样本点值的向量或下表中的选项之一。样本点代表x-Axis数据位置,必须排序并包含唯一的元素。样品点不需要均匀采样。矢量[1 2 3…]
是默认的。
当输入数据是一个表时,您可以使用以下选项之一将示例点指定为表变量。
表输入的选项 | 描述 | 例子 |
---|---|---|
变量名 | 指定单表变量名称的字符矢量或标量字符串 |
|
标量索引 | 标量表变量索引 |
|
逻辑矢量 | 逻辑向量,其每个元素对应一个表变量,其中 |
|
函数处理 | 接受表变量作为输入并返回逻辑标量的函数句柄,逻辑标量必须为 |
|
vartype 下标 |
属性生成的表下标 |
|
请注意
当输入数据为金宝app时间表
.时间表总是使用行时间向量作为样本点。要使用不同的样本点,必须编辑时间表,以便行时间包含所需的样本点。
移动窗口是相对于样本点定义的。例如,如果t
那么,时间向量是否与输入数据相对应呢Filloutliers(Rand(1,10),'上一个','movemean',3,'samplepoints',t)
有一个代表之间的时间间隔的窗口T(i)-1.5
和T(i)+1.5
.
当样本点向量具有数据类型时约会时间
或者持续时间
,然后移动窗口长度必须具有类型持续时间
.
例子:FillOutliers([1 100 3 4],'最近','samplepoints',[1 2.5 3 4])
Filloutliers(t,'最近','samplepoints',“var1”)
数据类型:单身的
|双
|约会时间
|持续时间
DataVariables
- - - - - -要操作的表变量vartype
下标要操作的表变量,指定为逗号分隔对,由“DataVariables”
这张表中有一个选项。的“DataVariables”
值表示要填充的输入表的哪些变量。桌中的其他变量未指定“DataVariables”
通过到输出而不被操作。
选项 | 描述 | 例子 |
---|---|---|
变量名 | 指定单表变量名称的字符矢量或标量字符串 |
|
变量名称矢量 | 字符向量或字符串数组的单元格数组,其中每个元素是表变量名称 |
|
可变指标的标量或向量 | 表变量指数的标量或向量 |
|
逻辑矢量 | 逻辑向量,其每个元素对应一个表变量,其中 |
|
函数处理 | 接受表变量作为输入并返回逻辑标量的函数句柄 |
|
vartype 下标 |
属性生成的表下标 |
|
例子:Filloutliers(A,'上一个','Datavariables',[“var1”“var2”“var4”))
阈值Factor.
- - - - - -检测阈值因子检测阈值因子,指定为逗号分隔的对组成'阈值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
MaxNumOutliers
- - - - - -最大异常计数最大离群值计数“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
-填充的离群值数组填充的离群值数组,以向量、矩阵、多维数组、表或时间表的形式返回。的元素B
与那些相同一个
,但所有异常值都被替换为根据Fillmethod.
.
数据类型:双
|单身的
|桌子
|时间表
TF.
——离群值指标离群值指示器,以向量、矩阵或多维数组的形式返回。一个元素的TF.
是真的
当对应的元素一个
是一个异常值和错误的
否则。TF.
大小是一样的吗一个
.
数据类型:逻辑
l
——低阈值异常值检测方法使用的较低阈值,作为标量,向量,矩阵,多维数组,表或时间表返回。例如,默认异常值检测方法的较低值是输入数据的中位数下方的三个缩放MAD。l
具有相同的尺寸一个
在所有尺寸中,除了长度为1的操作尺寸。
数据类型:双
|单身的
|桌子
|时间表
U
- 上限阈值离群值检测方法使用的上限阈值,返回为标量、向量、矩阵、多维数组、表或时间表。例如,默认离群值检测方法的上限值是比输入数据中值高出3倍的MAD。U
具有相同的尺寸一个
在所有尺寸中,除了长度为1的操作尺寸。
数据类型:双
|单身的
|桌子
|时间表
C
——中心价值异常值检测方法使用的中心值,作为标量,向量,矩阵,多维数组,表或时间表返回。例如,默认异常值检测方法的中心值是输入数据的中位数。C
具有相同的尺寸一个
在所有尺寸中,除了长度为1的操作尺寸。
数据类型:双
|单身的
|桌子
|时间表
对于随机变量矢量一个组成的N中值绝对偏差(MAD)定义为
为i = 1,2,…,N.
缩放的疯狂被定义为C *中位数(ABS(ABS(a)))
在哪里C = -1 /(SQRT(2)* ERFCINV(3/2))
.
使用注意事项及限制:
的'百分比'
,“幼虫”
, 和“gesd”
不支持方法。金宝app
的“movmedian”
和“movmean”
方法不支持高位时刻表。金宝app
的“SamplePoints”
和“MaxNumOutliers”
不支持名称值对。金宝app
的价值“DataVariables”
不能是函数句柄。
计算fillmethod filloutliers(一个)
,filloutliers (fillmethod,“中位数”,…)
或者Filloutliers(a,fillmethod,'四分位数',......)
沿着第一维仅支持何时支持金宝app一个
是一个高列向量。
的语法filloutliers (A,花键,…)
和filloutliers(“makima”,…)
不受支持。金宝app
有关更多信息,请参见高阵列.
使用注意事项及限制:
的“movmean”
和“movmedian”
检测离群值的方法不支持时间表输入数据datetime金宝app“SamplePoints”
值,或持续时间“SamplePoints”
价值观。
只有'中央'
,“剪辑”
并且当输入数据是时间表或何时时,支持用于填充异常值的数字标准方法金宝app“SamplePoints”
价值类型约会时间
或者持续时间
.
使用样条的
和'pchip'
填充方法,必须启用对可变大小阵列的支持。金宝app
字符串和字符数组的输入必须是常量。
的“makima”
不支持选项。金宝app
backgroundPool
或使用并行计算工具箱™加速代码螺纹池
.这个函数完全支持基于线程的环境。金宝app有关更多信息,请参见在线程环境中运行MATLAB函数.
您单击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。