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. 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(___) также возвращает более низкие и верхние пороги и центральное значение, используемое методом определения выбросов.

Примеры

свернуть все

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

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 object. The axes object 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 object. The axes object contains 5 objects of type line. These objects represent Original Data, Outlier, Lower Threshold, Upper Threshold, Center Value.

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

свернуть все

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

Если 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 имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

свернуть все

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

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

Опция для табличного входаОписаниеПримеры
Имя переменной

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

'Var1'

"Var1"

Скалярный переменный индекс

Скалярный индекс табличной переменной

3

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

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

[true false false]

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

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

@isnumeric

vartype индекс

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

vartype('numeric')

Примечание

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

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

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

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

Пример: isoutlier(T,'SamplePoints',"Var1")

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

Табличные переменные, чтобы работать с в виде разделенной запятой пары, состоящей из 'DataVariables' и одна из опций в этой таблице. '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' и положительное целое число. 'MaxNumOutliers' значение задает максимальное количество выбросов, возвращенных 'gesd' метод. Например, isoutlier(A,'gesd','MaxNumOutliers',5) возвращает не больше, чем пять выбросов.

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

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

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

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

свернуть все

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

Типы данных: логический

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

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

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

Типы данных: double | single | table | 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