如何用 python 计算自相关


自相关衡量连续时间间隔内时间序列与其自身滞后版本之间的相似程度。

有时也称为“序列相关”或“滞后相关”,因为它衡量变量的当前值与其历史值之间的关系。

当时间序列中的自相关性较高时,只需参考过去的值即可轻松预测未来值。

如何用 Python 计算自相关

假设我们在 Python 中有以下时间序列,显示 15 个不同时期内某个变量的值:

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

Python中的自相关函数

x 轴显示滞后数,y 轴显示该滞后数处的自相关。默认情况下,绘图从 lag = 0 开始,并且在 lag = 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() 

在 Python 中绘制自相关函数

您还可以使用标题和颜色参数更改图使用的圆圈的标题和颜色

 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 中具有自定义标题的自相关函数

您可以在此页面上找到更多 Python 教程。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注