본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Autocorrelation Function, ACF; 자기상관함수, 자기상관성 함수
시계열 데이터에서 시차(lag) k 만큼 떨어진 자기 자신의 값들 사이의 상관관계를 시차별로 나타낸 함수

시계열은 시간 순서로 관측되므로 오늘 값이 어제 값과 비슷하게 움직이는 경우가 많다. 이처럼 한 변수가 자기 자신의 과거 값과 상관되어 있는 성질을 자기상관(자기상관성)이라 하고, 그 크기를 시차 1, 2, 3, … 마다 계산해 늘어놓은 것이 자기상관 함수이다. 두 변수 사이의 상관을 보는 상관 분석을 한 시계열과 그 시차 이동본 사이에 적용한 것으로 볼 수 있다.

정상 시계열 Xt 의 시차 k 자기상관계수는

ρk=Cov(Xt,Xt−k)Var(Xt)

관측된 시계열 x1, …, xn 에서는 표본 자기상관계수로 추정한다.

rk=∑t=k+1n(xt−x¯)(xt−k−x¯)∑t=1n(xt−x¯)2
  • ρ0 = 1 이다. 자기 자신과의 상관이기 때문이다
  • 값의 범위는 −1 ~ 1 이고, 시차에 대해 대칭이다(ρk = ρ−k)
  • 분자가 공분산이므로 시차 k 에서의 공분산을 시차 0 의 분산으로 나눈 것이다

시차를 가로축, rk 를 세로축으로 막대를 그린 그림을 코렐로그램(correlogram, ACF 그림)이라 한다. 보통 ±1.96/√n 의 신뢰 한계를 함께 그려, 그 밖으로 나간 막대를 유의한 자기상관으로 본다.

코렐로그램 모양 해석
시차 1 이상에서 모두 신뢰 한계 안 백색잡음. 남은 자기상관이 없다
아주 천천히 줄어든다 추세가 있는 비정상 시계열. 차분이 필요하다
일정 간격(예: 12, 24)마다 크게 솟는다 계절성이 있다
어느 시차 뒤로 갑자기 0 근처로 떨어진다(절단) MA 과정의 특징
지수 곡선이나 사인 곡선처럼 서서히 줄어든다(감소) AR 과정의 특징

부분자기상관 함수와 비교

편집 원본 편집

부분자기상관 함수(편자기상관 함수, Partial ACF, PACF)는 시차 k 의 상관에서 그 사이 시점(1, …, k−1)의 영향을 제거한 순수한 상관이다. ACF 는 중간 시점을 거쳐 이어진 간접 상관까지 모두 포함한다.

모형 ACF PACF
AR(p) 서서히 감소 시차 p 이후 절단
MA(q) 시차 q 이후 절단 서서히 감소
ARMA(p, q) 서서히 감소 서서히 감소
  • AR 차수는 PACF 로, MA 차수는 ACF 로 정한다. 둘을 바꾸면 틀린다
  • 이 두 그림으로 ARIMA 의 p, q 를 고르는 것이 박스-젠킨스 방법의 모형 식별 단계이다 → 자기 회귀 모델
  • 정상성 판단 : 정상 시계열은 ACF 가 비교적 빨리 0 으로 줄어들고, 비정상 시계열은 아주 천천히 줄어든다. 통계적 검정은 디키-풀러 테스트로 한다
  • 모형 식별 : ACF·PACF 의 절단과 감소 모양으로 AR·MA·ARMA 와 차수를 고른다
  • 잔차 진단 : 시계열 모형의 잔차는 백색잡음(평균 0, 분산 일정, 자기상관 0)이어야 한다. 잔차의 ACF 가 모두 신뢰 한계 안이면 모형이 시계열의 구조를 다 설명한 것이다. 여러 시차를 한꺼번에 검정할 때는 융-박스(Ljung-Box) 검정을 쓴다
  • 회귀 잔차 점검 : 회귀 분석은 오차끼리 독립이라고 가정한다. 시간 순서 자료에서 잔차에 자기상관이 있으면 이 가정이 깨진다. 1차 자기상관은 더빈-왓슨(Durbin-Watson) 통계량으로 보며, 2 근처이면 자기상관이 없다고 본다

헷갈리는 개념

편집 원본 편집
개념 무엇을 보는가
자기상관 함수 한 시계열과 자기 자신의 시차 이동본 사이의 상관
부분자기상관 함수 중간 시점의 영향을 뺀 시차 k 의 상관
교차상관 함수 서로 다른 두 시계열 사이의 시차별 상관
시계열 분해 시계열을 추세·계절·순환·불규칙 요인으로 나누는 기법. 상관을 계산하는 함수가 아니다
실루엣 계수 군집 분석의 결과가 얼마나 잘 나뉘었는지 재는 지표
회귀계수 회귀식에서 독립변수가 종속변수에 미치는 크기

자기상관성은 시계열 자료가 가진 성질로, 시계열 모형을 세우거나 잔차를 진단할 때 확인한다. 일반적인 지도 학습 모델을 고를 때 따지는 것은 데이터의 형태와 양, 분석 목적, 변수의 중요도 등이며, 자기상관성은 이런 모델 선정 기준이 아니다.

import numpy as np
from statsmodels.tsa.stattools import acf, pacf
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.stats.diagnostic import acorr_ljungbox

rng = np.random.default_rng(0)
e = rng.normal(size=300)
x = np.zeros(300)
for t in range(1, 300):          # AR(1): x_t = 0.7 x_{t-1} + e_t
    x[t] = 0.7 * x[t - 1] + e[t]

print(acf(x, nlags=5))           # 0.7, 0.49, ... 처럼 서서히 감소
print(pacf(x, nlags=5))          # 시차 1 뒤로 0 근처(절단)
plot_acf(x, lags=20); plot_pacf(x, lags=20)
print(acorr_ljungbox(e, lags=[10]))   # 백색잡음이면 p-값이 크다
  • Box, G. E. P., Jenkins, G. M., Reinsel, G. C., & Ljung, G. M. (2015). Time Series Analysis: Forecasting and Control (5th ed.). Wiley.
  • Hyndman, R. J., & Athanasopoulos, G. (2018). Forecasting: Principles and Practice.