시계열분석 Arima 예측모델에 대하여(1)
시계열 데이터를 다루는 모델 ARMA와 ARIMA에 대하여 알아보자. 원 영상에서는 R로 다루는데 나는 python으로 수행하려 한다.
과거 “제2회 KRX 주식 투자 알고리즘 경진대회”에 나가 사용해 보았던 ARIMA..
지식이 얕아 통계모델을 제대로 활용하지 못해 좋은 성적을 거두지 못하였다.
하지만 항상 궁금했던 내용이므로 이 참에 제대로 알아보자.
1. ARIMA란?
ARIMA의 구성
- ARIMA(AutoRegressive Integrated Moving Average)는 forcasting model (예측 모델)이다.
- 예측하고자 하는 특정 변수의 과거 관측값과의 선형결합으로 해당 변수의 미래값을 예측하는 모델
- 과거 p개의 관측값의 선형결합으로 예측하는 모델을 p차 AR모델이라고 하며 AR(p)로 표현한다.
- Auto-Regressive (자기 회귀) 라는건 자기 자신으로 회귀하여 이전 데이터들을 활용하는 것 의미
MA 모델
ARMA 모델과 ARIMA 모델
- ARMA(p, q) 모델
- ARIMA(p, d, q) 모델
- ARMA 모델에 차분 과정이 추가된 모델이다.
- 시계열 데이터를 d회 차분하고 p개의 관측값과 q개 오차를 이용해 결과값을 예측하는 모델이다.
- 결과값은 다시 비차분화(un-differenced) 과정을 거쳐 최종 예측값으로 변환된다.
- 정규화-비정규화처럼 차분한 값을 원래의 값으로 되돌리는 것을 의미
+차분은 뭐고 왜할까?
2. ARIMA 모델링
시계열 데이터의 정상성 평가
(통계 프로그램 R의 내장 데이터인 나일강 유량을 예시로 설명한다.)
그래프 해석
- 분산은 전기간에 걸쳐 변동폭이 크지 않다.
- 스케일 조정을 위한 로그 변환 등의 데이터 변환은 불필요해 보인다.
ADF 변환
- adf 변환을 통해 정상성을 통계적으로 평가해 보자
- adf 테스트해서 p value가 0.05보다 낮아 정상 시계열인지 확인한다.
- p value가 높으면 유의하지 않음으로 추세가 사라지고 정상성을 보일때까지 차분한다
- 정상 시계열은 평균으로 돌아가는 경향 있고 이 경향을 이용한 예측을 수행한다. 낮으면 높아지고 높으면 낮아질 것이다.
- 기존과 달리 추세가 사라져 정상성 확인 가능
- 위처럼 차분한 데이터의 adf 검정 결과는 p value는 0.01로 통계적으로 유의해진 것 확인 가능하다.
차분 시계열 데이터가 정상성의 요건을 충족하기 때문에 이제 이를 활용해 ARIMA 예측 모델을 생성할 수 있다.
예측모델 생성
- (p, d, q)의 조합을 통해 여러가지 대안 모델들을 도출할 수 있다.
- d: 차분 횟수는 데이터가 정상성을 가질 때 까지 차분하여 구한다.
- (p, q): 차분한 데이터의 ACF 도표와 PACF 도표를 활용해 구한다.
- ACF와 PACF란?
- ACF(Auto Co-Relation Function): 자기상관 함수는 현 시점의 자료와 시점의 차이(lag)를 가지는 자료를 비교하여 과거와 현재의 관계를 분석하는 것이다. 시간이 지남에 따른 영향력을 알아볼 수 있다.
- PACF (Partial Auto Co-Relation Function): 편자기상관 함수는 ACF와 서로 보완하며 시계열 데이터 특징을 분석하기 위해 쓰인다. k만큼의 차이가 있는 시점의 값들로 비교하는건 ACF와 비슷하지만 t와 t+k 사이에 다른 y값들의 영향을 배제하고 측정하는 것이 다르다. 좀 더 독립적 요인들로 비교한다.
- 파란 선은 ACF & PACF이 0이라는 주장에 대한 95% 신뢰 구간을 나타낸다. -> 그렇기 때문에 ACF는 lag(시차) 1 이후 0이 되고 PACF는 2 이후에 0이 된다.
- 모델 선택 가이드라인에 따르면 다음과 같은 모델이 가능하다.
- AR(2) / ARMA(2, 0)
- MA(1) / ARMA(0, 1)
- ARMA(2, 1)
예측모델 평가
- 예측모델이 적절하다면 예측오차(잔차)는 평균 0의 정규분포를 따라야 한다.
- 모든 가능한 잔차에 대해 자기 상관이 0이어야 하고 이는 잔차간의 상관관계가 없어야 한다는 것.
- 평가
참고
영상 https://youtu.be/abOIK40QvDA?si=JGvgUWOBvQKm-9EF
포스트 https://geniewishescometrue.tistory.com/entry/Time-Series-Stationarity-시계열분석-정상성-ADF-Test-차분
+평가는 2부에서..
- 실제 예시를 가져와 python 코드를 이용해 수행해볼 예정이다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.