시계열 데이터 분석

2024. 7. 7. 22:01데이터분석

[개념]

 

1. 정상성과 비정상성 

정상성이란 ARIMA 모델링을 통해 시계열 데이터를 분석할 때 필수적으로 고려해야하는 가정으로 시점에 무관하게 과거, 현재, 미래의 분포가 같을 때 정상성을 띈다 말하고 추세를 보이거나 계절성을 보이면 비정상성을 띈다고 말한다. 

 

 

2. 추세, 계절성, 주기성 

추세란 데이터가 장기적으로 위로 올라가는지 내려가는지를 말한다. 

계절성은 해마다 어떤 특정한 때나 1주일로 봤을 때 특정 요일에 나타나는 계절성 요인을 말한다. 

주기성은 고정된 빈도가 아닌 형태로 증가나 감소하는 모습을 보이는 것이다. 

계절성은 1면 마다 같은 변화가 생기는 것이고 주기는 1년보다 길고 다양하며 변동폭이 훨씬 크다. 

 

추세 그래프 : 2,3 / 계절성 그래프 : 1, 3 / 주기성 그래프 : 1

 

3. 백색잡음, 확률 보행

 

1) 백색잡음(white noise)

정상성을 띄는 대표적인 예로 평균이 0이고 분산이 유한한 확률분포로부터 자기상관이 없게 무작위로 추출된 시계열 데이터를 말한다.  즉, 시계열 데이터를 전처리한다는 것은 백색잡음으로 얻어내는 것을 의미한다 볼 수 있고, 이러한 백색잡음을 통해 모델에서 시계열 데이터 분석과 예측을 실시할 수 있게 된다.

 

백색작읍은 2가지 속성을 만족해야하고, 하나라도 만족하지 않으면 모델에 대한 개선여지가 있음을 의미한다. 

- 잔차들은 평균이 0인 정규분포이며, 일정한 분산을 가져야 한다. 

- 잔차들이 시간의 흐름에 따른 상관성이 없어야 한다.

-> 이러한 상관성을 자기상관성(autocorrelation)이라 부른다. 

-> 각 데이터 포인트가 각각 독립성을 지니는 것은 시계열 데이터의 기본적인 가정이기도 하며 이를 i.i.d 라고도 부른다.(individually and independently distributed) 

-> 이러한 상관성은 ACF, PACF등과 같은 함수들을 통해 확인해 볼 수 있다. 

- 시계열 예측 모델이 실제 현상의 트렌드 및 주기를 잘 반영할 수록 잔차의 변동이 작아지게 되고 이를 바탕으로 모델이 개선되었는지 여부를 파악할 수 있습니다.

 

from random import gauss  # 가우스(정규) 분포로부터 난수를 생성하기 위한 함수 임포트
from random import seed  # 난수 생성의 일관성을 위해 시드 값을 설정하는 함수 임포트
from pandas import Series  # 데이터 조작 및 분석을 위한 Series 객체를 사용하기 위한 임포트
import matplotlib.pyplot as plt  # 데이터 시각화를 위한 matplotlib.pyplot 모듈 임포트

generator = seed(1)  # 난수 생성기의 시드 값을 1로 설정하여 난수의 재현성 확보
series = [gauss(0.0, 1.0) for i in range(1000)]  # 평균 0, 표준편차 1인 정규분포에서 1000개의 난수 생성
series = Series(series)  # 생성된 난수 리스트를 pandas의 Series 객체로 변환
print(series.describe())  # Series의 기술 통계량 출력 (평균, 표준편차, 최소값, 최대값 등)

series.plot()  # Series 데이터를 선 그래프로 시각화
plt.show()  # 그래프를 화면에 표시

 

# 평균 0, 표준편차 1인 정규분포에서 1000개의 난수 생성 -> * series = [gauss (0.0, 1.0) for i in range(1000)] 

# 평균 0, 표준편차 3인 정규분포에서 2000개의 난수 생성 ->* series = [gauss (0.0, 3.0) for i in range(2000)] 

 

2) 확률 보행(random walk) 

