Main Content

이상값 제거하기

대화형 방식으로 이상값 제거하기

곡선 피팅기 앱에서 이상값을 제거하려면 다음 단계를 따르십시오.

  1. 플롯 좌표축 도구 모음에서 이상값 제외 버튼 을 클릭합니다.

    마우스 커서를 플롯 위로 이동하면 커서가 십자 모양으로 바뀌어서 현재 이상값 선택 모드에 있음을 보여줍니다.

  2. 피팅 플롯 또는 잔차 플롯에서 제외하려는 점을 클릭합니다. 또는 클릭하고 끌어서 사각형을 정의하고 여기에 포함된 모든 점을 제거합니다.

    제거된 플롯 점은 플롯에서 빨간색 십자로 표시됩니다. 곡선 피팅기 탭의 피팅 섹션에서 자동 피팅이 선택되어 있는 경우, 곡선 피팅기 앱은 해당 점 없이 곡면을 다시 피팅합니다. 또는 수동 피팅을 선택한 경우 피팅을 클릭하여 다시 피팅할 수 있습니다.

  3. 제외하려는 모든 점에 대해 이 과정을 반복합니다.

곡면 피팅에서 이상값을 제거할 때는 이상값의 검토 및 제거를 위해 2차원 잔차 플롯을 표시하는 것이 도움이 될 수 있습니다. 플롯 커서가 회전 모드에 있는 상태에서 플롯을 마우스 오른쪽 버튼으로 클릭하여 X-Y 보기로 이동, X-Z 보기로 이동 또는 Y-Z 보기로 이동을 선택합니다.

피팅에 있는 각각의 제외된 점을 개별적으로 바꾸려면 이상값 선택 모드(즉, 좌표축 도구 모음에서 이상값 제외 버튼이 켜진 상태)에서 제외된 점을 다시 클릭하십시오. 피팅에 있는 모든 제외된 점을 바꾸려면 마우스 오른쪽 버튼을 클릭하고 모든 제외 데이터 지우기를 선택하십시오.

곡면 플롯에서, 회전 모드로 돌아가려면 이상값 제외 버튼을 다시 클릭하여 이상값 선택 모드를 끕니다.

데이터 범위 제외하기

곡선 피팅기 앱에서 범위를 기준으로 데이터 섹션을 제외하려면 다음 단계를 따르십시오.

  1. 곡선 피팅기 탭의 데이터 섹션에서 제외 규칙을 클릭합니다.

  2. 제외 규칙 대화 상자에서 제외할 데이터를 지정합니다. 각각의 상자에 숫자를 입력하여 X, Y 또는 Z 데이터에서 제외할 시작 또는 끝 구간을 정의합니다.

    곡선 피팅기 앱이 플롯에 음영이 적용된 분홍색 영역으로 제외된 범위를 표시합니다. 제외된 점은 빨간색으로 표시됩니다.

프로그래밍 방식으로 이상값 제거하기

이 예제에서는 프로그래밍 방식으로 곡선을 피팅할 때 fit 또는 fitoptions 함수의 'Exclude' 이름/값 쌍 인수를 사용하여 이상값을 제거하는 방법을 보여줍니다. plot 함수에 Exclude 또는 outliers 인수를 제공하여 제외된 데이터를 플로팅할 수 있습니다.

간단한 규칙을 사용하여 데이터 제외하기

간단한 예제로, 데이터를 불러와서 가우스 분포를 피팅하고, 표현식을 사용하여 일부 데이터를 제외합니다. 그런 다음 피팅, 데이터 및 제외된 점을 플로팅합니다.

[x, y] = titanium;
f1 = fit(x',y','gauss2','Exclude',x<800);
plot(f1,x,y,x<800)

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent data, excluded data, fitted curve.

모델로부터의 거리를 기준으로 데이터 제외하기

표준편차를 사용하여 모델로부터의 거리를 기준으로 이상값을 제외하는 것이 유용할 수 있습니다. 다음 예제에서는 모델로부터 1.5 표준편차보다 큰 거리를 사용하여 이상값을 식별하고, 이를 이상값에 보다 작은 가중치를 부여하는 로버스트 피팅과 비교합니다.

기준 정현파 신호를 만듭니다.

xdata = (0:0.1:2*pi)'; 
y0 = sin(xdata);

신호에 일정하지 않은 분산을 갖는 잡음을 추가합니다.

% Response-dependent Gaussian noise
gnoise = y0.*randn(size(y0));

% Salt-and-pepper noise
spnoise = zeros(size(y0)); 
p = randperm(length(y0));
sppoints = p(1:round(length(p)/5));
spnoise(sppoints) = 5*sign(y0(sppoints));

ydata = y0 + gnoise + spnoise;

잡음이 있는 데이터를 기준 정현파 모델로 피팅합니다.

f = fittype('a*sin(b*x)'); 
fit1 = fit(xdata,ydata,f,'StartPoint',[1 1]);

이상값을 기준 모델에서 1.5 표준편차보다 큰 거리에 있는 점으로 식별하고, 이상값을 제외한 상태에서 데이터를 다시 피팅합니다.

fdata = feval(fit1,xdata); 
I = abs(fdata - ydata) > 1.5*std(ydata); 
outliers = excludedata(xdata,ydata,'indices',I);

fit2 = fit(xdata,ydata,f,'StartPoint',[1 1],...
           'Exclude',outliers);

이상값을 제외하는 것의 효과와 로버스트 피팅에서 이상값에 보다 적은 겹제곱 가중치를 부여하는 것의 효과를 비교합니다.

fit3 = fit(xdata,ydata,f,'StartPoint',[1 1],'Robust','on');

데이터, 이상값 및 피팅의 결과를 플로팅합니다.

plot(fit1,'r-',xdata,ydata,'k.',outliers,'m*') 
hold on
plot(fit2,'c--')
plot(fit3,'b:')
xlim([0 2*pi])

Figure contains an axes object. The axes object contains 5 objects of type line. These objects represent data, excluded data, fitted curve.

참고 항목

|

관련 항목