겨울 코트, 아직 버리지 마세요
마지막으로, 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()