Main Content

清洗离群数据

在实时编辑器中查找、填充或删除离群值

自 R2019b 起

说明

清洗离群数据任务允许您以交互方式处理数据中的离群值。该任务会自动为您的实时脚本生成 MATLAB® 代码。

使用此任务,您可以:

  • 从工作区变量数据中查找、填充或删除离群值。

  • 自定义查找和填充离群值的方法。

  • 可视化离群数据和清洗后的数据。

Clean Outlier Data task in the Live Editor

打开任务

要在 MATLAB 编辑器中将清洗离群数据任务添加到实时脚本中,请执行以下操作:

  • 实时编辑器选项卡上,选择任务 > 清洗离群数据

  • 在脚本的代码块中,键入相关关键字,例如 outlierclean。从建议的命令自动填充项中选择清洗离群数据

示例

全部展开

使用实时编辑器中的清洗离群数据任务以交互方式从表中删除离群值。

使用示例文件中的患者身高和体重数据创建一个表。

load("patients.mat","Height","Weight")
T = table(Height,Weight);
head(T)
    Height    Weight
    ______    ______

      71       176  
      69       163  
      64       131  
      67       133  
      64       119  
      68       142  
      64       142  
      68       180  

在实时编辑器中打开清洗离群数据任务。要清洗患者数据,请选择 T 作为输入数据。然后,通过选择所有支持变量,计算 HeightWeight 变量。

清洗离群数据任务可以填充或删除离群数据。要删除身高或体重测量为离群值的患者的对应表行,请使用清洗方法字段选择删除离群值。然后,要将离群值定义为低于第 10 个百分位数或高于第 90 个百分位数的元素,请使用检测方法字段并选择百分位数

然后,要可视化清洗后的身高和体重数据,请使用要显示的变量字段选择所有变量。

Live Task

Figure contains 2 axes objects. Axes object 1 with title Number of outliers cleaned: 8, ylabel Height contains 5 objects of type line. One or more of the lines displays its values using only markers These objects represent Input data, Cleaned data, Outliers, Removed by other variables, Outlier thresholds. Axes object 2 with title Number of outliers cleaned: 18, ylabel Weight contains 5 objects of type line. One or more of the lines displays its values using only markers These objects represent Input data, Cleaned data, Outliers, Removed by other variables, Outlier thresholds.

相关示例

参数

全部展开

此任务对包含在向量、表或时间表中的输入数据进行操作。数据的类型可以是 singledouble

对于表或时间表输入数据,要清洗类型为 singledouble 的所有变量,请选择所有支持变量。要选择要清洗的 singledouble 变量,请选择指定的变量

将填充离群值的方法指定为以下选项之一。

填充方法描述
线性插值基于相邻的非离群值进行线性插值
常量值指定的标量值,默认为 0
转换为缺失值转换为标准缺失值的默认定义
中心值由检测方法确定的中心值
裁剪到阈值对于比检测方法确定的下阈值还小的元素,填充下阈值;对于比检测方法确定的上阈值还大的元素,填充上阈值
上一个值上一个非离群值
下一个值下一个非离群值
最接近值最邻近的非离群值
样条插值分段三次样条插值
保形三次插值(PCHIP)保形分段三次样条插值
修正 Akima 三次插值修正 Akima 三次 Hermite 插值

将用于查找离群值的检测方法指定为以下选项之一。

方法描述
移动中位数离群值定义为指定窗口内与局部中位数相差超过指定局部换算中位数绝对偏差 (MAD) 阈值的元素。默认阈值是 3
中位数离群值定义为与中位数相差超过指定换算 MAD 阈值的元素。默认阈值是 3。对于输入数据 A,换算 MAD 定义为 c*median(abs(A-median(A))),其中 c=-1/(sqrt(2)*erfcinv(3/2))
均值离群值定义为与均值相差超过指定标准差阈值的元素。默认阈值是 3。此方法比中位数快,但没有后者可靠。
四分位数离群值定义为高于上四分位数 (75%) 或低于下四分位数 (25%) 超过指定四分位差阈值的元素。默认阈值是 1.5。当输入数据不是正态分布时,这种方法很有用。
Grubbs使用 Grubbs 检验检测离群值,并基于假设检验每次迭代删除一个离群值。该方法假设输入数据是正态分布的。
广义极端 Student 化偏差(GESD)使用广义极端 Student 化偏差检验检测离群值。此迭代方法与 Grubbs 类似,但当多个离群值互相遮盖时,此方法的执行效果更好。
移动均值离群值定义为指定窗口内与局部均值相差超过指定局部标准差阈值的元素。默认阈值是 3
百分位数离群值定义为由上阈值和下阈值指定的百分位数范围之外的元素。默认的下百分位数阈值为 10,默认的上百分位数阈值为 90。有效阈值在区间 [0, 100] 内。

当检测离群值的方法是移动中位数移动平均值时,请指定窗口类型和大小。

窗口描述
居中指定的窗口长度以当前点为中心
不对称指定的窗口包含当前点之前的元素数和当前点之后的元素数

窗口大小相对于 X 轴变量单位。

版本历史记录

在 R2019b 中推出

全部展开