Jak obliczyć autokorelację w pythonie


Autokorelacja mierzy stopień podobieństwa między szeregiem czasowym a jego opóźnioną wersją w kolejnych odstępach czasu.

Czasami nazywa się ją także „korelacją szeregową” lub „korelacją opóźnioną”, ponieważ mierzy związek między bieżącymi wartościami zmiennej a jej wartościami historycznymi.

Gdy autokorelacja w szeregu czasowym jest wysoka, łatwo jest przewidzieć przyszłe wartości, po prostu odnosząc się do wartości z przeszłości.

Jak obliczyć autokorelację w Pythonie

Załóżmy, że mamy w Pythonie następujący szereg czasowy, który pokazuje wartość pewnej zmiennej dla 15 różnych okresów:

 #define data
x = [22, 24, 25, 25, 28, 29, 34, 37, 40, 44, 51, 48, 47, 50, 51]

Możemy obliczyć autokorelację dla każdego opóźnienia w szeregu czasowym za pomocą funkcji acf() z biblioteki statsmodels:

 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])

Sposób interpretacji wyniku jest następujący:

  • Autokorelacja przy opóźnieniu 0 wynosi 1 .
  • Autokorelacja przy opóźnieniu 1 wynosi 0,8317 .
  • Autokorelacja przy opóźnieniu 2 wynosi 0,6563 .
  • Autokorelacja przy opóźnieniu 3 wynosi 0,4910 .

I tak dalej.

Możemy również określić liczbę opóźnień za pomocą argumentu nlags :

 sm.tsa.acf(x, nlags= 5 )

array([1.0, 0.83174224, 0.65632458, 0.49105012, 0.27863962, 0.03102625])

Jak wykreślić funkcję autokorelacji w Pythonie

Możemy wykreślić funkcję autokorelacji dla szeregów czasowych w Pythonie za pomocą funkcji tsaplots.plot_acf() z biblioteki statsmodels:

 from statsmodels.graphics import tsaplots
import matplotlib.pyplot as plt

#plot autocorrelation function
fig = tsaplots.plot_acf(x, lags=10)
plt.show() 

Funkcja autokorelacji w Pythonie

Oś x wyświetla liczbę opóźnień, a oś y wyświetla autokorelację przy tej liczbie opóźnień. Domyślnie wykres zaczyna się od opóźnienia = 0, a autokorelacja będzie zawsze wynosić 1 przy opóźnieniu = 0.

Możemy także przybliżyć pierwsze opóźnienia, wybierając opcję mniejszej liczby opóźnień za pomocą argumentu opóźnień :

 from statsmodels.graphics import tsaplots
import matplotlib.pyplot as plt

#plot autocorrelation function
fig = tsaplots.plot_acf(x, lags= 5 )
plt.show() 

Wykreślanie funkcji autokorelacji w Pythonie

Możesz także zmienić tytuł i kolor okręgów używanych na wykresie za pomocą argumentów tytułu i koloru :

 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() 

Funkcja autokorelacji w Pythonie z niestandardowym tytułem

Więcej samouczków dotyczących Pythona znajdziesz na tej stronie .

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *