房山手机网站建设,wordpress仿安卓主题下载,营销推广费用预算,新买的服务器怎么做网站目录
语法
说明
示例
在向量中对离群值进行插值
使用均值检测和最邻近值填充方法
使用移窗检测法
填充矩阵行中的离群值
指定离群值位置
返回离群值阈值 filloutliers函数功能是检测并替换数据中的离群值。
语法
B filloutliers(A,fillmethod)
B filloutliers(A,f…目录
语法
说明
示例
在向量中对离群值进行插值
使用均值检测和最邻近值填充方法
使用移窗检测法
填充矩阵行中的离群值
指定离群值位置
返回离群值阈值 filloutliers函数功能是检测并替换数据中的离群值。
语法
B filloutliers(A,fillmethod)
B filloutliers(A,fillmethod,findmethod)
B filloutliers(A,fillmethod,percentiles,threshold)
B filloutliers(A,fillmethod,movmethod,window)
B filloutliers(___,dim)
B filloutliers(___,Name,Value)
[B,TF] filloutliers(___)
[B,TF,L,U,C] filloutliers(___)
说明 B filloutliers(A,fillmethod) 查找 A 中的离群值并根据 fillmethod 替换它们。例如filloutliers(A,previous) 将离群值替换为上一个非离群值元素。 如果 A 是矩阵则 filloutliers 分别对 A 的每列进行运算。 如果 A 是多维数组则 filloutliers 沿 A 的大小不等于 1 的第一个维度进行运算。 如果 A 是表或时间表则 filloutliers 分别对 A 的每个变量进行运算。
默认情况下离群值是指与中位数相差超过三倍经过换算的中位数绝对偏差 (MAD) 的值。 B filloutliers(A,fillmethod,findmethod) 指定检测离群值的方法。例如filloutliers(A,previous,mean) 将 A 中与均值相差超过三倍标准差的元素定义为离群值。 B filloutliers(A,fillmethod,percentiles,threshold) 将离群值定义为 threshold 所指定的百分位数以外的点。threshold 参数是包含上下百分位数阈值的二元素行向量例如 [10 90]。 B filloutliers(A,fillmethod,movmethod,window) 使用窗长度为 window 的移动窗均值或中位数来检测局部离群值。例如filloutliers(A,previous,movmean,5) 将包含五个元素的窗口中与局部均值相差超过三倍局部标准差的元素标识为离群值。 B filloutliers(___,dim) 为上述任一语法指定 A 的运算维度。例如filloutliers(A,linear,2) 沿矩阵 A 的每一行运算。 B filloutliers(___,Name,Value) 使用一个或多个名称-值参数指定用来检测和替换离群值的其他参数。例如filloutliers(A,previous,SamplePoints,t) 相对于时间向量 t 中的对应元素检测 A 中的离群值。 [B,TF] filloutliers(___) 还返回一个逻辑数组 TF该数组指示 B 中先前为离群值的填充元素的位置。 [B,TF,L,U,C] filloutliers(___) 还返回离群值检测方法使用的下阈值 L、上阈值 U 和中心值 C。
示例 在向量中对离群值进行插值 使用 linear 方法填充数据向量中的离群值并可视化填充的数据。创建一个包含两个离群值的数据向量。
A [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];
使用线性插值替换离群值。
B filloutliers(A,linear);
绘制原始数据和填充了离群值的数据。
plot(A)
hold on
plot(B,o-)
legend(Original Data,Filled Data)
如图所示 使用均值检测和最邻近值填充方法
识别数据表中的潜在离群值使用 nearest 填充方法填充任何离群值并可视化清洗后的数据。
创建一个数据时间表并可视化数据以检测潜在的离群值。
T hours(1:15);
V [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];
A timetable(T,V);
plot(A.Time,A.Var1) 填充数据中的离群值其中离群值定义为偏离均值超过三倍标准差的值。将离群值替换为最接近的非离群值元素。
B filloutliers(A,nearest,mean)
B15×1 timetableTime Var1_____ ____1 hr 57 2 hr 59 3 hr 60 4 hr 100 5 hr 59 6 hr 58 7 hr 57 8 hr 58 9 hr 61 10 hr 61 11 hr 62 12 hr 60 13 hr 62 14 hr 58 15 hr 57
在同一个图中绘制原始数据和填充了离群值的数据。
hold on
plot(B.Time,B.Var1,o-)
legend(Original Data,Filled Data)
如图所示 使用移窗检测法
使用移动中位数检测并填充与时间向量对应的正弦波内的局部离群值。
创建包含一个局部离群值的数据向量。
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 小时。使用 clip 方法用计算的阈值填充离群值。
[B,TF,L,U,C] filloutliers(A,clip,movmedian,hours(5),SamplePoints,t);
绘制原始数据和填充了离群值的数据。
plot(t,A)
hold on
plot(t,B,o-)
legend(Original Data,Filled Data)
如图所示 填充矩阵行中的离群值
创建一个数据矩阵其对角线上包含离群值。
A randn(5,5) diag(1000*ones(1,5))
A 5×5
103 ×1.0005 -0.0013 -0.0013 -0.0002 0.00070.0018 0.9996 0.0030 -0.0001 -0.0012-0.0023 0.0003 1.0007 0.0015 0.00070.0009 0.0036 -0.0001 1.0014 0.00160.0003 0.0028 0.0007 0.0014 1.0005基于每一行中的数据用零填充替换离群值然后显示新值。
[B,TF] filloutliers(A,0,2);
B
B 5×50 -1.3077 -1.3499 -0.2050 0.67151.8339 0 3.0349 -0.1241 -1.2075-2.2588 0.3426 0 1.4897 0.71720.8622 3.5784 -0.0631 0 1.63020.3188 2.7694 0.7147 1.4172 0可以使用 TF 作为索引向量访问检测到的离群值及其填充的值。
[A(TF) B(TF)]
ans 5×2
103 ×1.0005 00.9996 01.0007 01.0014 01.0005 0
指定离群值位置 创建一个包含两个离群值的向量并检测这些离群值的位置。
A [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];
detect isoutlier(A)
detect 1x15 logical array0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 使用 nearest 方法填充离群值。不使用检测方法而是提供由 isoutlier 检测到的离群值位置。
B filloutliers(A,nearest,OutlierLocations,detect)
B 1×1557 59 60 59 59 58 57 58 61 61 62 60 62 58 57
返回离群值阈值
使用 clip 填充方法替换数据向量中的离群值。
创建一个包含一个离群值的数据向量。
A [60 59 49 49 58 100 61 57 48 58]; 使用默认方法 median 检测离群值使用 clip 填充方法用上阈值替换该离群值。
[B,TF,L,U,C] filloutliers(A,clip); 绘制原始数据、填充了离群值的数据以及由离群值检测方法确定的阈值和中心值。中心值是数据的中位数上阈值和下阈值分别高于和低于中位数三倍换算 MAD。
plot(A)
hold on
plot(B,o-)
yline([L U C],:,[Lower Threshold,Upper Threshold,Center Value])
legend(Original Data,Filled Data)如图所示 参数说明
A--输入数据指定为向量、矩阵、多维数组、表或时间表。 如果 A 是一个表则其变量的类型必须为 double 或 single也可以使用 DataVariables 参数显式列出 double 或 single 变量。当您使用的表中包含 double 和 single 数据类型之外的变量时指定变量很有用。 如果 A 是一个时间表则 filloutliers 仅对表元素进行运算。如果行时间用作采样点则它们必须唯一并按升序排列。
fillmethod — 填充方法
替换离群值的填充方法指定为以下值之一。
填充方法描述数值标量指定的标量值center由 findmethod 确定的中心值clip对于比 findmethod 确定的下阈值还小的元素指定为下阈值对于比 findmethod 确定的上阈值还大的元素指定为上阈值previous上一个非离群值next下一个非离群值nearest最邻近的非离群值linear基于相邻的非离群值进行线性插值spline分段三次样条插值pchip保形分段三次样条插值makima修正 Akima 三次 Hermite 插值仅限数值、duration 和 datetime 数据类型
findmethod — 检测离群值的方法 检测离群值的方法指定为以下值之一。
方法描述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 个百分位数的点。
movmethod — 移窗法 用来检测离群值的移窗法指定为下列方法之一。
方法描述movmedian离群值定义为在 window 指定的窗口长度内与局部中位数相差超过三倍局部换算 MAD 的元素。此方法也称为 Hampel 滤波器。movmean离群值定义为在 window 指定的窗口长度内与局部均值相差超过三倍局部标准差的元素。
window — 窗长度 窗长度指定为正整数标量、由正整数组成的二元素向量、正持续时间标量或由正持续时间组成的二元素向量。 如果 window 是正整数标量则窗口以当前元素为中心并且包含 window-1 个相邻元素。如果 window 是偶数则窗口以当前元素和上一个元素为中心。 如果 window 是由正整数组成的二元素向量 [b f]则窗口包含当前元素、其之前的 b 个元素和之后的 f 个元素。 当 A 是时间表或者 SamplePoints 被指定为 datetime 或 duration 向量时window 的类型必须是 duration而且将会基于样本点来计算窗口。
dim--运算维度
运算维度指定为正整数标量。如果未指定值则默认值是大小不等于 1 的第一个数组维度。
以一个 m×n 输入矩阵 A 为例 filloutliers(A,fillmethod,1) 根据 A 的每列中的数据填充离群值并返回一个 m×n 矩阵。 filloutliers(A,fillmethod,2) 根据 A 的每行中的数据填充离群值并返回一个 m×n 矩阵。 对于表或时间表输入数据不支持 dim并且分别对每个表或时间表变量进行运算。
中位数绝对偏差
对于由 N 个标量观测值组成的有限长度向量 A中位数绝对偏差 (MAD) 定义为 其中 i 1,2,...,N。
换算 MAD 定义为 c*median(abs(A-median(A)))其中 c-1/(sqrt(2)*erfcinv(3/2))。