isoutlier

Найти выбросы в данных

Описание

пример

TF = isoutlier(A) возвращает логический массив, элементы которого true когда выбросы обнаруживаются в соответствующем элементе A. По умолчанию выбросы являются значением, которое более чем на три масштабированных медианных абсолютных отклонения (MAD) от медианы. Если A является матрицей или таблицей, затем isoutlier работает с каждым столбцом отдельно. Если A является многомерным массивом, затем isoutlier действует вдоль первой размерности, размер которого не равен 1.

пример

TF = isoutlier(A,method) задает метод для обнаружения выбросов. Для примера, isoutlier(A,'mean') возвращает true для всех элементов более трех стандартных отклонений от среднего.

TF = isoutlier(A,'percentiles',threshold) определяет выбросы как точки вне процентилей, указанных в threshold. The threshold аргумент является двухэлементным вектором-строкой, содержащим нижний и верхний пороги процентиля, такие как [10 90].

пример

TF = isoutlier(A,movmethod,window) задает метод перемещения для обнаружения локальных выбросов в соответствии с длиной окна, заданной как window. Для примера, isoutlier(A,'movmedian',5) возвращает true для всех элементов более трех локальных масштабированных MAD из локальной медианы в скользящем окне, содержащем пять элементов.

пример

TF = isoutlier(___,dim) действует вдоль размерной dim от A для любого из предыдущих синтаксисов. Для примера, isoutlier(A,2) действует с каждой строкой матрицы A.

пример

TF = isoutlier(___,Name,Value) задает дополнительные параметры для обнаружения выбросов с помощью одного или нескольких аргументов пары "имя-значение". Для примера, isoutlier(A,'SamplePoints',t) обнаруживает выбросы в A относительно соответствующих элементов массива временного вектора t.

пример

[TF,L,U,C] = isoutlier(___) также возвращает нижний и верхний пороги и центральное значение, используемое методом определения выбросов.

Примеры

свернуть все

Найдите выбросы в векторе данных. Логический элемент 1 в выходах указывает местоположение выбросов.

A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];
TF = isoutlier(A)
TF = 1x15 logical array

   0   0   0   1   0   0   0   0   1   0   0   0   0   0   0

Задайте выбросы как точки более чем на три стандартных отклонения от среднего и найдите местоположения выбросов в векторе.

A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];
TF = isoutlier(A,'mean')
TF = 1x15 logical array

   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0

Создайте вектор данных, содержащий локальные выбросы.

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 часов. Постройте график данных и обнаруженных выбросов.

TF = isoutlier(A,'movmedian',hours(5),'SamplePoints',t);
plot(t,A,t(TF),A(TF),'x')
legend('Data','Outlier')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Data, Outlier.

Найдите выбросы для каждой строки матрицы.

Создайте матрицу данных, содержащую выбросы по диагонали.

A = magic(5) + diag(200*ones(1,5))
A = 5×5

   217    24     1     8    15
    23   205     7    14    16
     4     6   213    20    22
    10    12    19   221     3
    11    18    25     2   209

Найдите местоположения выбросов на основе данных в каждой строке.

TF = isoutlier(A,2)
TF = 5x5 logical array

   1   0   0   0   0
   0   1   0   0   0
   0   0   1   0   0
   0   0   0   1   0
   0   0   0   0   1

Создайте вектор данных, содержащий выбросы. Найдите и постройте график местоположения выбросов, и пороги и значение центра, определяемые методом выбросов. Центральное значение является медианой данных, а верхний и нижний пороги - тремя масштабированными MAD выше и ниже медианы.

x = 1:10;
A = [60 59 49 49 58 100 61 57 48 58];
[TF,L,U,C] = isoutlier(A);
plot(x,A,x(TF),A(TF),'x',x,L*ones(1,10),x,U*ones(1,10),x,C*ones(1,10))
legend('Original Data','Outlier','Lower Threshold','Upper Threshold','Center Value')

Figure contains an axes. The axes contains 5 objects of type line. These objects represent Original Data, Outlier, Lower Threshold, Upper Threshold, Center Value.

Входные параметры

свернуть все

