Correlation 은 두 변수 간의 선형적 관계를 측정하고자 할 때 사용한다. 그런데 autocorrelation 은 자기 자신 (auto) 과 correlation 을 알아보고자 할 때 사용한다.자기 자신과의 관계이기 때문에 lag 된 값을 이용한다.예를 들어 discrete time series 데이터가 있을 때, autocorrelation coefficient 는 아래와 같이 구한다.

Lag 1 에 대해 $y_t$ 와 $y_{t-1}$ 의 관계는 $r_1$ 으로 표현하고, ... $y_t$ 와 $y_{t-k}$ 와의 관계는 $r_k$ 로 나타낼 수 있다.$ r_k$ 는 아래처럼 쓸 수 있다.

$$r_k = {\sum_{t=k+1}^T (y_t - \bar{y}) (y_{t-k} - \bar{y}) \over \sum_{t=1}^T (y_t - \bar{y})^2}$$

파이썬에서 autocorrelation 을 직접 구현하지 말고, 그냥 pandas 의 series 로 데이터를 변환하여 쓰자. 예제 코드는 아래와 같다.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

np.random.seed(0)
s = pd.Series(np.sin(range(1,100))) + pd.Series(np.random.randn(99)) # 임의의 time series 생성

plt.figure(facecolor='w',figsize=(20,3),dpi=120)
plt.plot(s)
plt.show()

s.autocorr(lag=1) # lag 1에 해당하는 autocorrelation을 리턴
Posted by 도전하는 공돌이pooh

댓글을 달아 주세요