Несогласованные данные

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

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

Для просмотра документации необходимо авторизоваться на сайте