Search

시계열 분석

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 에 사용하면 된다.