Time Series Data - 4(ARIMA)

안동균·2024년 12월 11일

Time Series

목록 보기
4/11

ARIMA

AR : AutoRegressive Model(자기 회귀)

  • 과거가 미래를 예측한다는 사실에 의존하는 모델
  • 특정 시점 t의 값은 이전 시점을 구성하는 값들의 함수
I : Integration(차분)

MA : Moving Average Model(이동 평균)

  • 각 시점의 데이터가 최근의 과거 값에 대한 오차로 구성된 함수
  • 과거의 오차가 현재의 과정에 영향을 미침

p : AR lagged values
d : 차분의 개수
q : MA lagged errors

Parameter tune

박스-젠킨스 방법

1. 시각화 및 도메인 지식을 통해 초기 파라미터(p, d, q) 추정
2. 모델 적합 후 시각화 및 성능 평가 수행
3. 부적합할 경우 파라미터 조정

Auto-Arima

Log like lihood를 이용한 Step-wise방법
해당 방법은 Overfitting의 가능성 존재
차분(d)이 2를 넘어가면 Overfitting으로 봄, AR(p), MA(q)도 3을 넘기지 않는 것이 바람직함

Other Arima

SARIMA

ARIMA + Seasonality = ARIMA모델에 계절성 요소 추가
(p, d, q) / M(P, D, Q)
계절성이 있는 데이터도 모델링 가능

ARIMAX

ARIMA + Time Series Regression = ARIMAX
ARIMA에 외부 변수를 추가함

ARIMA 모델링

데이터 불러오기

import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.tsa.arima.model import ARIMA

df = pd.read_csv('/content/drive/MyDrive/DataSet/Aiffel/Daily_Demand_Forecasting_Orders.csv', delimiter=';')

data = df['Target (Total orders)']

plt.plot(data)
plt.show()

ACF

plot_acf(data)

파란 네모 박스에서 벗어난 데이터가 존재하지 않음
=> 유의미한 데이터가 존재하지 않음

PACF

plot_pacf(data)

파란 네모 박스에서 벗어난 데이터가 존재하지 않음
=> 유의미한 데이터가 존재하지 않음

Modeling

model1 = ARIMA(data, order=(1,0,0))
model2 = ARIMA(data, order=(0,0,1))
model3 = ARIMA(data, order=(1,0,1))

res1 = model1.fit()
res2 = model2.fit()
res3 = model3.fit()

print(res2.summary())
p : AR lagged values
d : 차분의 개수
q : MA lagged errors

2번째 모델이 제일 성능(Log Likelihood, AIC, BIC)이 좋게 나옴

예측 결과 시각화

predictions = res2.fittedvalues

plt.figure()
plt.plot(data)
plt.plot(predictions)
plt.show()

주황색이 예측한 값인데 전혀 비슷하지 않음

Auto Arima

Auto Arima를 통해 파라미터 튜닝
model = pm.AutoARIMA(seasonal=False, stepwise=True, suppress_warnings=True, trace=True)

res = model.fit(data)

print(res.summary())
seasonal : 계절성 고려 여부(True : SARIMA / False : ARIMA)
stepwise : 파라미터 튜닝 방법
- True : 순차적으로 최적의 모델을 선택하며 AIC or BIC기준으로 모델을 최적화함
- False : 그리드 탐색방법을 이용하여 가능한 모든 조합을 이용하여 모델을 최적화함

최적의 모델은 ARIMA(0, 0, 0)으로 확인됨
=> ARIMA(0, 0, 0)은 백색잡음으로 시계열을 이용한 의미 있는 예측이 불가능한 상황을 뜻함

0개의 댓글