rmoutliers

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

Синтаксис

B = rmoutliers(A)
B = rmoutliers(A,method)
B = rmoutliers(A,movmethod,window)
B = rmoutliers(___,dim)
B = rmoutliers(___,Name,Value)
[B,TF] = rmoutliers(___)

Описание

пример

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

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

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

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

пример

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

пример

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')

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

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

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

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

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

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

Пример: rmoutliers (A, 'ThresholdFactor', 4)

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

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

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

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

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

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

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

Типы данных: единственный | удваиваются | datetime | длительность

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

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

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

  • Вектор индексов табличной переменной

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

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

Пример: 'Возраст'

Пример: {'Высота', 'Вес'}

Пример: isnumeric

Типы данных: char | ячейка | удваивается | единственный | логический | function_handle

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

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

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

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

свернуть все

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

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

Больше о

свернуть все

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

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

MAD = медиана (|Ai−median (A) |)

поскольку i = 1,2... N.

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

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

Представленный в R2018b

Была ли эта тема полезной?