자기상관(Autocorrelation)은 시계열 데이터가 과거 시점의 자기 자신과 얼마나 유사한 패턴을 보이는지를 측정하는 통계 지표입니다. 이 글에서는 pandas 라이브러리의 autocorr() 메서드를 사용하여 시계열 데이터와 특정 시차(lag) 사이의 자기상관을 계산하는 방법을 단계별로 살펴보겠습니다.
목표 결과 미리 보기
다음과 같은 시계열 데이터가 있고, 시차 2에 대한 자기상관을 구한다고 가정해 보겠습니다.
Series is:
0 2.0
1 10.0
2 3.0
3 4.0
4 9.0
5 10.0
6 2.0
7 NaN
8 3.0
dtype: float64
series correlation:
-0.4711538461538461
series correlation with lags:
-0.2933396642805515
해결 방법
이 문제는 아래 단계를 따라 해결할 수 있습니다.
분석할 시계열(Series) 데이터를 정의합니다.
series.autocorr()메서드를 호출하여 기본 자기상관(시차 1 기준)을 계산합니다.lag매개변수를 지정하여 원하는 시차의 자기상관을 구합니다.
series.autocorr()
시차 2에 대한 자기상관은 다음과 같이 계산합니다.
series.autocorr(lag=2)
예제 코드
아래 전체 코드를 통해 실제 동작을 확인해 보겠습니다.
import pandas as pd
import numpy as np
series = pd.Series([2, 10, 3, 4, 9, 10, 2, np.nan, 3])
print("Series is:\n", series)
print("series correlation:\n", series.autocorr())
print("series correlation with lags:\n", series.autocorr(lag=2))
출력 결과
Series is:
0 2.0
1 10.0
2 3.0
3 4.0
4 9.0
5 10.0
6 2.0
7 NaN
8 3.0
dtype: float64
series correlation:
-0.4711538461538461
series correlation with lags:
-0.2933396642805515
코드 설명
autocorr() 메서드는 별도의 인자 없이 호출하면 기본적으로 시차 1에 대한 자기상관을 계산합니다. 위 예제에서는 약 -0.471이라는 음의 상관관계가 나타났습니다. 반면 lag=2를 지정하면 두 칸 떨어진 값들 사이의 상관관계를 계산하여 약 -0.293의 결과를 얻을 수 있습니다.
또한 데이터에 포함된 NaN(결측치)은 자동으로 제외되고 계산되므로, 결측치 처리를 위해 별도의 전처리를 수행할 필요가 없다는 점도 참고하면 좋습니다. 이처럼 autocorr() 메서드 하나만으로 다양한 시차 구간의 자기상관을 손쉽게 분석할 수 있습니다.