본문 바로가기
쫌쫌따리 통계+데이터+AI

시계열 분석(2) : 일보전진 이보후퇴

by stherhj 2022. 8. 26.

왠지 모르게 공부하면 공부할 수록 더 모르겠는 시계열 분석 재정리

이전에 정리했던 기본 내용:

https://stherhj.tistory.com/160?category=1052148 

 

시계열 분석

항상 나오기만하면 눈감고 저리가!!했던 시계열 분석..이젠 어쩔 수 없다ㅠㅠ친하게 지내보자.. 시계열 데이터 구성 요소(original=trend+seasonal+random) 1. 추세변동(trend), 2. 순환변동(cycle), 3. 계절변동

stherhj.tistory.com

 

ARIMA의 input data format? ("정상성 데이터: ARIMA 모형을 적용하기 위한 조건" → 정말 그러한가..?)

[!] ARIMA :

AR(자기상관: 과거 관측값을 통해 예측 모델 생성 *다중 회귀 모형과의 차이: 독립성 가정이 깨짐. p 얼마나 이전의 값이 이후의 값에 영향을 미치고 있는가?)

+

MA(이동평균:  과거 예측 오차를 통해 예측 모델 생성 q 어느 정도 기간의 평균 값이 추세를 보이고 있는가?)

+

I(차분: d 비정상성을 정상성으로 만들기 위해 관측값들의 차이를 계산, 결과값은 비차분화 과정을 거쳐 최종 예측값으로 변환 *보통 1차, 최대 2차 d시점 차이의 값을 빼는 것. 1차 차분 후 한 번 더 차분하는 것이 아니라)

 

[!] 정상성 데이터 확인 방법

1) ADF(adfuller, Augmented Dickey-Fullter) Test의 p-value 확인(H0: non stationary)

OR

2) ACF(Auto Correlation Function)의 graph trend 확인(특정한 패턴 없이 랜덤하게 그려지는 경우 stationary하다고 파악, otherwise, ACF가 일정하게 천천히 줄어든다. 높낮이 흐름이 있더라도 천천히 줄어든다? 비정상)

→ 비정상성이 확인되면 차분 시도!([R] library(forecast); ndiffs(dataset) 을 통해 정상성 확보를 위한 차분의 횟수를 파악가능) 

 

[?] 차분 이후 데이터를 ARIMA에 적합할지 혹은 차분 이전의 비정상성 데이터를 input으로 활용할지?

ARIMA(traing.x, order=(p,d,q), trend= ' ') 차분의 과정을 포함하고 있으므로 raw data 그 자체를 input으로 활용

 

[?] 차분을 통해서 trend만 제거 가능한데, 시기별로 분산이 달라지는 비정상성은 어떻게 처리하는지? 혹은 계절성이 있는 데이터는? 

→ 달라지는 분산에 의한 비정상성은 input으로 활용하기 전에 처리, 계절성을 보이는 데이터는 ARIMA로 분석하기 적절하지 않으며 SARIMA를 활용(-auto.arima를 통해 parameter search 가능).

*log transformation necessity의 통계적 근거를 찾는 방법:  Goldfeld-Quandt Test

library(lmtest)
if ((gqtest(x~1)$p.value < 0.10) {
    x<-log(x)
}

https://stats.stackexchange.com/questions/6330/when-to-log-transform-a-time-series-before-fitting-an-arima-model

[?] (additional q) log transformed -> 결과값을 뱉을 때에는 차분은 un차분 해주는데 log 반대 exp?는 어떻게 해주는지, 그리고 앞으로 만날 test set은 어떻게 input으로 활용될지?

 

[!] Parameter 선택 방법(p,d,q 중 p&q)

*ACF, PACF 그래프는

1) 이전에 raw data의 정상성을 확인을 위해 plot의 trend를 살펴보기도 하고

2) 이후에 적합 모델을 선택하기 위해 그 형태를 파악(기준은 아래 table 확인)

3) 더 나아가 모델에 대한 파라미터 선택을 위해 plot의 0(찐0 대신 신뢰구간 0 안에 들어오는)으로 들어오는 lag를 확인 

무우조오건 ARIMA! 가 아니라 '비슷한 성능을 보이는 모형이라면 parameter의 개수가 가장 적은 것을 선택한다.'라는 원칙에 따라 ACF, PACF를 확인하여 AR, MA, ARMA 등 고려 가능

 

[!] ACF, PACF 그래프 plot 에서 파란색 점선은 각각 자기상관과 편자기상관이 0이라는 주장에 대한 95%신뢰구간을 나타내므로 안쪽에 있는 값들은 통계적으로 0임을 의미. 

 

[!] 모델 적합 후 train에 활용한 동일 데이터셋 예측 후 accuracy(RMSE 등을 보여주는) 확인(train acc.일뿐, but to check residuals) 

1) QQplot을 그려 잔차가 정규분포를 따르는지 파악해본다. 

2) box.test를 통해 잔차들의 상관관계가 0이라는 귀무가설을 기각하는지 여부 파악해본다.

이후 forecast 진행(현실에선는 요 test set의 label이 없는거)

 

댓글