exponenta event banner

rmoutliers

Обнаружение и удаление отклонений в данных

Описание

пример

B = rmoutliers(A) обнаруживает и удаляет отклонения из данных в векторе, матрице, таблице или расписании.

  • Если A - вектор строки или столбца, rmoutliers обнаруживает отклонения и удаляет их.

  • Если A - матрица, таблица или расписание, rmoutliers обнаруживает отклонения в каждом столбце или переменной A отдельно и удаляет всю строку.

По умолчанию отклонение представляет собой значение, превышающее три масштабированных средних абсолютных отклонения (MAD).

пример

B = rmoutliers(A,method) задает метод определения отклонений. Например, rmoutliers(A,'mean') определяет отклонение как элемент A более трех стандартных отклонений от среднего значения.

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

пример

B = rmoutliers(A,movmethod,window) задает способ перемещения для обнаружения локальных отклонений в соответствии с заданным окном. Например, rmoutliers(A,'movmean',5) определяет отклонения как элементы с более чем тремя локальными стандартными отклонениями от локального среднего значения в пятиэлементном окне.

пример

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

пример

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

пример

[B,TF] = rmoutliers(___) также возвращает логический вектор, соответствующий строкам или столбцам A которые были удалены.

Примеры

свернуть все

Создайте вектор, содержащий два отклонения, и удалите их. TF позволяет определить, какие элементы входного вектора были обнаружены как отклонения и удалены.

A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];
[B,TF] = rmoutliers(A)
B = 1×13

    57    59    60    59    58    57    58    61    62    60    62    58    57

TF = 1x15 logical array

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

A(TF)
ans = 1×2

   100   300

Удаление отклонений вектора, где отклонение определяется как точка, превышающая три стандартных отклонения от среднего значения данных.

A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];
[B,TF] = rmoutliers(A,'mean')
B = 1×14

    57    59    60   100    59    58    57    58    61    62    60    62    58    57

TF = 1x15 logical array

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

A(TF)
ans = 300

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

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 часа и удалите их.

[B,TF] = rmoutliers(A,'movmedian',hours(5),'SamplePoints',t);

Постройте график входных данных и данных с удаленным отклонением.

plot(t,A,'b.-',t(~TF),B,'r-')
legend('Input Data','Output Data')

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

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

A = magic(5);
A(4,4) = 500;
A(5,5) = 500;
A
A = 5×5

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19   500     3
    11    18    25     2   500

B = rmoutliers(A,2)
B = 5×3

    17    24     1
    23     5     7
     4     6    13
    10    12    19
    11    18    25

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

свернуть все

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

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

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

МетодОписание
'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', но может работать лучше, когда существует несколько отклонений, маскирующих друг друга.

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

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

МетодОписание
'movmedian'Отклонения определяются как элементы с более чем тремя локальными масштабированными MAD из локальной медианы по длине окна, заданной window. Этот метод также известен как фильтр Хампеля.
'movmean'Отклонения определяются как элементы с более чем тремя локальными стандартными отклонениями от локального среднего значения по длине окна, указанной window.

Длина окна, заданная как скалярный или двухэлементный вектор.

Когда window является положительным целым скаляром, окно центрировано относительно текущего элемента и содержит window-1 соседние элементы. Если window является четным, то окно центрировано относительно текущего и предыдущего элементов.

Когда window - двухэлементный вектор положительных целых чисел [b f], окно содержит текущий элемент, b элементы назад, и f элементы вперед.

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

Рабочий размер, заданный как 1 или 2. По умолчанию rmoutliers работает вдоль первого размера, размер которого не равен 1.

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

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

Пример: rmoutliers(A,'ThresholdFactor',4)
Параметры данных

свернуть все

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

Примечание

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

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

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

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

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

Переменные таблицы для работы, указанные как пара, разделенная запятыми, состоящая из 'DataVariables' и один из вариантов в этой таблице. 'DataVariables' значение указывает, какие переменные входной таблицы необходимо проверить на наличие отклонений. Другие переменные в таблице, не указанные 'DataVariables' пройти к выходу без проверки на отклонения. При работе со строками A, rmoutliers удаляет любую строку с отклонениями в столбцах, соответствующих указанным переменным. При работе на столбцах A, rmoutliers удаляет указанные переменные из таблицы.

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

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

'Var1'

"Var1"

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

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

{'Var1' 'Var2'}

["Var1" "Var2"]

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

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

1

[1 3 5]

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

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

[true false true]

Дескриптор функции

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

@isnumeric

vartype нижний индекс

Подстрочный индекс таблицы, созданный vartype функция

vartype('numeric')

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

Параметры обнаружения отклонений

свернуть все

Пороговый коэффициент обнаружения, указанный как пара, разделенная запятыми, состоящая из 'ThresholdFactor' и неотрицательный скаляр.

Для методов 'median' и 'movmedian'пороговый коэффициент обнаружения заменяет число масштабированных MAD, которое по умолчанию равно 3.

Для методов 'mean' и 'movmean'пороговый коэффициент обнаружения заменяет количество стандартных отклонений от среднего значения, которое по умолчанию равно 3.

Для методов 'grubbs' и 'gesd', пороговый коэффициент обнаружения является скаляром в диапазоне от 0 до 1. Значения, близкие к 0, приводят к меньшему числу отклонений, а значения, близкие к 1, приводят к большему числу отклонений. Пороговый коэффициент обнаружения по умолчанию равен 0,05.

Для 'quartile' пороговый коэффициент обнаружения заменяет количество межквартильных диапазонов, которое по умолчанию равно 1,5.

Эта пара имя-значение не поддерживается, если указан метод 'percentiles'.

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

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

Минимальное число отклонений, указанное как пара, разделенная запятыми, состоящая из 'MinNumOutliers' и положительный скаляр. 'MinNumOutliers' значение указывает минимальное число отклонений, необходимое для удаления строки или столбца. Например, rmoutliers(A,'MinNumOutliers',3) удаляет строку матрицы, A при обнаружении 3 или более отклонений в этом столбце.

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

свернуть все

Данные с удаленными отклонениями, возвращенные в виде вектора, матрицы, таблицы или расписания. Размер B зависит от количества удаленных строк или столбцов.

Удаленный индикатор данных, возвращенный как логический вектор. Значение 1 (true) соответствует строкам или столбцам в A которые были удалены. Значение 0 (false) соответствует неизмененным строкам или столбцам. Ориентация и размер TF зависит от A и аспект деятельности.

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

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