Входные данные, заданные как вектор, матрица, многомерный массив, таблица или timetable.

Если A является таблицей, тогда ее переменные должны быть типа double или single, или можно использовать 'DataVariables' Пара "имя-значение" в список double или single переменные явно. Установка переменных полезна при работе с таблицей, которая содержит переменные с типами данных, отличными от double или single.

Если A является расписанием, тогда isoutlier работает только с элементами таблицы. Значения времени строк должны быть уникальными и указываться в порядке возрастания.

Типы данных: double | single | table | timetable

Метод обнаружения выбросов, заданный как один из следующих:

МетодОписание
'median'Возвращает true для элементов с более чем тремя масштабированными MAD от медианы. Масштабированный MAD задан как c*median(abs(A-median(A))), где c=-1/(sqrt(2)*erfcinv(3/2)).
'mean'Возвращает true для элементов более чем на три стандартных отклонения от среднего. Этот метод быстрее, но менее надежен, чем 'median'.
'quartiles'Возвращает true для элементов более 1,5 межквартильные области значений выше верхнего квартиля или ниже нижнего квартиля. Этот метод полезен, когда данные в A обычно не распределяется.
'grubbs'Применяет тест Груббса на выбросы, который удаляет один выброс за итерацию на основе проверки гипотезы. Этот метод принимает, что данные в A обычно распределяется.
'gesd'Применяет обобщенный экстремальный критерий отклонения Studentized для выбросов. Этот итерационный метод похож на 'grubbs', но может работать лучше, когда есть несколько выбросов, маскирующих друг друга.

Пороги процентиля, заданные как двухэлементный вектор-строка, элементы которого находятся в интервале [0,100]. Первый элемент указывает нижний порог процентиля, а второй элемент указывает верхний порог процентиля. Для примера - порог [10 90] определяет выбросы как точки ниже 10-го процентиля и выше 90-го процентиля. Первый элемент threshold должен быть меньше второго элемента.

Метод перемещения для обнаружения выбросов, заданный как один из следующих:

МетодОписание
'movmedian'Возвращает true для элементов с более чем тремя локальными масштабами MAD из локальной медианы по длине окна, заданной как window. Этот метод также известен как Hampel filter.
'movmean'Возвращает true для элементов более чем на три локальных стандартных отклонения от локального среднего по длине окна, заданной 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

Размерность для работы, заданная как положительный целочисленный скаляр Если значение не задано, то по умолчанию это первое измерение массива, не равный 1.

Рассмотрим матрицу A.

isoutlier(A,1) обнаруживает выбросы на основе данных в каждом столбце A.

isoutlier(A,2) обнаруживает выбросы на основе данных в каждой строке A.

Когда A является таблицей или расписанием, dim не поддерживается. isoutlier работает с каждой таблицей или переменной расписания отдельно.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: isoutlier(A,'mean','ThresholdFactor',4)
Опции данных

свернуть все

Точки выборки, заданные как разделенная разделенными запятой парами, состоящая из 'SamplePoints' и вектор. Точки выборки представляют x местоположения данных в осях A, и должен быть отсортирован и содержать уникальные элементы. Точки выборки не нужно равномерно отбирать. Вектор точек выборки по умолчанию [1 2 3 ...].

Примечание

Эта пара "имя-значение" не поддерживается, когда входные данные являются timetable. В Timetables всегда используется вектор времени строки в качестве точек выборки. Чтобы использовать различные точки выборки, необходимо отредактировать расписание так, чтобы время в строке содержало требуемые точки выборки.

Движущиеся окна заданы относительно точек выборки. Для примера, если t является вектором времени, соответствующим входным данным, затем isoutlier(rand(1,10),'movmean',3,'SamplePoints',t) имеет окно, которое представляет временной интервал между t(i)-1.5 и t(i)+1.5.

Когда вектор точек выборки имеет тип данных datetime или duration, тогда длина окна должна иметь тип duration.

Пример: isoutlier(T,'SamplePoints',0:0.1:10)

Типы данных: single | double | datetime | duration

