ARIMA 모델 예측 결과

허상범·2021년 8월 26일
0

Data Science

목록 보기
1/4
post-thumbnail

Time-Series Analysis with ARIMA

분석 개요

RNN 기반의 LSTM 모델을 사용하여 시계열 분석을 진행하기 전에, 시계열 데이터를 예측하는 전통적인 머신러닝 방법론인 ARIMA 모델을 활용하여 다양한 경제/금융 변수들의 데이터 추이를 예측하는 것을 목표로 함

활용 데이터


분석 과정 및 주요 방법론

데이터 수집

FRED, 한국은행의 경제통계 DB를 통해 7가지 변수(날짜 인덱스 제외)의 csv 파일을 다운로드 받아 원본 데이터를 수집 (dtype은 전부 float64)

데이터 전처리 및 EDA

전처리
  • 시계열 데이터의 길이를 동일하게 정의하기 위해서 총 7가지의 변수 가운데 최소 데이터 길이를 가진 변수를 기준으로 데이터프레임을 정의하고자 함

  • 이 과정에서, 국제 유가 데이터의 길이가 6으로 매우 짧아 타 변수 대비 분석의 유의미성이 매우 낮을 것으로 판단하여 해당 변수를 drop함 ⇒ 6개의 변수만을 가지고 모델링을 진행하게 됨

  • 이에 따라, 2번째로 최소 길이(150개)를 가진 변수인 “원달러환율” 변수의 길이에 맞게 데이터프레임을 정의함

EDA
  • EDA의 경우, 시계열 데이터이기 때문에 plot 차트를 통해 개별 변수의 추이를 먼저 살펴보았음. 이후, 데이터 시각화 라이브러리 matplotlib을 사용하여 scatterplot, pairplot, 상관관계 Heatmap 차트를 그려 변수간 상관성을 살펴보고, 상관관계가 낮은 변수들은 무엇인지, 높은 변수들은 무엇인지 확인 과정을 거침.

  • 특히, 상관관계 분석 과정에서 변수 간 상관관계가 높음 또는 낮음을 정의하려면 어느정도의 상관계수가 도출되어야 하는지 난해한 부분이 많았음.

Plot of Nasdaq

Scatterplot (Nasdaq, Kospi)

Correlation Heatmap

시계열 데이터 분석용 Python 라이브러리 : statsmodel.tsa

  • ARIMA 모델을 Python으로 구현함에 있어 매우 유용한 라이브러리인 statsmodel.tsa를 사용하여 해당 라이브러리에 내장되어 있는 ARIMA 패키지를 사용했고, ARIMA 모델에서 매우 중요한 함수인 자기상관함수, 부분 자기상관함수까지 시각화해보는 것을 목표로 함

  • ARIMA 모델은 단어 그대로 AR, MA 모델이 결합되어있는 예측 모델이기 때문에 모델에 입력되는 파라미터(모수) 역시 AR(p), MA(q) 모델을 그대로 추종하며, 여기에 ARIMA만의 모수인 차분 횟수(d)를 추가로 입력받음.

  • 실제 파라미터를 입력할 때에는 변수 6개에 전부 (1,1,1)을 입력하여 총 6개의 예측 값을 도출했고, 원달러환율을 예시로 하여 차트를 그려보면 아래와 같은 차트가 도출됨 ⇒ 원본 데이터와 거의 동일한 추세로 예측되고 있음

  • 자기상관성함수의 경우, lag이 어느 정도로 변하는지에 따라 이전 시퀀스 데이터로부터 어느 정도의 상관계수(자기상관계수)를 갖는지 평가하였음.

  • 이 과정에서는 자기상관성함수 시각화 패키지인 plot_acf을 사용하여 lags의 값을 변화시켜보면서 자기상관계수의 변동을 살펴봄. lags=50일로 측정할 경우 아래와 같은 차트가 도출됨

cf) 모델 예측 결과 테이블

결론 및 학습 사항

  • ARIMA 모델의 경우, N개의 변수를 학습시켜 target을 예측하는 것이 아니라, 변수 1개의 추이만을 예측하는 모델임을 명확히 인지하고, 특정 변수의 시계열 추이만을 예측하고자 할 때 사용하면 유용한 툴이 될 수 있음을 이해함

  • 뿐만 아니라, ARIMA의 모수인 (p,d,q)의 의미를 수학적으로 명확하게 이해하지 않으면 이 모델로 예측하는 결과의 의미가 무엇인지, 왜 이런 결과가 나온 것인지 제대로 알 수가 없기 때문에 모델을 단순히 코딩하고 끝내는 것이 아니라 해당 라이브러리가 동작하는 원리를 최대한 이해해보려고 노력해야겠다는 생각이 강하게 들었음

전체 Code : https://github.com/hersheythings/Data-Analysis/blob/main/ML/ARIMA_ML.ipynb

profile
Engineering & Science, Since 2021 | Finance, Backend, Data

0개의 댓글