Обнаружьте и замените выбросы в данных
находит выбросы в B
= filloutliers(A
,fillmethod
)A
и заменяет их согласно fillmethod
. Например, filloutliers(A,'previous')
выбросы замен с предыдущим элементом невыброса. По умолчанию выброс является значением, которое является больше чем тремя масштабируемыми средними абсолютными отклонениями (MAD) далеко от медианы. Если A
матрица или таблица, затем filloutliers
работает с каждым столбцом отдельно. Если A
многомерный массив, затем filloutliers
действует по первому измерению, размер которого не равняется 1.
задает метод для обнаружения выбросов. Например, 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(___,Name,Value
)filloutliers(A,'previous','SamplePoints',t)
обнаруживает выбросы в A
относительно соответствующих элементов временного вектора t
.
[
также возвращает информацию о положении выбросов и порогов, вычисленных методом обнаружения. B
,TF
,L
,U
,C
]
= filloutliers(___)TF
логический массив, указывающий на местоположение выбросов в A
. L
U
, и C
аргументы представляют более низкие и верхние пороги и центральное значение, используемое методом определения выбросов.
Создайте вектор из данных, содержащих выброс, и используйте линейную интерполяцию, чтобы заменить выброс. Отобразите исходные и заполненные данные на графике.
A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57]; B = filloutliers(A,'linear'); plot(1:15,A,1:15,B,'o') legend('Original Data','Interpolated Data')
Создайте вектор, содержащий выброс, и задайте выбросы как точки вне трех стандартных отклонений от среднего значения. Замените выброс на самый близкий элемент, который не является выбросом, и отобразите на графике исходные данные и интерполированные данные.
A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57]; B = filloutliers(A,'nearest','mean'); plot(1:15,A,1:15,B,'o') legend('Original Data','Interpolated 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,U,L,C] = filloutliers(A,'clip','movmedian',hours(5),'SamplePoints',t); plot(t,A,t,B,'o') legend('Original Data','Filled Data')
Отобразите пороговое значение, которое заменило выброс.
L(TF)
ans = -0.8779
Заполните выбросы для каждой строки матрицы.
Создайте матрицу данных, содержащих выбросы по диагонали.
A = randn(5,5) + diag(1000*ones(1,5))
A = 5×5
103 ×
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
Заполните выбросы нулями на основе данных в каждой строке и отобразите новые значения.
[B,TF,lower,upper,center] = filloutliers(A,0,2); B
B = 5×5
0 -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 1.4172 0
Можно непосредственно получить доступ к обнаруженным значениям выброса и их заполненным значениям с помощью TF
как вектор индекса.
[A(TF) B(TF)]
ans = 5×2
103 ×
1.0005 0
0.9996 0
1.0007 0
1.0014 0
1.0005 0
Найдите выброс в векторе из данных и замените его с помощью 'clip'
метод. Отобразите на графике исходные данные, заполненные данные, и пороги и центральное значение, определенное методом обнаружения. 'clip'
заменяет выброс на верхнее пороговое значение.
x = 1:10; A = [60 59 49 49 58 100 61 57 48 58]; [B,TF,lower,upper,center] = filloutliers(A,'clip'); plot(x,A,x,B,'o',x,lower*ones(1,10),x,upper*ones(1,10),x,center*ones(1,10)) legend('Original Data','Filled Data','Lower Threshold','Upper Threshold','Center Value')
A
— Входные данныеВходные данные в виде вектора, матрицы, многомерного массива, таблицы или расписания.
Если A
таблица, затем ее переменные должны иметь тип double
или single
, или можно использовать 'DataVariables'
пара "имя-значение", чтобы перечислить double
или single
переменные явным образом. Определение переменных полезно, когда вы работаете с таблицей, которая содержит переменные с типами данных кроме double
или single
.
Если A
расписание, затем filloutliers
работает только с табличными элементами. Времена строки должны быть уникальными и перечислены в порядке возрастания.
Типы данных: double |
single
| table
| timetable
fillmethod
fillmethod 'center'
| 'clip'
| 'previous'
| 'next'
| 'nearest'
| 'linear'
| 'spline'
| 'pchip'
| 'makima'
Метод заполнения для замены выбросов в виде числового скаляра или одного из следующего:
Fillmethod | Описание |
---|---|
Числовой скаляр | Заливки с заданным скалярным значением |
'center' | Заливки с центральным значением, определенным findmethod |
'clip' | Заливки с более низким пороговым значением для элементов, меньших, чем более низкий порог, определяются findmethod . Заливки с верхним пороговым значением для элементов, больше, чем верхний порог, определяются findmethod |
'previous' | Заливки с предыдущим значением невыброса |
'next' | Заливки со следующим значением невыброса |
'nearest' | Заливки с самым близким значением невыброса |
'linear' | Заливки с помощью линейной интерполяции соседних, значений невыброса |
'spline' | Заливки с помощью кусочной интерполяции кубическим сплайном |
'pchip' | Заливки с помощью сохраняющей форму кусочной интерполяции кубическим сплайном |
'makima' | модифицированный Акима кубическая интерполяция Эрмита (числовой, duration , и datetime только типы данных) |
Типы данных: double |
single
| char
findmethod
— Метод для обнаружения выбросов'median'
(значение по умолчанию) | 'mean'
| 'quartiles'
| 'grubbs'
| 'gesd'
Метод для обнаружения выбросов в виде одного из следующего:
Метод | Описание |
---|---|
'median' | Выбросы заданы как элементы больше чем три масштабируемых MAD от медианы. Масштабированный MAD задан как c*median(abs(A-median(A))) , где c=-1/(sqrt(2)*erfcinv(3/2)) . |
'mean' | Выбросы заданы как элементы больше чем три стандартных отклонения от среднего значения. Этот метод быстрее, но менее устойчив, чем 'median' . |
'quartiles' | Выбросы заданы как элементы больше чем 1,5 межквартильных размаха выше верхнего квартиля (75 процентов) или ниже более низкого квартиля (25 процентов). Этот метод полезен когда данные в A не нормально распределено. |
'grubbs' | Выбросы обнаруживаются с помощью теста Граббса, который удаляет один выброс на итерацию на основе тестирования гипотезы. Этот метод принимает что данные в A нормально распределено. |
'gesd' | Выбросы обнаруживаются с помощью обобщенного экстремального Studentized, отклоняют тест для выбросов. Этот итерационный метод похож на 'grubbs' , но может выполнить лучше, когда существует несколько выбросов, маскирующих друг друга. |
threshold
— Пороги процентилиПороги процентили в виде двухэлементного вектора-строки, элементы которого находятся в интервале [0,100]. Первый элемент указывает на более низкий порог процентили, и второй элемент указывает на верхний порог процентили. Например, порог [10 90]
задает выбросы как точки ниже 10-й процентили и выше 90-й процентили. Первый элемент threshold
должен быть меньше второго элемента.
movmethod
— Движущийся метод'movmedian'
| 'movmean'
Движущийся метод для обнаружения выбросов в виде одного из следующего:
Метод | Описание |
---|---|
'movmedian' | Выбросы заданы как элементы больше чем три локальных масштабированных MAD от локальной медианы по длине окна, заданной window . Этот метод также известен как Hampel filter. |
'movmean' | Выбросы заданы как элементы больше чем три локальных стандартных отклонения от локального среднего значения по длине окна, заданной window . |
window
— Длина окнаДлина окна в виде положительного целочисленного скаляра, двухэлементного вектора из положительных целых чисел, положительного скаляра длительности или двухэлементного вектора из положительной длительности.
Когда window
положительный целочисленный скаляр, окно сосредоточено о текущем элементе и содержит window-1
граничение с элементами. Если window
является четным, затем окно сосредоточено о текущих и предыдущих элементах.
Когда window
двухэлементный вектор из положительных целых чисел [b f]
, окно содержит текущий элемент, b
элементы назад и f
элементы вперед.
Когда A
расписание или 'SamplePoints'
задан как datetime
или duration
вектор, window
должен иметь тип duration
, и окна вычисляются относительно точек выборки.
Типы данных: double |
single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| duration
dim
— Размерность, которая задает направление расчетаВеличина для работы, заданная как положительный целый скаляр. Если значение не задано, то по умолчанию это первый размер массива, не равный 1.
Рассмотрите матричный A
.
filloutliers(A,fillmethod,1)
выбросы заливок согласно данным в каждом столбце.
filloutliers(A,fillmethod,2)
выбросы заливок согласно данным в каждой строке.
Когда A
таблица или расписание, dim
не поддерживается. filloutliers
действует вдоль каждой переменной таблицы или расписания отдельно.
Типы данных: double |
single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
filloutliers(A,'center','mean','ThresholdFactor',4)
SamplePoints
'SamplePoints' vartype
индексТочки выборки в виде разделенной запятой пары, состоящей из 'SamplePoints'
и или вектор из значений точки выборки или одна из опций в следующей таблице, когда входные данные таблица. Точки выборки представляют x - местоположения оси данных, и должны быть отсортированы и содержать уникальные элементы. Точки выборки не должны быть однородно произведены. Векторный [1 2 3 ...]
значение по умолчанию.
Когда входные данные являются таблицей, можно задать точки выборки как табличную переменную с помощью одной из следующих опций.
Опция для табличного входа | Описание | Примеры |
---|---|---|
Имя переменной | Вектор символов или скалярная строка, задающая одно имя табличной переменной |
|
Скалярный переменный индекс | Скалярный индекс табличной переменной | 3 |
Логический вектор | Логический вектор, элементы которого каждый соответствует табличной переменной, где |
|
Указатель на функцию | Указатель на функцию, который берет табличную переменную в качестве входа и возвращает логический скаляр, который должен быть |
|
vartype индекс | Табличный индекс, сгенерированный |
|
Примечание
Эта пара "имя-значение" не поддерживается, когда входными данными является timetable
. Расписания всегда используют вектор времен строки как точки выборки. Чтобы использовать различные точки выборки, необходимо отредактировать расписание так, чтобы времена строки содержали желаемые точки выборки.
Движущиеся окна заданы относительно точек выборки. Например, если t
вектор времен, соответствуя входным данным, затем filloutliers(rand(1,10),'previous','movmean',3,'SamplePoints',t)
имеет окно, которое представляет временной интервал между t(i)-1.5
и t(i)+1.5
.
Когда вектор точек выборки имеет тип данных datetime
или duration
, затем движущаяся длина окна должна иметь, вводят duration
.
Пример: filloutliers([1 100 3 4],'nearest','SamplePoints',[1 2.5 3 4])
filloutliers(T,'nearest','SamplePoints',"Var1")
Типы данных: single
| double
| datetime
| duration
DataVariables
— Табличные переменные, чтобы работать сvartype
индексТабличные переменные, чтобы работать с в виде разделенной запятой пары, состоящей из 'DataVariables'
и одна из опций в этой таблице. 'DataVariables'
значение указывает который переменные входной таблицы заполнить. Другие переменные в таблице, не заданной 'DataVariables'
передайте до выхода без управления.
Опция | Описание | Примеры |
---|---|---|
Имя переменной | Вектор символов или скалярная строка, задающая одно имя табличной переменной |
|
Вектор из имен переменных | Массив ячеек из символьных векторов или массив строк, где каждым элементом является имя табличной переменной |
|
Скаляр или вектор из переменных индексов | Скаляр или вектор из индексов табличной переменной | 1 [1 3 5] |
Логический вектор | Логический вектор, элементы которого каждый соответствует табличной переменной, где |
|
Указатель на функцию | Указатель на функцию, который берет табличную переменную в качестве входа и возвращает логический скаляр |
|
vartype индекс | Табличный индекс, сгенерированный |
|
Пример: filloutliers(A,'previous','DataVariables',["Var1" "Var2" "Var4"])
ThresholdFactor
— Пороговый фактор обнаруженияПороговый фактор обнаружения в виде разделенной запятой пары, состоящей из 'ThresholdFactor'
и неотрицательный скаляр.
Для методов 'median'
и 'movmedian'
, пороговый фактор обнаружения заменяет количество масштабированного MAD, который равняется 3 по умолчанию.
Для методов 'mean'
и 'movmean'
, пороговый фактор обнаружения заменяет количество стандартных отклонений от среднего значения, которое равняется 3 по умолчанию.
Для методов 'grubbs'
и 'gesd'
, пороговым фактором обнаружения является скаляр в пределах от от 0 до 1. Значения близко к 0 результатам в меньшем числе выбросов и значения близко к 1 результату в большем числе выбросов. Пороговый фактор обнаружения по умолчанию 0.05.
Для 'quartiles'
метод, пороговый фактор обнаружения заменяет количество межквартильных размахов, которое является 1.5 по умолчанию.
Эта пара "имя-значение" не поддерживается, когда заданным методом является 'percentiles'
.
Типы данных: double |
single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
MaxNumOutliers
— Максимальное количество выбросаМаксимальное количество выброса, для 'gesd'
метод только в виде разделенной запятой пары, состоящей из 'MaxNumOutliers'
и положительная скалярная величина. 'MaxNumOutliers'
значение задает максимальное количество выбросов, возвращенных 'gesd'
метод. Например, filloutliers(A,'linear','gesd','MaxNumOutliers',5)
возвращает не больше, чем пять выбросов.
Значение по умолчанию для 'MaxNumOutliers'
целое число, самое близкое к 10 процентам числа элементов в A
. Устанавливание большего значения для максимального количества выбросов может гарантировать, что все выбросы обнаруживаются, но за счет уменьшаемого вычислительного КПД.
Типы данных: double |
single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
OutlierLocations
— Известный индикатор выбросаИзвестный индикатор выброса в виде разделенной запятой пары, состоящей из 'OutlierLocations'
и логический вектор, матрица или многомерный массив одного размера с A
. Известными элементами индикатора выброса может быть true
указать на выброс в соответствующем месте A
или false
в противном случае. Определение 'OutlierLocations'
выключает метод определения выбросов по умолчанию и использует только элементы известного индикатора выброса, чтобы задать выбросы.
'OutlierLocations'
пара "имя-значение" не может быть задана когда findmethod
задан.
Выход TF
совпадает с 'OutlierLocations'
значение.
Типы данных: логический
B
— Заполненный массив выбросаЗаполненный массив выброса, возвращенный как вектор, матрица, многомерный массив, таблица или расписание. Элементы B
совпадают с теми из A
, но со всеми выбросами, замененными согласно fillmethod
.
Типы данных: double |
single
| table
| timetable
TF
— Индикатор OutlierИндикатор Outlier, возвращенный как вектор, матрица или многомерный массив. Элемент TF
true
когда соответствующий элемент A
выброс и false
в противном случае. TF
одного размера с A
.
Типы данных: логический
L
— Более низкий порогБолее низкий порог используется методом определения выбросов, возвращенным как скаляр, вектор, матрица, многомерный массив, таблица или расписание. Например, нижнее значение метода определения выбросов по умолчанию является тремя масштабируемыми MAD ниже медианы входных данных. L
имеет тот же размер как A
во всех размерностях за исключением операционной размерности, где длина равняется 1.
Типы данных: double |
single
| table
| timetable
U
— Верхний порогВерхний порог используется методом определения выбросов, возвращенным как скаляр, вектор, матрица, многомерный массив, таблица или расписание. Например, верхнее значение метода определения выбросов по умолчанию является тремя масштабируемыми MAD выше медианы входных данных. U
имеет тот же размер как A
во всех размерностях за исключением операционной размерности, где длина равняется 1.
Типы данных: double |
single
| table
| timetable
C
— Центральное значениеЦентральное значение используется методом определения выбросов, возвращенным как скаляр, вектор, матрица, многомерный массив, таблица или расписание. Например, центральное значение метода определения выбросов по умолчанию является медианой входных данных. C
имеет тот же размер как A
во всех размерностях за исключением операционной размерности, где длина равняется 1.
Типы данных: double |
single
| table
| timetable
Для вектора случайной переменной A составил из скалярных наблюдений N, среднее абсолютное отклонение (MAD) задано как
для i = 1,2,...,N.
Масштабированный MAD задан как c*median(abs(A-median(A)))
где c=-1/(sqrt(2)*erfcinv(3/2))
.
Указания и ограничения по применению:
'percentiles'
, 'grubs'
, и 'gesd'
методы не поддерживаются.
'movmedian'
и 'movmean'
методы не поддерживают длинные расписания.
'SamplePoints'
и 'MaxNumOutliers'
пары "имя-значение" не поддерживаются.
Значение 'DataVariables'
не может быть указатель на функцию.
Расчет filloutliers(A,fillmethod)
, filloutliers(A,fillmethod,'median',…)
или filloutliers(A,fillmethod,'quartiles',…)
по первому измерению только поддерживается когда A
высокий вектор-столбец.
Синтаксисы filloutliers(A,'spline',…)
и filloutliers(A,'makima',…)
не поддерживаются.
Для получения дополнительной информации см. Раздел "Высокие массивы".
Указания и ограничения по применению:
'movmean'
и 'movmedian'
методы для обнаружения выбросов не поддерживают входные данные расписания, datetime 'SamplePoints'
значения или длительность 'SamplePoints'
значения.
Только 'center'
, 'clip'
, и методы числового скаляра для заполнения выбросов поддерживаются, когда входные данные являются расписанием или когда 'SamplePoints'
значение имеет, вводят datetime
или duration
.
Использовать 'spline'
и 'pchip'
методы заполнения, необходимо включить поддержку массивов переменного размера.
Строка и входные параметры символьного массива должны быть постоянными.
'makima'
опции не поддерживаются.
backgroundPool
или ускорьте код с Parallel Computing Toolbox™ ThreadPool
.Эта функция полностью поддерживает основанные на потоке среды. Для получения дополнительной информации смотрите функции MATLAB Запуска в Основанной на потоке Среде.
rmoutliers
| isoutlier
| ismissing
| fillmissing
| Чистые данные о выбросе
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.