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

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

свернуть все

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

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

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

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

'Var1'

"Var1"

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

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

3

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

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

[true false false]

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

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

@isnumeric

vartype индекс

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

vartype('numeric')

Примечание

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

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

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

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

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

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