清洗离群数据
在实时编辑器中查找、填充或删除离群值
说明
清洗离群数据任务允许您以交互方式处理数据中的离群值。该任务会自动为您的实时脚本生成 MATLAB® 代码。
使用此任务,您可以:
从工作区变量数据中查找、填充或删除离群值。
自定义查找和填充离群值的方法。
可视化离群数据和清洗后的数据。
更多
相关函数
清洗离群数据生成使用 isoutlier
、filloutliers
和 rmoutliers
函数的代码。
打开任务
要在 MATLAB 编辑器中将清洗离群数据任务添加到实时脚本中,请执行以下操作:
在实时编辑器选项卡上,选择任务 > 清洗离群数据。
在脚本的代码块中,键入相关关键字,例如
outlier
、clean
、fill
或remove
。从建议的命令自动填充项中选择清洗离群数据。对于某些关键字,任务会自动更新一个或多个对应的参数。
示例
从表中删除离群值
使用实时编辑器中的清洗离群数据任务以交互方式从表中删除离群值。
使用示例文件中的患者身高和体重数据创建一个表。
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
作为输入数据。然后,通过选择 All supported variables
,计算 Height
和 Weight
变量。
清洗离群数据任务可以填充或删除离群数据。要删除身高或体重测量为离群值的患者的对应表行,请使用清洗方法字段选择 Remove outliers
。然后,要将离群值定义为低于第 10 个百分位数或高于第 90 个百分位数的元素,请使用检测方法字段并选择 Percentiles
。
然后,要可视化清洗后的身高和体重数据,请使用要显示的变量字段选择所有变量。
此任务返回包含已清洗数据的表,以及一个指示从输入表中删除的行的逻辑向量。使用 outlierIndices
确定从表中删除的行数。
nrows = sum(outlierIndices)
nrows = 24
相关示例
参数
输入数据
— 来自工作区的有效输入数据
向量 | 表 | 时间表
此任务对包含在向量、表或时间表中的输入数据进行操作。数据的类型可以是 single
或 double
。
对于表或时间表输入数据,要清洗类型为 single
或 double
的所有变量,请选择所有支持变量。要选择要清洗的 single
或 double
变量,请选择指定的变量。
清洗方法
— 用于填充离群值的清洗方法
线性插值 (默认) | 常量值 | 转换为缺失值 | ...
将填充离群值的方法指定为以下选项之一。
填充方法 | 描述 |
---|---|
线性插值 | 基于相邻的非离群值进行线性插值 |
常量值 | 指定的标量值,默认为 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 。当输入数据不是正态分布时,这种方法很有用。 |
格拉布斯 | 使用格拉布斯检验检测离群值,并基于假设检验每次迭代删除一个离群值。该方法假设输入数据是正态分布的。 |
广义极端 Student 化偏差(GESD) | 使用广义极端 Student 化偏差检验检测离群值。此迭代方法与格拉布斯类似,但当多个离群值互相遮盖时,此方法的执行效果更好。 |
移动均值 | 离群值定义为指定窗口内与局部均值相差超过指定局部标准差阈值的元素。默认阈值是 3 。 |
百分位数 | 离群值定义为由上阈值和下阈值指定的百分位数范围之外的元素。默认的下百分位数阈值为 10 ,默认的上百分位数阈值为 90 。有效阈值在区间 [0, 100] 内。 |
移动窗
— 移动方法的窗口
居中 (默认) | 不对称
当检测离群值的方法是移动中位数或移动平均值时,请指定窗口类型和大小。
窗口 | 描述 |
---|---|
居中 | 指定的窗口长度以当前点为中心 |
不对称 | 指定的窗口包含当前点之前的元素数和当前点之后的元素数 |
窗口大小相对于 X 轴变量单位。
版本历史记录
在 R2019b 中推出R2022b: 绘制多个表变量
在此实时编辑器任务的显示画面中同时绘制多个表变量。对于表或时间表数据,要在分块图布局中一次性可视化所有所选表变量,请设置要显示的变量字段。
R2022b: 将离群值转换为缺失值
您可以将离群数据转换为由值 NaN
指示的缺失数据。将清洗方法字段设置为填充离群值,并选择转换为缺失值选项。
R2022b: 追加已清洗的表变量
在输入表变量中追加包含清洗后数据的表变量。对于表或时间表输入数据,要追加清洗后的数据,请设置输出格式字段。
R2022a: 如果输入包含的元素超过一百万个,则实时编辑器任务不会自动运行
如果输入包含的元素超过一百万个,则此实时编辑器任务不会自动运行。在以前的版本中,对于任何大小的输入,该任务始终自动运行。如果输入包含大量元素,则由此任务生成的代码可能需要相当长的时间来运行(超过几秒)。
当任务不自动运行时,自动运行指示符会被禁用。您可以在需要时手动运行任务,也可以选择启用任务自动运行。
R2021a: 对多个表变量进行操作
此实时编辑器任务可以同时对多个表变量进行操作。对于表或时间表输入数据,要对多个变量进行操作,请选择所有支持变量或指定的变量。返回所有变量或仅返回修改后的变量,并指定要可视化的变量。
R2021a: 用直方图可视化结果
用直方图可视化大多数检测方法的结果。直方图可以汇总输入数据、离群值、填充了离群值的已清洗数据以及离群值检测阈值和中心值。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)