Когда вы исследуете график данных, вы можете найти, что некоторые точки, кажется, отличаются существенно от остальной части данных. В некоторых случаях разумно рассмотреть такие выбросы точек или значения данных, которые, кажется, противоречивы с остальной частью данных.
Следующий пример иллюстрирует, как удалить выбросы из трех наборов данных в матрице 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
Существует один выброс в столбце First Data count
и ни один в других двух столбцах.
Чтобы удалить целую строку данных, содержащих выброс, ввести
count(any(outliers,2),:) = [];
Здесь, any(outliers,2)
возвращает 1
когда любой из элементов в outliers
вектор является ненулевым. Аргумент 2
задает это any
работает вниз второе измерение матрицы count — ее столбцы.