Main Content

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

타임테이블 데이터에서 선형 추세 제거하기

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

일일 주가가 포함되어 있는, 시뮬레이션된 타임테이블을 만듭니다.

t = 0:300;
D = days(t);
dailyFluct = randn(size(t));
price = cumsum(dailyFluct) + 20 + t/100;
tt = timetable(D',price',VariableNames="StockPrice");

일일 주가의 평균을 구합니다.

mean(tt.StockPrice)
ans = 28.2260

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

plot(tt,"Time","StockPrice");
legend("Original Data","Location","northwest");
xlabel("Time (days)");
ylabel("Stock Price (dollars)");

Figure contains an axes object. The axes object contains an object of type line. This object represents Original Data.

주가에 선형 피팅을 수행하는 detrend를 적용한 후 추세를 제거하고 추세 제거된 데이터를 입력 타임테이블에 추가합니다.

tt = detrend(tt,ReplaceValues=false);

입력 데이터에서 추세 제거된 데이터를 빼서 추세선을 계산합니다.

trend = tt.StockPrice - tt.StockPrice_detrended;
tt = addvars(tt,trend,NewVariableNames="Trend")
tt=301×3 timetable
     Time      StockPrice    StockPrice_detrended    Trend 
    _______    __________    ____________________    ______

    0 days       20.538            -14.588           35.126
    1 day        22.382            -12.698            35.08
    2 days       20.133            -14.901           35.034
    3 days       21.005            -13.983           34.988
    4 days       21.334            -13.608           34.942
    5 days       20.036             -14.86           34.896
    6 days       19.612            -15.238            34.85
    7 days       19.965            -14.839           34.804
    8 days       23.553            -11.204           34.758
    9 days       26.333            -8.3791           34.712
    10 days      24.993            -9.6729           34.666
    11 days      28.038             -6.582            34.62
    12 days      28.773            -5.8006           34.574
    13 days       28.72            -5.8077           34.528
    14 days      29.445            -5.0369           34.482
    15 days       29.25            -5.1859           34.436
      ⋮

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

mean(tt.Trend)
ans = 28.2260

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

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

plot(tt,"StockPrice")
hold on
plot(tt,"Trend")
plot(tt,"StockPrice_detrended")
plot(tt.Time,zeros(size(t)))
legend("Original Data","Trend","Detrended Data",...
       "Mean of Detrended Data","Location","northwest")
xlabel("Time (days)"); 
ylabel("Stock Price (dollars)");

Figure contains an axes object. The axes object contains 4 objects of type line. These objects represent Original Data, Trend, Detrended Data, Mean of Detrended Data.

참고 항목

라이브 편집기 작업

함수