Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

일관되지 않은 데이터

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

다음 예제에서는 24×3 행렬 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 행렬의 두 번째 차원, 즉 열을 따라 아래로 내려가면서 작업을 수행하도록 지정합니다.