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()
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()
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()
Więcej samouczków dotyczących Pythona znajdziesz na tej stronie .