수학에서 확률보행은 어떤 수학적인 공간(예 : 정수)에서 연속적인 무작위 스텝의 이동경로를 묘사하는 수학적인 객체를 말한다. 예시로 동전 던지기로 점수를 매길 때 앞면이 나오면 +1, 뒷면이 나오면 -1로 하고 그래프를 그려보면 확률보행과정 그래프가 완성이 된다. 

 

import numpy as np  # 수학적 연산과 배열 관리를 위한 NumPy 라이브러리 임포트

probability = [0.5, 0.5] # 확률 배열, 여기서는 아래로 움직일 확률과 위로 움직일 확률이 각각 50%
start = 0  # 랜덤 워크의 시작 위치
rand_walks = [start]  # 랜덤 워크를 기록할 리스트, 시작 위치를 초기 요소로 설정

rand_point = np.random.random(300)  # 0과 1 사이의 난수 300개 생성
down_probability = rand_point < probability[0]  # 생성된 난수가 0.5(아래로 움직일 확률)보다 작은지 여부
up_probability = rand_point >= probability[1]  # 생성된 난수가 0.5(위로 움직일 확률)보다 크거나 같은지 여부

for down, up in zip(down_probability, up_probability):
    rand_walks.append(rand_walks[-1] - down + up)  # 새로운 위치를 계산하여 리스트에 추가
    # down과 up은 각각 boolean 값으로, True는 1, False는 0으로 계산되어 위치 변경에 활용

plt.plot(rand_walks)  # 랜덤 워크 시퀀스를 선 그래프로 시각화
plt.show()  # 그래프 표시

 

 

시계열 데이터 종류

- 국내총샌상량(GDP), 금융데이터, 날씨 or 강수량 데이터, 소비자 물가 지수, 실업률 등

- 시계열 데이터는 연속 시계열 데이터와 이산 시계열 데이터로 나누어진다. 

연속 시계열 데이터 : 연속적으로 생성되는 시계열 자료로서, 관측 값들이 연속적으로 연결된 형태의 자료를 의미한다. 

이산 시계열 데이터  : 연속 시계열 데이터는 모든 시점이 연결되어 있기 때문에 분석하기 부담스러워 이산 시계열 데이터를 많이 사용한다. 이산 시계열 데이터란 특정 시점에서 측정한 관측값들의 집합을 말한다. 

 

 

4. 잔차 진단 (시계열 데이터 모델의 기본가정들)

 

- 잔차에 대한 진단은 정상성, 정규분포, 자기상관성, 등분산성 총 4가지를 검정하게 되며, 이러한 특성은 시계열 데이터 모델의 기본가정 이기도 하다. 

 

1) 정상성(Stationarity)

- 시간에 관계없이 일정한 상태를 유지하는 것 

- 내재적인 패턴의 존재를 의미하는 단위근(Unit Root) 존재여부를 검정한다.

- 대표적으로는 ADF 검정(Augemented Dickey-Fuller Test), KPSS 검정(Kwiatkowski-Phillips-Schmidt-Shin Test)이 있고, 이 둘의 귀무가설을 서로 반대임을 주의해야합니다.

-> ADF 검정의 귀무가설(H 0 ​ ) : 단위근(Unit Root) 존재한다 (비정상) 

-> KPSS 검정의 귀무가설(H 0 ​ ) : 단위근(Unit Root)이 없다 (정상)

 

2) 정규분포(Normal distribution) 

- 귀무가설(H 0 ​ ) : 정규분포를 따른다. 

- 대립가설(H a ​ ) : 정규분포를 따르지 않는다. 

- Shapiro-Wilk test, Kolmogorov-Smirnov test 등 다양한 방법들이 있습니다.

 

3) 자기상관성(Autocorrelation) 

- 귀무가설(H 0 ​ ) : 시간이 지나면 autocorrelation 은 0이다.  자기상관관계가 없다. 

- 대립가설(H a ​ ) : 시간이 지나면 autocorrelation 은 0이 아니다. 자기상관관계가 있다. 

- Ljung-Box test, Portmanteau test 등 다양한 방법들이 있다.

 

4) 등분산성(Homoscedasticity) 

- 귀무가설(H 0 ​ ) : 시간이 지나면 등분산이다. 

- 대립가설(H a ​ ) : 시간이 지나면 등분산이 아니다. 발산하는 분산이다.

