Python에서 자기상관을 계산하는 방법
자기 상관은 연속적인 시간 간격에 걸쳐 시계열과 지연된 버전 간의 유사성 정도를 측정합니다.
변수의 현재 값과 과거 값 사이의 관계를 측정하기 때문에 “계열 상관” 또는 “지연 상관”이라고도 합니다.
시계열의 자기상관관계가 높으면 과거 값을 참고하는 것만으로도 미래 값을 예측하기 쉬워집니다.
Python에서 자기상관을 계산하는 방법
15개의 서로 다른 기간에 대한 특정 변수의 값을 보여주는 다음과 같은 Python 시계열이 있다고 가정합니다.
#define data
x = [22, 24, 25, 25, 28, 29, 34, 37, 40, 44, 51, 48, 47, 50, 51]
statsmodels 라이브러리의 acf() 함수를 사용하여 시계열의 각 지연에 대한 자기상관을 계산할 수 있습니다.
import statsmodels.api as sm #calculate autocorrelations sm.tsa.acf(x) array([ 1. , 0.83174224, 0.65632458, 0.49105012, 0.27863962, 0.03102625, -0.16527446, -0.30369928, -0.40095465, -0.45823389, -0.45047733])
결과를 해석하는 방법은 다음과 같습니다.
- 시차 0에서의 자기상관은 1 입니다.
- 시차 1의 자기상관은 0.8317 입니다.
- 시차 2에서의 자기상관은 0.6563 입니다.
- 시차 3의 자기상관은 0.4910 입니다.
등등.
nlags 인수와 함께 사용할 지연 수를 지정할 수도 있습니다.
sm.tsa.acf(x, nlags= 5 )
array([1.0, 0.83174224, 0.65632458, 0.49105012, 0.27863962, 0.03102625])
Python에서 자기상관 함수를 그리는 방법
statsmodels 라이브러리의 tsaplots.plot_acf() 함수를 사용하여 Python에서 시계열에 대한 자기상관 함수를 그릴 수 있습니다.
from statsmodels.graphics import tsaplots import matplotlib.pyplot as plt #plot autocorrelation function fig = tsaplots.plot_acf(x, lags=10) plt.show()
x축은 시차 수를 표시하고 y축은 해당 시차 수에 대한 자기상관을 표시합니다. 기본적으로 플롯은 시차 = 0에서 시작하고 자기 상관은 시차 = 0에서 항상 1 입니다.
lags 인수로 더 적은 수의 지연을 사용하도록 선택하여 첫 번째 지연을 확대할 수도 있습니다.
from statsmodels.graphics import tsaplots import matplotlib.pyplot as plt #plot autocorrelation function fig = tsaplots.plot_acf(x, lags= 5 ) plt.show()
title 및 color 인수를 사용하여 플롯에 사용된 원의 제목 과 색상을 변경할 수도 있습니다.
from statsmodels.graphics import tsaplots import matplotlib.pyplot as plt #plot autocorrelation function fig = tsaplots.plot_acf(x, lags= 5, color='g', title='Autocorrelation function' ) plt.show()
이 페이지 에서 더 많은 Python 튜토리얼을 찾을 수 있습니다.