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