exponenta event banner

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

Примеры

свернуть все

Найдите отклонения в векторе данных. Логический 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.

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

свернуть все

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

Если 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. Этот метод также известен как фильтр Хампеля.
'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. В расписаниях всегда используется вектор времени строки в качестве точек выборки. Чтобы использовать различные точки выборки, необходимо отредактировать расписание так, чтобы время строки содержало нужные точки выборки.

Движущиеся окна определяются относительно точек образца. Например, если 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' и один из вариантов в этой таблице. '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

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

свернуть все

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

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

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

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

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

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

.
Представлен в R2017a