清洗离群数据
在实时编辑器中查找、填充或删除离群值
说明
清洗离群数据任务允许您以交互方式处理数据中的离群值。该任务会自动为您的实时脚本生成 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] 内。 |
范围 (自 R2024b 起) | 将离群值定义为由上阈值和下阈值指定的范围之外的元素。将阈值指定为与输入数据的宽度匹配的标量或向量。 |
工作区变量 (自 R2024b 起) | 使用工作区变量定义离群值位置。使用逻辑变量指定逻辑数组或表,其中值为 1 (true) 的元素对应于离群值。 |
当检测离群值的方法是移动中位数或移动平均值时,请指定窗口类型和大小。
| 窗口 | 描述 |
|---|---|
| 居中 | 指定的窗口长度以当前点为中心 |
| 不对称 | 指定的窗口包含当前点之前的元素数和当前点之后的元素数 |
窗口大小相对于 X 轴变量单位。
版本历史记录
在 R2019b 中推出您可以将离群值定义为由上阈值和下阈值定义的范围之外的元素,或定义为由工作区变量中的值 1 (true) 指示的元素。分别选择范围或工作区变量检测方法。
在此实时编辑器任务的显示画面中同时绘制多个表变量。对于表或时间表数据,要在分块图布局中一次性可视化所有所选表变量,请设置要显示的变量字段。
您可以将离群数据转换为由值 NaN 指示的缺失数据。将清洗方法字段设置为填充离群值,并选择转换为缺失值选项。
在输入表变量中追加包含清洗后数据的表变量。对于表或时间表输入数据,要追加清洗后的数据,请设置输出格式字段。
如果输入包含的元素超过一百万个,则此实时编辑器任务不会自动运行。在以前的版本中,对于任何大小的输入,该任务始终自动运行。如果输入包含大量元素,则由此任务生成的代码可能需要相当长的时间来运行(超过几秒)。
当任务不自动运行时,自动运行指示符会被禁用。您可以在需要时手动运行任务,也可以选择启用任务自动运行。
此实时编辑器任务可以同时对多个表变量进行操作。对于表或时间表输入数据,要对多个变量进行操作,请选择所有支持变量或指定的变量。返回所有变量或仅返回修改后的变量,并指定要可视化的变量。
用直方图可视化大多数检测方法的结果。直方图可以汇总输入数据、离群值、填充了离群值的已清洗数据以及离群值检测阈值和中心值。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)
