이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

일관되지 않은 데이터

데이터 플롯을 검토하다 보면 나머지 데이터와 크게 차이가 나는 점을 발견할 때가 있습니다. 경우에 따라 이러한 점을 이상값, 즉 나머지 데이터와 일관되지 않아 보이는 데이터 값으로 간주할 수 있습니다.

다음 예제에서는 24x3 행렬 count에 있는 데이터 세트 세 개에서 이상값을 제거하는 방법을 보여줍니다. 여기에서 이상값은 평균으로부터 3 표준편차보다 더 떨어져 있는 값으로 정의됩니다.

주의

바로잡으려는 이상값 문제의 원인을 잘 알고 있다고 확신하지 않는 한 데이터를 변경하는 데 신중해야 합니다. 이상값을 제거하면 데이터의 평균보다 표준편차가 더 큰 영향을 받습니다. 이러한 점을 하나 삭제하면 새 표준편차는 더 작아지며, 이로 인해 나머지 점들 중에 이상값처럼 보이는 것이 생길 수 있습니다.

% 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

이상값을 평균으로부터 3 표준편차보다 더 떨어진 값으로 간주할 경우, 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의 첫 번째 데이터 열에 이상값이 1개 있고, 다른 두 열에는 이상값이 없습니다.

이상값이 포함된 데이터의 행 전체를 제거하려면 다음을 입력하십시오.

count(any(outliers,2),:) = [];

여기서, any(outliers,2)outliers 벡터의 요소 중 하나라도 0이 아니면 1을 반환합니다. 인수 2any가 count 행렬의 두 번째 차원, 즉 열을 따라 아래로 내려가면서 작업을 수행하도록 지정합니다.