4. 시계열(Time Series) 데이터
• 주가 , 환율, 거래량 변동
• 기온, 습도 변화
• 수요량, 판매량, 클릭율 변화
• 인구, 출생률 변화
4
특정 대상의 시간적 변동 기록
5. 시계열(Time Series) 분석
• 추세 파악
- 무작위 (random)적인 잡음을 제거하여 큰 흐름 파악
• 원인 예측 및 대응
- 매출이 특정 요일에 하락하는 패턴이 보이면, 이를 극복하기
위한 방안을 마련
• 향후 전망
- 판매량 추이 전망에 따라 생산량 조절
5
시계열 데이터에서 추세 파악, 원인 예측 및 대응, 향후 전망
9. 시계열(Time Series) 데이터 분해
9
추세 (Trend) 분해 방법
• Lowess/Loess 회귀(Regress)
- 특정 범위에 적당한 다항 회귀선들을 구하여 병합
- 다소 투박한(coarse) 추세선 : 회귀범위에 따라 달라짐
• 이동 평균 ( Moving Average)
- 특정 기간 동안의 값의 평균의 변화 ( 예: 주가의 5일/10일 이동평균)
- 부드러운 추세에 적용 가능 : 변화 주기를 알아야 함
- 조밀한 (fine-grained) 추세선
• Loess 방법으로 1차 추세 분석 후, (반복적인) 이동평균 수행
( 한가지 방법으로만 구하기도 함. )
19. 정적(Stationary) 데이터
19
평균, 분산 등 통계적 특성이 변하지 않는 데이터
1) 뚜렷한 추세(trend)가 없다.
2) 시간이 지나도 분포도(분산)의 변화가 없다
예) 정규분포에서 무작위 추출 숫자
분해된 시계열 데이터의 나머지(remainder)을 정적(stationary) 모델로 대응시킴
20. 정적(Stationary) 데이터 모델링
20
이동 평균 모델(Moving Average Model)
• 추세를 파악하기 위한 이동평균선과는 다름
• X(t) = (t 시점 event) + a_1 * (t-1 시점 event) + ….
+ a_n *(t-n 시점 event)
예 ) x(t) = rand(t) + 0.4 * rand(t-1) : rand(t) – t 시점의 random event
R source : random <- rnorm(num_samples,0,1)
x_ma <- random + 0.4 * lag(random) # order 1 ma
• T 시점과 이전 시점들 사건 영향의 가중 평균
• 일반적으로 오래된 사건은 영향이 작아짐
• 몇차항(order) 까지 사용할 지를 결정필요
영향이 큰 항 선택(자기상관성 검사 – ACF)
21. 정적(Stationary) 데이터 모델링
21
이동 평균 모델(Moving Average Model) – ACF 검사
• 자기상관성(Auto-correlation) 검사 – acf()
• 예 ) (x(t) = rand(t) + 0.4 * rand(t-1) : rand(t) – t 시점의 random event) 의 경우
auto.arima() 함수에
의한 모델 자동 선택.
1차 ma 모델
1차 항까지가 큰 영향
0차 항외에는 큰 영향 없음
22. 정적(Stationary) 데이터 모델링
22
자가 회귀 모델(Auto Regression Model)
• 현재값이 이전 값과 약간 차이가 난다는 가정
• X(t) = (t 시점 noise) + a_1 * x(t-1) + …. + a_n * x(t-
n)
예 ) x(t) = noise + 0.5 * x(t-1) : x(t) – t 시점의 x의 값
R source :
x1 <- 0.2
num_samples2 <- 100
noise <- rnorm(num_samples2, 0, 0.1 )
x_ar <- c(1:num_samples2)
x_ar[1] <- x1
for( i in c(2:num_samples2)){
x_ar[i] <- noise[i] + 0.5*x_ar[i-1] # order 1 AR
}
• T 시점의 값은 이전 특정 시점의 값의 영향
• 몇차항(order) 까지 사용할 지를 결정필요
영향이 큰 항 선택(부분 자기상관성 검사 – PACF)
23. 정적(Stationary) 데이터 모델링
23
자가 회귀 모델(Auto Regression Model) – PACF 검사
• 자가 회귀성(Auto-regression) 검사 – pacf()
• 예 ) (x(t) = rand(t) + 0.5 * x(t-1) : x(t) – t 시점의 x값)의 경우
auto.arima() 함수에
의한 모델 자동 선택.
1차 ar 모델
소멸하는 sine() 함수 성격 1차 항 이후에는 큰 영향 없음
24. 정적(Stationary) 데이터 모델링
24
자가회귀 이동평균 모델(Auto-Regression Moving Average Model)
• 이동평균모델(MA)와 자가회귀(AR) 모델을 연결
• X(t) = (t 시점 event) +a_1 * (t-1 시점 event) + …. +
a_n *(t-n 시점 event) +
(t 시점 noise) + a_1 * x(t-1) + …. + a_n * x(t-n)
예 ) x(t) = rand(t) + 0.4 * rand(t-1) : rand(t) – t 시점의 random event +
noise + 0.5 * x(t-1) : x(t) – t 시점의 x의 값
R source : x_ma_ar <- x_ma + x_ar
• 몇차항(order) 까지 사용할 지를 결정 필요
MA 부분
AR 부분
25. 정적(Stationary) 데이터 모델링
25
자가회귀 이동평균 모델(AR MA Model) – ACF, PACF 검사
• 자기연관성(Auto-correlation)과 자가 회귀성(Auto-regression) 검사 – acf(), pacf()
• 예 ) (x(t) = rand(t) + 0.4*rand(t-1) + 0.5 * x(t-1) ) 의 경우
auto.arima() 함수에
의한 모델 자동 선택.
1차 ma 모델
1항 이후 큰 영향 없음
0차 항 이후에는 큰 영향 없음
두 값을 더하면서 MA 모형에 포함
되어 버린 듯
26. 비정적(Non-Stationary) 데이터 처리
26
비정적 데이터를 정적 데이터로 변환 방법
• 차이값(diff)과 로그(log) 변환
- 차이값(diff) : 이전 데이터와의 차이값
• (1차 차분) = X(t) – X(t-1)
• 차이값은 데이터의 차수를 줄여 정적(Stationary)에 가깝게 한다
- (미분값처럼) 차분값은 다항식의 차수를 낮춰준다
- 1차항( X= a + b*t )을 상수항( X=b)으로, 2차항을 1차항으로 변환된다
- 로그(log) : 데이터에 log를 취함
• 데이터의 진폭이 시간에 따라 증가 (분산의 증가) 데이터 대상
- 예) X(t) = t * sin(t) - 윗쪽 그래프
• 로그(log)는 곱을 합으로 변환 분산의 증가 억제
- 예) N(t) = log(X(t)) = log(t) + log( sin(t) ) – 아랫쪽 그래프
• 로그(log) 변환은 분산을 줄여 정적(Stationary)에 가깝게 한다
ARIMA 모델 : AR + MA 모델에 차이값을 추가한 모델
27. 비정적(Non-Stationary) 데이터 처리
27
ARIMA 모델
• 데이터의 차이값이 만드는 시계열(Time Series)가 MA(Moving Average) 혹은
AR(Auto-Regression) 모델에 적합하다면 ARIMA 모델은 잘 맞음
• MA의 차수는 ACF(Auto-Correlation Function)으로, AR의 차수는 PACF(Partial ACF)
로 결정할 수 있음
발췌 : https://statkclee.github.io/statistics/stat-time-series-arma.html
29. 시계열(Time Series) 활용
29
추세/계절성 파악 및 대응 – 비행기 탑승객 수 변화
• 분해된 시계열 데이터 활용
- 계절(기간)에 따른 변화 확인
- 시간에 따른 증감 확인
• 정기적 변화에 대한 대응
- 감소 기간에 대한 적극적 대응(프로모션)
• 추세에 대한 대응
- 증가되는 수요를 위한 인프라 구축
• 공항, 비행기, 휴게시설 등
수요량 계산을 위한 수요 전망 계산
30. 시계열(Time Series) 활용
30
추세/계절성 파악 및 대응 – 비행기 탑승객 수 변화
• 기존 데이터를 이용한 향후 5년 전망(R의 forecast 함수 사용) : 80%(짙은 회색)와 95%(옅은 회색) 신뢰구간
31. 시계열(Time Series) 활용
31
이상치 파악
1. 이전 시계열 데이터를 이용한 향후 전망 계산 ( R의 forecast 함수)
• level 파라미터로 원하는 신뢰구간 계산 ( default level = c(80, 95) )
2. 측정시점에서 계산된 신뢰구간을 벗어난 데이터 확인 ( outlier )
3. 해당 결과가 일시적 변화인지 계속적인 변화 인지 확인
• 일시적 변화는 원인 분석 후 조치
• 계속적 변화는 시계열 모델에 반영하여 새로운 전망 계산
4. 위의 과정을 반복
33. 요약
33
시계열(Time Series) 데이터는 시간에 따른 대상값의 변화를 기록
추세파악 및 대응, 향후 전망 및 이상치 감지 등에 활용 가능
시계열 데이터는 추세(Trend), 정기성(Seasonal), 나머지(remainder)로 분해
나머지(remainder) 부분은 정적인 경우, MA(이동평균), AR(자가회귀) 모델링
정적이지 않은 경우, 차이값(diff) 혹은 로그(log) 등을 사용하여 정적으로 변환
차수 결정 : MA – ACF, AR-PACF 사용
자동으로 결정해주는 auto.arima() 함수를 사용하면 편리
forecast() 함수를 사용하여 향후 전망값을 원하는 신뢰구간으로 계산 가능
전망값을 사용하여 대응 계획 및 이상치 감지에 활용 가능
지속적 변화가 감지된 경우, 시계열 모델 재구축 필요
단기적 전망에 효용성이 높음
34. Address
서울특별시 성동구 아차산로 17
11층 (성수동 1가, 서울숲엘타워)
우편번호 04789
Telephone
Tel : (02)575-0409
Fax: (02)6003-1987