Обнаружение и замена выбросов в данных
находит выбросы в 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
. The 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
. The 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
- Входные данныеВходные данные, заданные как вектор, матрица, многомерный массив, таблица или timetable.
Если A
является таблицей, тогда ее переменные должны быть типа double
или single
, или можно использовать 'DataVariables'
Пара "имя-значение" в список double
или single
переменные явно. Установка переменных полезна при работе с таблицей, которая содержит переменные с типами данных, отличными от double
или single
.
Если A
является расписанием, тогда filloutliers
работает только с элементами таблицы. Значения времени строк должны быть уникальными и указываться в порядке возрастания.
Типы данных: double
| single
| table
| timetable
fillmethod
- Метод заливки'center'
| 'clip'
| 'previous'
| 'next'
| 'nearest'
| 'linear'
| 'spline'
| 'pchip'
| 'makima'
Метод заливки для замены выбросов, заданный как числовой скаляр или один из следующих:
Метод заливки | Описание |
---|---|
Числовой скаляр | Заполняет заданным скалярным значением |
'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' | Выбросы обнаруживаются с помощью обобщенного экстремального девиантного теста на выбросы. Этот итерационный метод похож на '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'
и вектор. Точки выборки представляют x местоположения данных в осях A
, и должен быть отсортирован и содержать уникальные элементы. Точки выборки не нужно равномерно отбирать. Вектор точек выборки по умолчанию [1 2 3 ...]
.
Примечание
Эта пара "имя-значение" не поддерживается, когда входные данные являются timetable
. В Timetables всегда используется вектор времени строки в качестве точек выборки. Чтобы использовать различные точки выборки, необходимо отредактировать расписание так, чтобы время в строке содержало требуемые точки выборки.
Движущиеся окна заданы относительно точек выборки. Для примера, если 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])
Типы данных: single
| double
| datetime
| duration
'DataVariables'
- Табличные переменные для работыvartype
индексТабличные переменные для работы, заданные как разделенная разделенными запятой парами, состоящая из 'DataVariables'
и один из опций в этой таблице. The 'DataVariables'
значение указывает, какие переменные входы таблицы необходимо заполнить. Другие переменные в таблице, не заданные 'DataVariables'
пройти к выходу без работы.
Опция | Описание | Примеры |
---|---|---|
Имя переменной | Вектор символов или скалярная строка, задающая имя табличной переменной |
|
Вектор имен переменных | Массив ячеек из векторов символов или строковых массивов, где каждый элемент является именем табличной переменной |
|
Скаляр или вектор переменных индексов | Скаляр или вектор табличных переменных |
|
Логический вектор | Логический вектор, элементы которого каждый соответствуют табличной переменной, где |
|
Указатель на функцию | Указатель на функцию, который принимает табличную переменную как вход и возвращает логический скаляр |
|
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'
и положительная скалярная величина. The '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'
отключает метод обнаружения выбросов по умолчанию и использует только элементы известного индикатора выбросов для определения выбросов.
The 'OutlierLocations'
пара "имя-значение" не может быть задана, когда findmethod
задан.
Область выхода TF
является тем же самым, что и 'OutlierLocations'
значение.
Типы данных: logical
B
- Заполненный массив выбросовЗаполненный массив выбросов, возвращенный в виде вектора, матрицы, многомерного массива, таблицы или timetable. Элементы B
те же, что и у A
, но со всеми выбросами заменены согласно fillmethod
.
Типы данных: double
| single
| table
| timetable
TF
- Индикатор выбросовИндикатор выбросов, возвращенный как векторный, матричный или многомерный массив. Элемент TF
является true
когда соответствующий элемент A
являются выбросы и false
в противном случае. TF
- тот же размер, что и A
.
Типы данных: logical
L
- Нижний порогБолее низкий порог, используемый методом определения выбросов, возвращается в виде скаляра, вектора, матрицы, многомерного массива, таблицы или timetable. Для примера нижнее значение метода определения выбросов по умолчанию является тремя масштабированными MAD ниже медианы входных данных. L
имеет тот же размер, что и A
во всех размерностях, кроме рабочего размера, где длина равна 1.
Типы данных: double
| single
| table
| timetable
U
- Верхний порогВерхний порог, используемый методом определения выбросов, возвращается в виде скаляра, вектора, матрицы, многомерного массива, таблицы или timetable. Для примера верхнее значение метода определения выбросов по умолчанию является тремя масштабированными MAD над медианой входных данных. U
имеет тот же размер, что и A
во всех размерностях, кроме рабочего размера, где длина равна 1.
Типы данных: double
| single
| table
| timetable
C
- Центральное значениеЦентральное значение, используемое методом определения выбросов, возвращается в виде скаляра, вектора, матрицы, многомерного массива, таблицы или timetable. Для примера центральное значение метода определения выбросов по умолчанию является медианой входных данных. 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))
.
Указания и ограничения по применению:
The 'percentiles'
, 'grubs'
, и 'gesd'
методы не поддерживаются.
The 'movmedian'
и 'movmean'
методы не поддерживают длинные расписания.
The 'SamplePoints'
и 'MaxNumOutliers'
пары "имя-значение" не поддерживаются.
Значение 'DataVariables'
не может быть указателем на функцию.
Расчет filloutliers(A,fillmethod)
, filloutliers(A,fillmethod,'median',…)
или filloutliers(A,fillmethod,'quartiles',…)
вдоль первой размерности поддерживается только тогда, когда A
- высокий вектор-столбец.
Синтаксис filloutliers(A,'spline',…)
и filloutliers(A,'makima',…)
не поддерживаются.
Для получения дополнительной информации см. Раздел «Длинные массивы»
Указания и ограничения по применению:
The 'movmean'
и 'movmedian'
методы обнаружения выбросов не поддерживают входные данные расписания, datetime 'SamplePoints'
значения или длительность 'SamplePoints'
значения.
Только 'center'
, 'clip'
, и числовые скалярные методы для заполнения выбросов поддерживаются, когда входные данные являются расписанием или когда 'SamplePoints'
Значение имеет тип datetime
или duration
.
Как использовать 'spline'
и 'pchip'
методы заливки, необходимо включить поддержку массивов переменного размера.
Входы строкового и символьных массивов должны быть постоянными.
The 'makima'
опции не поддерживаются.
Чистые данные о выбросах | fillmissing
| ismissing
| isoutlier
| rmoutliers
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.