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

데이터 추세 제거(디트렌딩)

소개

MATLAB® 함수 detrend는 데이터에서 평균이나 최적선(최소제곱 관점에서)을 뺍니다. 데이터에 여러 개의 데이터 열이 포함되어 있으면 detrend는 각 데이터 열을 개별적으로 처리합니다.

데이터에서 추세를 제거하면 추세와 관련한 데이터의 변동에 중점을 두고 분석을 수행할 수 있습니다. 일반적으로 선형 추세는 데이터가 규칙적으로 증가하거나 감소함을 나타냅니다. 예를 들어, 센서 드리프트로 인해 규칙적인 변위가 발생할 수 있습니다. 유의미할 수 있는 추세라도 분석 유형에 따라 추세를 제거할 때 더 나은 결과를 나타낼 수 있습니다.

데이터에서 추세 영향을 제거하는 것이 적합한지 여부는 대개 분석 목적에 따라 다릅니다.

데이터에서 선형 추세 제거하기

이 예제에서는 주가의 전체적 상승과 관련한 변동을 집중적으로 알아보기 위해 일별 주식 종가에서 선형 추세를 제거하는 방법을 보여줍니다. 데이터에 추세가 있는 경우, 추세를 제거하면 데이터 평균이 강제로 0으로 설정되고 전체적인 변동이 감소합니다. 이 예제에서는 gallery 함수에서 얻은 분포를 사용하여 주가 변동을 시뮬레이션합니다.

시뮬레이션된 데이터 세트를 만든 다음 평균을 구합니다. sdata는 주식 하나에 대한 일일 주가 변동을 나타냅니다.

t = 0:300;
dailyFluct = gallery('normaldata',size(t),2); 
sdata = cumsum(dailyFluct) + 20 + t/100;

데이터의 평균을 구합니다.

mean(sdata)
ans = 39.4851

데이터를 플로팅하고 레이블을 지정합니다. 데이터가 나타내는 주가가 규칙적으로 상승하고 있음을 알 수 있습니다.

figure
plot(t,sdata);
legend('Original Data','Location','northwest');
xlabel('Time (days)');
ylabel('Stock Price (dollars)');

sdata에 선형 피팅을 수행한 후 추세를 제거하는 detrend를 적용합니다. 입력값에서 출력값을 빼면 추세선을 구할 수 있습니다.

detrend_sdata = detrend(sdata);
trend = sdata - detrend_sdata;

추세가 제거된 데이터의 평균을 구합니다.

mean(detrend_sdata)
ans = 8.9703e-15

예상대로, 추세가 제거된 데이터의 평균은 0에 매우 가깝습니다.

추세선, 추세가 제거된 데이터, 추세가 제거된 데이터의 평균을 그래프에 추가하여 결과를 표시합니다.

hold on
plot(t,trend,':r')
plot(t,detrend_sdata,'m')
plot(t,zeros(size(t)),':k')
legend('Original Data','Trend','Detrended Data',...
       'Mean of Detrended Data','Location','northwest')
xlabel('Time (days)'); 
ylabel('Stock Price (dollars)');

참고 항목

| | |