0. R 에서의 시계열 분석
여러 종류가 있고, 데이터 특성과 예측 목적에 따라 적절히 선택한다.
주요 모델은 아래와 같다.
1. 기본 시계열 모델
1-1. ARIMA(AutoRegressive Integrated Moving Average)
•
가장 널리 알려진 기본 모델
•
단기 예측에 효과적
•
정상성(stationary) 가정, 차분(differencing)을 통해 비정상 시계열 처리
•
R 패키지 : forecast 패키지의 auto.arima() 함수로 자동 파라미터 선택 가능
library(forecast)
model <- auto.arima(your_ts_data)
forecast(model, h=10) # 10기간 예측
R
복사
1-2. ETS(Error, Trend, Seasonality)
•
지수평활법의 확장 모델로, 추세와 계절성 명시적 모델링
•
단기 예측에 효과적
•
R 패키지 : forecast 패키지의 ets() 함수
model <- ets(your_ts_data)
forecast(model, h=10)
R
복사
2. 고급 시계열 모델
2-1. Prophet
•
Facebook 에서 개발한 가법 모델 기반 시계열 예측
•
강한 계절성, 휴일 효과, 변화점 등을 잘 처리
•
비전문가도 쉽게 사용할 수 있는 인터페이스
library(prophet)
df <- data.frame(ds=dates, y=values)
model <- prophet(df)
future <- make_future_dataframe(model, periods=365)
forecast <- predict(model, future)
R
복사
2-2. TBATS
•
복잡한 계절 패턴이나 다중 계절성을 가진 데이터에 효과적
•
트리거노메트릭 함수를 사용하여 계절성 모델링
model <- tbats(your_ts_data)
forecast(model, h=10)
R
복사
2-3. VAR(Vector AutoRegression)
•
여러 시계열 변수 간의 상호작용을 모델링
•
다변량 시계열 예측에 적합
library(vars)
model <- VAR(your_multivariate_ts, p=5) # p는 자기회귀 차수
predict(model, n.ahead=10)
R
복사
3. 머신러닝 기반 접근법
3-1. Random Forest / XGBoost
•
전통적 시계열 모델보다 더 복잡한 패턴 포착 가능
•
특성 엔지니어링 중요
library(randomForest)
model <- randomForest(target ~ ., data=your_prepared_data)
R
복사
3-2. LSTM
•
R에서 keras 패키지를 통해 구현
•
장기적 패턴 포착에 효과적
•
대량의 데이터에서 성능이 좋음
모델 선택 기준
데이터 특성
•
계절이 명확하다면, TBATS, Prophet 고려
•
여러 변수 간 관계가 중요하다면, VAR 고려
•
비선형 관계가 많으면 머신러닝 모델 고려
예측 기간
•
단기 예측은 ARIMA, ETS 효과적
•
장기 예측은 Prophet, LSTM 고려
해석 필요성
•
모델 해석이 중요할 경우, ARIMA, ETS, Prophet 고려
•
순수 예측 성능이 중요할 경우, 머신러닝 모델 고려
예측 정확도 평가 지표
•
RMSE
◦
오차의 크기를 원래 데이터와 같은 단위로 표현
◦
큰 오차에 더 큰 가중치를 부여
•
MAE
◦
RMSE보다 이상치에 덜 민감
•
MAPE
◦
예측 오차를 실제값에 대한 백분율로 표현
◦
다른 규모의 시게열 비교에 유용
◦
실제값이 0에 가까울 때 문제 발생
•
MASE
◦
단순 예측 방법(나이브 방법)대비 상대적 성능 측정
◦
계절성 데이터에도 적용 가능
◦
다른 데이터셋 간 비교 가능
•
AIC / BIC
◦
모델 복잡성을 고려한 적합도 지표
◦
여러 ARIMA 모델 비교에 유용
◦
값이 작을수록 더 나은 모델
모델 정확도 판단 기준
•
비교 관점에서의 판단
◦
여러 ARIMA 모델 구성(p, d, q 파라미터 조합)의 성능 비교
◦
다른 시계열 모델(ETS, Prophet 등)과 비교
◦
단순 벤치마크 모델(평균, 나이브 예측 등)과 비교
•
절대적 기준
◦
일반적으로 MAPE < 10%면 예측이 매우 정확한 것으로 간주
◦
MAPE 10-20%는 양호, 20-50%는 합리적, >50%는 부정확한 예측으로 간주
but, 도메인과 데이터 특성에 따라 달라질 수 있음
•
실용적 관점
◦
비즈니스 의사결정에 충분한 정확도인지 평가
◦
예측 오차로 인한 비용과 모델 복잡성 간의 균형 고려
ARIMA 모델의 성능 평가 시, 잔차(residuals)의 특성도 함께 확인하는 것이 중요합니다. 잔차가 백색 잡음(white noise)에 가까울수록 모델이 데이터의 패턴을 잘 포착했다고 볼 수 있습니다. checkresiduals() 함수를 사용하여 자기상관, 정규성 등을 확인할 수 있습니다.
1. 분해법
시계열을 분석하는 전통적인 방법 중 하나다.
20세기 초에 나온 방법이다.
기본적으로 체계적 성분과 불규칙적인 성분으로 구성되어 있고, 체계적인 성분은 추세성분, 계절성분, 순환성분으로 분해된다고 본다.
즉, 각 분해된 성분을 예측함으로써 시계열 분석을 하는 원리다. → “시계열자료의 패턴이 미래에도 지속될 것이다” 라는 가정하에 시작된다.
또한, 분해법의 목적 중 하나는 ‘계절 성분을 시계열에서 제거’ 하는 것이다.
즉, 계절 요인을 제거해 순수한 상승이나 하락의 크기를 예측하기 위해서 하는 것이다.
자, 이제 분해법은 기본적으로 두가지 형태의 모형이 있다.
•
가법모형 : 모형이 단순 덧셈의 기호로 연결되어 있는데, 계절성분의 진폭이 시계열의 수준에 관계없이 일정한 수준일 때 주로 사용한다.
•
승법모형 : 모형이 단순 곱셈의 기호로 연결되어 있는데, 시계열의 수준에 따라 진폭이 달라질 때 사용된다.
물론, 승법모형에 log를 취해서 로그가법모형으로 분석은 진행한다.
1.
이분산의 크기를 줄여줄 수 있다(시간의 흐름에 따라 진폭의 크기가 달라지는)
2.
단위가 매우 클 경우, scaling 효과를 볼 수 있다
시계열 분석의 조건
시계열 분석을 위해서는 기본적으로 아래의 정상성을 만족해야 한다.
•
평균이 일정하다
•
분산이 시점에 의존하지 않는다.
•
공분산은 시차에만 의존하고, 시점 자체에는 의존하지 않는다.
위 세가지 조건을 만족하지 못하면 비정상 시계열이라고 부른다.
실제 시계열 데이터들은 대부분 비정상 시계열이며 다음과 같은 방법으로 정상 시계열을 만든다.
•
평균이 일정하지 않다면(추세가 있다면) ‘차분’ 을 진행
•
분산이 일정하지 않다면 ‘변환’ 을 진행
그래서 시계열 데이터를 가져왔다면 다음의 순서로 시계열 분석을 진행하면 된다. 먼저 time series 데이터로 변환해준다 → ts(대상 벡터)
•
시계열 자료를 시각화해서 정상 시계열인지 확인한다
•
시계열 자료를 정상 시계열로 변환한다
•
ACF/PACF 그래프나 auto.arima 함수를 사용해서 최적의 파라미터를 찾는다. (p,d,f)
•
arima 모형을 만든다
•
미래값을 예측한다
차분
함수 : diff(data, lag=k, diff=d) → k : 지연차수, d : 차분차수 , 둘다 default = 0
•
일반차분 : 바로 전 시점의 자료를 빼는 것
•
계절차분 : 여러 시점 전의 자료를 빼는 것(주로 계절성을 갖는 자료의 정상화에 사용)
변환
•
로그변환 : 로그함수를 취해 정상화하는 방법. 반드시 ‘차분’ 전에 진행되어야 한다.
최적화된 파라미터 찾기(ACF/PACF, auto.arima) → p, q
(1) ACF : Lag에 따른 관측치들 사이의 관련성을 측정하는 함수
lag 는 0부터 값을 갖는데, 너무 많은 구간을 설정하면 그래프를 보고 판단하기 힘들다고 한다. (max=20으로 설정)
(2) PACF : k 이외의 모든 다른 시점 관측치의 영향력을 배제하고 현재시점과 과거 k 시점의 관련성만을 측정하는 함수
일반적으로 p와 q는 아래의 조건을 맞추어 사용한다.
p + q < 2
p * q = 0
•
시계열 데이터가 AR의 특성을 띄는 경우, ACF는 천천히 감소하고 PACF는 처음 시차를 제외하고 급격히 감소한다.
•
반대로 MA의 특성을 띄는 경우, ACF는 급격히 감소하고 PACF는 천천히 감소한다.
→ 급격히 감소하는 시차를 각각 p 와 q 에 사용하면 된다.