Табличные переменные для работы, заданные как разделенная разделенными запятой парами, состоящая из 'DataVariables' и один из опций в этой таблице. The 'DataVariables' значение указывает, какие переменные таблицы входа необходимо изучить на выбросы. Тип данных, сопоставленный с указанными переменными, должен быть double или single. Другие переменные в таблице, не заданные 'DataVariables' не работают, поэтому выходы содержат false значения для этих переменных.

ОпцияОписаниеПримеры
Имя переменной

Вектор символов или скалярная строка, задающая имя табличной переменной

'Var1'

"Var1"

Вектор имен переменных

Массив ячеек из векторов символов или строковых массивов, где каждый элемент является именем табличной переменной

{'Var1' 'Var2'}

["Var1" "Var2"]

Скаляр или вектор переменных индексов

Скаляр или вектор табличных переменных

1

[1 3 5]

Логический вектор

Логический вектор, элементы которого каждый соответствуют табличной переменной, где true включает соответствующую переменную и false исключает его

[true false true]

Указатель на функцию

Указатель на функцию, который принимает табличную переменную как вход и возвращает логический скаляр

@isnumeric

vartype индекс

Индекс таблицы, сгенерированный vartype функция

vartype('numeric')

Пример: isoutlier(T,'DataVariables',["Var1" "Var2" "Var4"])

Опции определения выбросов

свернуть все

Пороговый коэффициент обнаружения, заданный как разделенная разделенными запятой парами, состоящая из '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

Максимальное количество выбросов для 'gesd' только метод, заданный как разделенная разделенными запятой парами, состоящая из 'MaxNumOutliers' и положительное целое число. The 'MaxNumOutliers' значение задает максимальное количество выбросов, возвращаемых 'gesd' способ. Для примера, isoutlier(A,'gesd','MaxNumOutliers',5) возвращает не более пяти выбросов.

Значение по умолчанию для 'MaxNumOutliers' - целое число, самое близкое к 10 процентам от количества элементов в A. Установка большего значения для максимального количества выбросов может гарантировать, что все выбросы будут обнаружены, но за счет снижения вычислительной эффективности.

The 'gesd' метод предполагает, что неиспускаемые входные данные отбираются из приблизительного нормального распределения. Когда данные не дискретизированы таким образом, количество возвращенных выбросов может превысить 'MaxNumOutliers' значение.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Выходные аргументы

свернуть все

Индикатор выбросов, возвращенный как векторный, матричный или многомерный массив. Элемент TF является true когда соответствующий элемент A являются выбросы и false в противном случае. TF - тот же размер, что и A.

Типы данных: logical

Более низкий порог, используемый методом определения выбросов, возвращается в виде скаляра, вектора, матрицы, многомерного массива, таблицы или timetable. Для примера нижнее значение метода определения выбросов по умолчанию является тремя масштабированными MAD ниже медианы входных данных. L имеет тот же размер, что и A во всех размерностях, кроме рабочего размера, где длина равна 1.

Типы данных: double | single | table | timetable

Верхний порог, используемый методом определения выбросов, возвращается в виде скаляра, вектора, матрицы, многомерного массива, таблицы или timetable. Для примера верхнее значение метода определения выбросов по умолчанию является тремя масштабированными MAD над медианой входных данных. U имеет тот же размер, что и A во всех размерностях, кроме рабочего размера, где длина равна 1.

Типы данных: double | single | table | timetable

Центральное значение, используемое методом определения выбросов, возвращается в виде скаляра, вектора, матрицы, многомерного массива, таблицы или timetable. Для примера центральное значение метода определения выбросов по умолчанию является медианой входных данных. C имеет тот же размер, что и A во всех размерностях, кроме рабочего размера, где длина равна 1.

Типы данных: double | single | table | timetable

Подробнее о

свернуть все

Срединное абсолютное отклонение

Для векторной A со случайными переменными, составленной из N скалярных наблюдений, среднее абсолютное отклонение (MAD) определяется как

MAD = median(|Aimedian(A)|)

для i = 1,2,...,N.

Масштабированный MAD задан как c*median(abs(A-median(A))) где c=-1/(sqrt(2)*erfcinv(3/2)).

Расширенные возможности

.
Введенный в R2017a
Для просмотра документации необходимо авторизоваться на сайте