LITTLE BY LITTLE

[1] ARIMA - 시계열 모델의 개념 본문

데이터 분석/시계열 데이터 분석

[1] ARIMA - 시계열 모델의 개념

위나 2023. 11. 8. 23:25


 
ARIMA는 AR 모형(Auto Regressive) 부분도 있고, MA(Moving Average) 부분도 있음


1-1. AR(Autoregressive) models

: 자기 자신을 종속변수로하고, 이전 시점의 시계열(lag)을 독립변수로 갖는 모델
* hyper parameter: P

  • 과거의 값이 현재의 값에 영향을 줄 때 사용
  • AP(p)는 차수가 p인 자기 회귀 모형
  1. AR1. 백색잡음: 과거의 값으로 현재의 값을 예측할 수 없는 랜덤한 상태
  2. AR2. 확률 보행: 현재 값을 예측할 수 있는 가장 좋은 값은 어제의 값 [ yt=yt−1+ϵt ]
  3. AR3. 표류가 있는 확률 보행: 시간이 지남에 따라 평균적으로 값이 증가/감소[ yt=c+yt−1+ϵt ]
  4. AR4. 정상성을 만족하는 모형

=> AR4를 제외하고는, 시계열 모형이 정상성을 띠도록 차분/로그 변환 후 모형 적용해야 함


1-2. MA(Moving Average) models

: 자기 자신을 종속변수로, 해당 시점과 그 과거의 white noise distribution error들을 독립변수로 갖는 모델

  • MA모형은 항상 정상성을 만족한다.
  • 과거의 값이 현재의 값에 영향을 줄 때 쓰는 모형
  • 예) X: 강수 여부, Y: 수영장에 입장하는 사람 수, 강수 여부를 예측하기 어렵고, i.i.d를 따른다는 가정 하에, 
수영장 입장 사람 수=μ+θ1Weathert+θ2Weathert−1 


* hyper parameter: Q

1-3. ARMA(Autoregressive and Moving Average) models

  • AR+MA

 * hyper parameter: P, Q
 

1-4. ARIMA(Autoregressive Integrated Moving Average) models

  • ARMA 모형에 차분을 D회 수행해준 모델
* 차분(Differencing): 현 시점 데이터에서 d시점 이전 데이터를 뺀 것
- 시계열 데이터의 추세를 제거하기 위해 데이터 간의 차이를 계산하는 과정
- 시계열 데이터가 안정적인 상태에 도달할 때까지 적용 
차분 결과 시각화, 좌측에 특정한 트렌드를 가지고 있는 곡선이 차분된 모습

 
*  hyperparameter: P, Q, D 

1. P 
- 자기회귀(AR)부분의 차수
- 시계열 값이 과거 P시점 만큼 앞선 시점까지의 값에 의존하는 AR 모형의 차수
- ex. p=3, warm tomorrow if it has been warm the past 3 days
2. D 
- 1차 차분이 포함된 정도
- # of non-seasonal difference
- ex. d=3, same temperature tomorrow if the difference in temperature in the last 3 days has been very small.
- d를 구현하는 함수 diff(data, differenes=n): 차분을 통해 정상성을 만족시키는 것이  목적
3. Q
- 이동 평균(MA) 부분의 차수
- 시계열 값이 과거 Q시점만큼 앞선 시점까지의 오차에 의존하는 MA 모형의 차수
- # of errors
yt′=c+ϕ1yt−1′+⋯+ϕpyt−p′+θ1ϵt−1+⋯+θqϵt−q+ϵt   
  •  ARIMA(1,0,0) = AR(1), ARIMA(0,0,1) = MR(1)
  • Auto Aarima: arima(data, order=c(p,d,q))에서 arima모델의 적절한 p,d,q를 추천해주는 함수  

tsa (time series analysis)

From statsmodels. tsa import ArmaProcess (ar,ma)

 
pmdarima 

  • 통계검정을 사용해 정상성을 달성하기 위해 차분으로 조정하는 방식을 진행할 경우, 적용해야 할 차분의 차수를 알아낼 수 있는 방법
  • pmdarima의 ndiffs, nsdiffs 함수를 사용
  • test 방식에는 adf, kpss, pp[필립-페론 검정] 가 있음
pip install pmdarima
from pmdarima.arima import ndiffs, nsdiffs
print(f"Suggested # of differences (ADF): {ndiffs(df.price, test='adf')}")
print(f"Suggested # of differences (KPSS): {ndiffs(df.price, test='kpss')}") 
print(f"Suggested # of differences (PP): {ndiffs(df.price, test='pp')}")

stationarity(정상성/안정성), seasonality, adf/kpss stationarity test 이어서 

Comments