이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
타임테이블 데이터에서 선형 추세 제거하기
이 예제에서는 주가의 전체적 상승과 관련한 변동을 집중적으로 알아보기 위해 타임테이블의 일별 주식 종가에서 선형 추세를 제거하는 방법을 보여줍니다. 데이터에 추세가 있는 경우, 추세를 제거하면 데이터 평균이 강제로 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)");
주가에 선형 피팅을 수행하는 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)");