Certificate/ADP

[ADP 데이터분석 - 통계편] 시계열분석, 시계열분해, ARIMA, SARIMA, auto SARIMA, 정상성, 정상성검정, ADF test, 신뢰구간 그래프 그리기, 차분

Olivia-BlackCherry 2023. 10. 27. 14:40

목차

    시계열분석

    • 일정한 시간 간격으로 표시된 자료의 특성을 파악하여 미래를 예측하는 분석 방법
      • 종속변수: 연속형
      • 독립변수: 연속형 >> 시간(week, day..)
    • y=ax +b

    • 회귀계수 a와 비슷한 역할을 하는 것: 추세변동, 계절변동, 순환변동, 불규칙변동
      • 시간적 요인 >> ARIMA, SARIMA 로 설명
        • 추세변동 Trend: x(시간)에 따라 y값이 달라지는 것.
        • 계절변동 Seasonality: 특정 주기별로 같은 패턴을 보이는 파동의 형태 ex)기온- 봄>여름>가을>겨울 온도 변화
        • 순환변동: 추세+계절, 일정한 주기를 가지고 추세를 따라간다.
      • 외부 요인 >> 추세와 계절을 제거한 잔차를 가지고 설명
        • 불규칙 변동 Residual: 위의 3가지 방법으로는 설명할 수 없는 변동 ex) 천재지변, 태풍, 홍수

     

     

     

    시계열 분해 time sereis decomposition

    • 시계열 자료를 추세, 계절성, 잔차로 차근차근 분해하는 기법

    ★ 방법과 절차

    1. 데이터보기
      • 시계열의 주기적 반복 또는 계절성이 있는가?
      • 가법 vs 승법
        • 가법(additive model, y= t+s+r), 변화 완만, 추세와 계절성 별개로 존재 ex) y=3x
        • 승법(multiplicative model, y=tsr), 변화 가파름, 추세에 따른 계절성 존재 ex) y=x^3 
        • 무엇이 적합?

    2. detrend: 시계열 자료에서 추세 뺌
      • 중심 이동 평균
      • 추세 분해값 뺀다.

    3. deseasonality: 앞의 자료에서 계절요인 뺌
      • 계절 평균 구하기= detrend 후 남은 값의 합/ 계절주기
      • ex) 1월 계절 평균 = 2020-01+2021-01+2022-01+2023-01)/4
      • 계절 평균값 뺀다.

    4. 불규칙 요인만 남음: random, irregular factor>> Residual
      • 특정 패턴 X
      • 무작위 분포
      • 작은 값
      • 만약 특정 패턴(주기적 파동, 분산 커짐)이 존재한다면 잔차에 대해서만 다른 모형을 추가로 적합할 수 있다.

     

     

     

    <실습1: 시간에 따른 데이터인지 확인>

    arima_data.csv
    0.00MB

    데이터 전처리

     

     

    시계열 분해 - 가법 모형 적용

     

     

    시계열분해 - 승법 모형 적용

     

     

     

    정상성 stationary

    • 정상성이란?
      • 시간의 흐름에 따라 변하지 않는 상태(평균, 분산이 시간에 따라 일정함)
      • 추세와 계절성을 갖지 않는 진동하는 데이터이다.
      • 주기성 행동을 가지고 있지만, 주기가 특정 패턴을 갖지 않으며 시계열을 관측하는 어떠한 시점에서도 똑같은 모양
    • ARIMA 모형을 적용하기 위해서는 정상성을 갖춘 형태여야 한다.
      • AR(Auto Regressive) + MA(Moving Average)= ARIMA
    • 정상성이 없다면, 정상성을 갖춘 형태로 변경한다.
      • 변환
      • 차분

     

     

    정상성 검정

    1) Augmented Dickey-Fuller Test

    - 정상성 띄는지 검정하는 방법

    • H0: 데이터가 정상성을 갖지 않는다.
    • H1: 데이터가 정상성을 갖는다.
    • adfuller(x, maxlag, regression, autolag) x: 시계열 자료
      regression: 검정에 사용할 모형( nc:추세없고 계절성만, c:상수항만, ct:상수항++1차추세, ctt: 상수항+2차추세)--> 데이터모양보고 결정
      autolag: 검정 AR 모형의 차수를 자동 결정하는 알고리즘 ( AIC, BIC, tstat, None)
    • return값은 검정통계량, pvalue, 사용된 시차의 수, 분석에 사용된 자료의 수, 1-5-10%수준에 해당하는 검정통계량

    -  파라미터 regression(c, ct, ctt)

        :그래프를 통해 데이터의 특성을 확인하고 데이터가 시간에 따라 어떻게 변화하는지 이해해야 한다.

    • c(constant only): 상수(intercept) 항만을 포함한 모델: 데이터가 상수의 영향을 받지만 시간 추세가 없을 때
    • ct(Constant and trend) : 시간 추세가 있는 경우, 상수와 시간 추세 모두 고려
    • ctt( constant, trend, and trend square): 데이터에 추세가 증가하거나 감소하는 비선형 추세가 있는 경우

     

    <실습2- 시간에 따른 미래의 값을 예측하거나 현상 분석하기>

    데이터 전처리, 데이터 분할

     

     

    정상성 검정 : ADF 테스트, Augmented Dickey-fuller test

     

     

    차분

    비정상성을 정상성으로 만들기 위해, 관측값의 차이를 계산한다

    데이터프레임을 n차 차분한다.
    DF.diff(periods=차분횟수).iloc[1:]
    alpha: 신뢰구간
    lags : 그래프의 x축 범위

     

     

    1차 차분 vs 2차차분

    - 1차 차분으로 정상성을 띈다면 2차 차분을 할 필요는 없다

     

    정상성 검정

    H0: 정상성을 띄지 않는다. 

    H1: 정상성을 띈다.

     

     

    ARIMA(p, d, q)

    • ARIMA의 목적: 종속변수 y를 시간을 가지고 예측하는 것
      • AR + I(diff=차분값) + MA

     

    AR

    - 자기회귀과정, 과거의 값이 현재의 값에 얼마나 영향을 미쳤는지.

    - 과거의 값이 현재의 값에 영향을 미치지 않는다면 해당 모형의 성능은 낮아짐
    - 최적의 성능을 가지는 모델을 만들 수 있는 과거의 값이 p이다.
    - PACF 편자기상관 함수로 p값을 찾음
        - 0에 수렴하기 전이 p
        - 0에 수렴하기 전인 1이 p값
        ![image.png](attachment:image.png)
    
    AM --> p값 찾기

     

     

    MA

    이동평균, 과거의 예측 오차들의 가중이동평균으로 현재 시점의 데이터를 표현하는 모형

    - 최적의 모형이 되는 q값을 찾는다.
    - ACF 자기상관 함수로 q값을 찾음. 
        - 0으로 수렴하기 전이 q
    
     
    MA--> q값 찾기

     

     

     

    ARIMA(p, d, q) 모형 만들기

    • 추세만 반영하고 계절성 반영 X
    • Autoregressive integrated Moving Average
    • 과거의 데이터를 사용하는 것을 넘어 과거의 데이터가 지니고 있는 추세까지 반영하여 미래의 시점의 데이터를 예측하는 모형
    • 시계열 외 다른 자료가 없을 때, 그 변동 상태를 확인할 수 있다는 장점이 있으며, 어떠한 시계열도 적용 가능한 모델임

    AR(자기상관): 이전의 값이 이후의 값에 영향을 미치는 상황--> 얼마나 이전의 상황인지? p
    MR(이동평균): 랜덤 변수의 평균값이 지속적으로 증가 또는 감소하는 추세---> 랜덤 변수가 몇 개의 이동평균을 가질 건지? q

    ARIMA 모형 파라미터

    • endog(array_like) =시계열 y값
    • exog(array_like)= 시계열 이외의 다른 x들
    • order= (p, d, q)
    • dates(array_like): datetime 객체의 배열과 유사한 객체로 pandas객체가 endog나 exog에 제공되면 dateindex있는 것으로 간주

     

    모델링 및 해석

     

    시각화

     

     

    테스트

    forecast()

    • ARIMA에서 예측할 때는 predict()보다 forecast()함수를 주로 쓴다.
    • steps: 현재 시점에서부터 미래로 몇 단계(시간 단계 또는 관측치 단계) 만큼 예측할 길이 할당.
    • alpha: 유의수준(0.05 주로 쓰며, 신뢰구간 95%를 이야기함)

     

     

    r스퀘어, RMSE 값 확인

    - 그래프를 봤을 때 제대로 예측을 못했다는 것을 확인했다. 결정계수가 음수가 나왔다는 것은 해당 모델의 정확도가 매우 낮다는 것이다. ARIMA 모델은 추세만을 반영하고 계절성을 반영하지 못하기 때문에 예측을 잘 하지 못한다. 따라서 계절성을 반영한 SARIMA 모델을 사용하는 것이 좋다.

     

     

    SARIMA

    • 데이터가 지닌 계절성(주기에 따라 유사한 양상으로 변하는 모양)까지 고려한 ARIMA 모델

    auto ARIMA

    • 자동으로 sarima 분석을 수행한다.
    • start p, d, start q ---> max p, max_d, max_q: 비계절적 ARIMA(p,d,q)모델의 초기값과 최대값 설정
    • startP, startQ -->maxP, maxQ: 계절성 갖는 ARIMA(P, D, Q, m) 모델의 초기 값과 최댓값
    • seasonal= True 계절성 고려
    • information_criterion: 모델 평가에 사용할 정보 기준
    • trace= True 모델 선택 과정 출력
    • sepwise=True 모델의 파라미터 단계적으로 선택하도록 설정

     

    auto ARIMA 설치

    pip install pmdarima

     

     

    모델링

    다양한 방법으로 모델링해보자.

     

     

    best model

    start- max, d에 대한 적당한 파라미터 값을 넣었을 때

    가장 아래에 나오는 것이 Best model이다.

     

     

    데이터확인 plot_diagnostics

    1. 시간 경과에 따른 표준화 잔차 -> 잔차에서 특정 패턴이 없다.
    2. 히스토그램과 표준화된 잔차의 추정된 밀도, 참조를 위해 그려진 Normal(0,1) 밀도-> 정규분포를 띈다.
    3. 일반 기준선이 있는 일반 QQ plot -> 정규성을 띈다.
    4. 상관도

     

     

    plot_diagnostics

     

     

    데이터 예측

     

    시각화

     

     

    평가

     

     

     

     

    신뢰구간 최소, 최대값 구하는 방식(SARIMA)

    • 예측값, mse, 신뢰구간의 최소.최댓값 구하는 방식
    • order = (p,d,q)
    • seasonal_order =(P,D,Q,s)

     

     

    모델링

     

     

    신뢰구간

     

     

    신뢰구간 시각화 fill_between

     

    모델 평가

     

     

    시계열분석 데이터분석