- Goldfeld-Quandt test, Breusch-Pagan test 등 다양한 방법들이 있다.

 

5. 시계열 데이터의 처리 

시계열 데이터는 추세변동, 계절변동 등 크고 작은 다양한 변동요인들이 다중적으로 중첩되어 있습니다. 

이러한 시계열 데이터의 분석을 수행할 때에는 크게 2가지의 접근법을 이용할 수 있습니다.

 

요소분해법(Decomposision)

- 내포된 변동요인이 고정적인 패턴을 보이는 경우 -> 가법모형(Additive)

- y t ​ =S t ​ +T t ​ +C t ​ +R t ​

- 선형적이고, Trend, Seasonal, Cycle이 서로 독립적이라 가정할 수 있는 경우에 이용된다.

 

승법모형(Multiplicative)

- y t ​ =S t ​ ∗T t ​ ∗C t ​ ∗R t ​

- 비선형적이고, Trend, Seasonal, Cycle이 서로 영향을 주고받는 경우에 이용됩니다.

 

평활법(Smooting) 

- 다양한 변동요인이 고정적인 패턴을 보이지 않는 경우 -> 이동평균 평활법(MA Smoothing)

- 과거로부터 현재까지의 시계열 자료를 대상으로 일정 기간별 이동평균을 계산하고 이들의 추세를 통해 다음 기간을 예측

 

지수평균 평활법(Exponential Smooting)

- 모든 시계열 자료를 사용하여 평균을 구하고, 시간의 흐름에 따라서 최근 시계열에 더 많은 가중치를 부여하여 미래의 값을 예측

 

시계열 데이터 처리 방법들 

- 변동폭이 일정하지 않은 경우 : log 변환 추세

- 계절성이 존재하는 경우 : 차분(differencing)

 

[2]시계열 확률모형(stochastic model) 

  • 모형 동향에 따른 잔차와 잔차의 분포 (Residual): 분석 모형에서 추정되지 않는 잔차(Residual) 또는 시계열 자료의 잔차 오차(Residual Error Series)는 확률 과정을 통해 나타낼 수 있다.
    • 이때 고려되는 모델이 확률모형(Stochastic Model)이다.
    • 시계열 분석 모델의 설계 혹은 적합한 경우에 시계열 자료는 백색잡음(White Noise)이 되는 것을 바탕으로 한다.
    • 예: xt=yt−y^t∼N(0,σ2)x_t = y_t - \hat{y}_t \sim N(0, \sigma^2)
    • 여기서, 잔차는 서로 독립적인 공간에 시계열 분석 모델이 실제 상황을 잘 설명하고 있다고 해석할 수 있음을 의미한다.
  • 확률모형의 분석 단계 4가지:
    1. 모델 식별 (Model Identification):
      • ACF, PACF 같은 지표와 ARMA, ARIMA와 같은 프로세스를 이용하여 적합한 모델을 선택한다.
    2. 모수 추정 (Parameter Estimation):
      • 선택한 모델에 따라 모수(계수)를 추정하고 점추정을 거친다.
    3. 통계적 검정 (Statistical Testing):
      • 모델의 적합도에 따른 통계적 상정성과 백색잡음에 대한 검정을 수행한다.
    4. 예측 (Forecasting):
      • 시계열 분석 모델을 통해 미래의 값에 대한 예측을 실시한다.

 

2-1. 단일 변량 시계열 모델

AR 모델 (자기회귀 모델, AutoRegressive Model)

  • 개념: 과거 자신의 관측값으로부터 미래 값을 예측하는 모델.
  • 수식: yt=c+ϕ1yt−1+ϕ2yt−2+...+ϕpyt−p+ϵty_t = c + \phi_1 y_{t-1} + \phi_2 y_{t-2} + ... + \phi_p y_{t-p} + \epsilon_t
  • 특징:
    • 계수(Φ)가 시계열의 과거 값에 미치는 영향을 나타낸다.
    • 잔차(ε)는 화이트 노이즈를 가정한다.

