Когда вы исследуете график данных, можно обнаружить, что некоторые точки, по-видимому, сильно отличаются от остальных данных. В некоторых случаях разумно учитывать такие выбросы точек или значения данных, которые, по-видимому, не соответствуют остальным данным.
Следующий пример иллюстрирует, как удалить выбросы из трех наборов данных в матрице 24 на 3 count
. В этом случае выброс определяется как значение, которое более чем на три стандартных отклонения от среднего.
Внимание
Будьте осторожны с изменением данных, если вы не уверены, что понимаете источник проблемы, которую вы хотите исправить. Удаление выбросов оказывает больший эффект на стандартное отклонение, чем на среднее значение данных. Удаление одной такой точки приводит к меньшему новому стандартному отклонению, что может привести к тому, что некоторые оставшиеся точки кажутся ненужными!
% Import the sample data load count.dat; % Calculate the mean and the standard deviation % of each data column in the matrix mu = mean(count) sigma = std(count)
Командное окно отображений
mu = 32.0000 46.5417 65.5833 sigma = 25.3703 41.4057 68.0281
Когда выброс рассматривается как более чем три стандартных отклонений от среднего, используйте следующий синтаксис, чтобы определить количество выбросов в каждом столбце count
матрица:
[n,p] = size(count); % Create a matrix of mean values by % replicating the mu vector for n rows MeanMat = repmat(mu,n,1); % Create a matrix of standard deviation values by % replicating the sigma vector for n rows SigmaMat = repmat(sigma,n,1); % Create a matrix of zeros and ones, where ones indicate % the location of outliers outliers = abs(count - MeanMat) > 3*SigmaMat; % Calculate the number of outliers in each column nout = sum(outliers)
Процедура возвращает следующее количество выбросов в каждом столбце:
nout = 1 0 0
В первом столбце данных count
есть один выброс и нет в двух других столбцах.
Чтобы удалить целую строку данных, содержащих выбросы, введите
count(any(outliers,2),:) = [];
Здесь, any(outliers,2)
возвращает 1
когда любой из элементов в outliers
вектор ненулевые. Аргумент 2
определяет, что any
работает вниз по второму измерению матрицы count - ее столбцам.