Когда вы исследуете график данных, вы можете найти, что некоторые точки, кажется, отличаются существенно от остальной части данных. В некоторых случаях разумно рассмотреть такие выбросы точек или значения данных, которые, кажется, противоречивы с остальной частью данных.
Следующий пример иллюстрирует, как удалить выбросы из трех наборов данных в 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
работает вниз второе измерение матрицы количества — ее столбцы.