시작하기무료로 시작하기

겨울 코트, 아직 버리지 마세요

마지막으로, ARMA(1,1) 모델을 사용해 향후 30년의 기온을 예측하고, 그 추정치에 대한 신뢰 구간도 함께 표시해 보겠습니다. 장기 예측에서는 ARMA 모수보다 드리프트 추정치가 훨씬 더 큰 영향을 준다는 점을 기억하세요.

앞서 기온 데이터가 랜덤 워크를 따른다는 것을 확인했고, 1차 차분을 살펴봤습니다. 이 연습에서는 차분 전의 기온 데이터에 ARIMA 모듈을 사용합니다. 이는 기온의 ‘변화’에 ARMA 모듈을 적용한 뒤, 그 변화를 누적합하여 기온 예측을 얻는 것과 동일합니다.

기온이 시간에 따라 상승 추세를 보이므로, ARIMA 모델을 정의할 때 추세 항도 추가해야 합니다. 연습에서는 trend='t'로 설정해 시간에 대한 선형 추세를 사용합니다. 다른 추세 모델을 시도해 예측이 어떻게 달라지는지도 살펴볼 수 있어요. 예를 들어, 이차 추세 $\small a+ bt + ct^2\(를 쓰려면, 선형 항 \)\small bt\(와 이차 항 \)\small ct^2$를 모델에 포함하도록 trend=[0,1,1]로 설정하세요.

데이터는 temp_NY라는 DataFrame으로 미리 로드되어 있습니다.

이 연습은 강의의 일부입니다

Python으로 배우는 시계열 분석

강의 보기

연습 안내

  • 적분된 ARMA(1,1) 모델, 즉 ARIMA(1,1,1) 모델에 대해 ARIMA 클래스의 인스턴스를 mod라는 이름으로 생성하세요
    • order(p,d,q)에서 d는 1입니다. 1차 차분을 했기 때문입니다
    • .fit() 메서드로 mod를 적합하고 결과를 res라고 하세요
  • res에서 plot_predict() 메서드를 사용해 시계를 예측하여 그리세요
    • 시작 날짜는 1872, 종료 날짜는 2046으로 지정하세요

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Import the ARIMA module from statsmodels
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.graphics.tsaplots import plot_predict

# Forecast temperatures using an ARIMA(1,1,1) model
mod = ARIMA(temp_NY, trend='t', order=(1,1,1))
___ = ___.fit()

# Plot the original series and the forecasted series
fig, ax = plt.subplots()
temp_NY.plot(ax=ax)
plot_predict(___, start='1872', end='2046', ax=ax)
plt.show()
코드 편집 및 실행