MA 모델 (이동 평균 모델, Moving Average Model)

  • 개념: 과거 오차 항을 이용하여 현재의 값을 예측하는 모델.
  • 수식: yt=c+θ1ϵt−1+θ2ϵt−2+...+θqϵt−q+ϵty_t = c + \theta_1 \epsilon_{t-1} + \theta_2 \epsilon_{t-2} + ... + \theta_q \epsilon_{t-q} + \epsilon_t
  • 특징:
    • 계수(θ)는 과거의 예측 오차에 대한 반응을 나타낸다.

ARMA 모델 (자기회귀 이동 평균 모델, AutoRegressive Moving Average Model)

  • 개념: AR 모델과 MA 모델의 특성을 결합한 모델.
  • 수식: yt=AR(p)+MA(q)y_t = AR(p) + MA(q)
  • 특징:
    • 과거의 값과 과거의 예측 오차 모두를 사용하여 현재 값을 예측한다.
    • ARMA(1,0)은 AR(1)이고, ARMA(0,1)은 MA(1)과 동일하다.

ARIMA 모델 (차분 자기회귀 이동 평균 모델, AutoRegressive Integrated Moving Average Model)

  • 개념: 비정상 시계열 데이터에 대해 차분을 통해 정상성을 확보한 뒤 ARMA 모델을 적용하는 모델.
  • 수식: ARIMA(p,d,q)에서 d는 차분의 차수를 나타내며, 차분을 통해 데이터를 정상 시계열로 변환한다.
  • 특징:
    • p와 q는 AR과 MA의 차수를 나타낸다.
    • d는 필요한 차분의 차수를 나타내며, 이를 통해 시계열의 비정상성을 제거한다.
    • AIC, BIC, ACF, PACF 등을 사용하여 모델의 차수를 선택한다.

 

ACF (AutoCorrelation Function, 자기상관함수)

  • 정의: 시차(lag)에 따라 같은 변수의 다른 시점 간 상호 연관성을 측정하는 함수이다. 
  • 특징:
    • 시차가 커질수록 일반적으로 상관계수는 0에 수렴한다.
    • 시계열 데이터의 정상성 여부를 파악하는 데 사용된다.
    • 정상 시계열은 상관계수가 빠르게 0으로 수렴하며, 비정상 시계열은 천천히 감소한다.
    • MA, ARMA, ARIMA 모델에서 q 값(이동 평균의 차수)을 추정할 때 유용하다. ACF 그래프에서 상관계수가 처음으로 0을 중심으로 하는 신뢰구간 (보통 ±1.96/√n) 안에 들어가는 지점을 q 값으로 설정할 수 있다. 

PACF (Partial AutoCorrelation Function, 부분자기상관함수)

  • 정의: 시차에 따른 두 시점 간의 순수한 상호 연관성을 측정하는 함수로, 중간 시점의 변수 영향을 제거한 상태에서의 상관관계이다.
  • 특징:
    • 각 시차에서, 그 시차에 해당하는 두 시점의 상관관계를 측정하되, 그 사이의 모든 다른 시점들의 영향을 배제한다.
    • AR, ARMA, ARIMA 모델에서 p 값(자기회귀의 차수)을 추정할 때 사용된다. PACF 그래프에서 상관계수가 처음으로 0을 중심으로 하는 신뢰구간 내로 들어가는 지점을 p 값으로 설정할 수 있다.
    • 시계열 데이터가 AR의 특성을 보이는 경우, PACF는 일반적으로 급격히 감소하고 그 후에는 점차적으로 0에 수렴한다. 

 

 

<reference>

https://velog.io/@phs5145/%EC%8B%9C%EA%B3%84%EC%97%B4-%EB%8D%B0%EC%9D%B4%ED%84%B0-Time-series

 

시계열 데이터 Time-series

시계열이란 일정 시간 간격으로 배치된 데이터들의 수열을 말합니다. 즉, 시간의 흐름이 포함되어 있는 데이터라고 볼 수 있겠습니다.위와 같이 계절성, 추세가 있는 시계열이 있고 없는 시계열

velog.io

https://blog.naver.com/data_station/222493262626

 

[매일10분 데이터 분석] Time Series 시계열 분석 1탄

안녕하세요. 데이터 스테이션 입니다. 오늘은 Time Series , 시계열 분석에 대해 같이 알아보겠습니다. ...

blog.naver.com