原文作者:Jason Brownlee
原文地址:https://machinelearningmastery.com/gentle-introduction-autocorrelation-partial-autocorrelation/
译者微博:@从流域到海域
译者博客:blog.csdn.net/solo95
自相关(Autocorrelation)和偏自相关(partial autocorrelation)图在时间序列分析和预测被广泛应用。
这些图以图形方式总结了时间序列中的观测值(observation)和先前时间步中的观测值(observation)之间关系的强度。自相关和偏自相关之间的区别对于初学者进行时间序列预测来说可能是困难并且疑惑的。
在本教程中,您将了解如何使用Python计算和绘制自相关和偏自相关图。
完成本教程后,您将知道:
让我们开始吧。
这个数据集描述了澳大利亚墨尔本市十年(1981-1990)的每日最低温度。
单位是摄氏度,共有3650个观测值。数据的来源是澳大利亚气象局。
了解更多信息并从Dara Market下载该数据集。
下载数据集并将其放在当前工作目录中,文件命名为“ daily-minimum-temperatures.csv ”。
注意:下载的文件包含一些问号(“?”)字符,在使用数据集之前必须将其删除。在文本编辑器中打开文件并删除“?”字符。也请删除该文件中的任何页脚信息。
下面的例子将会加载“每日最低温度数据集”并绘制时间序列图。
from pandas import Series
from matplotlib import pyplot
series = Series.from_csv('daily-minimum-temperatures.csv', header=0)
series.plot()
pyplot.show()
运行该示例将数据集加载为Pandas Series,并创建一个时间序列的线图。
统计相关性总结了两个变量之间关系的强度。
我们可以假设每个变量的分布符合高斯(钟形曲线)分布。如果真的是这种情况,我们可以用皮尔逊相关系数(Pearson’s correlation coefficient)来总结变量之间的相关性。
皮尔逊相关系数(Pearson’s correlation coefficient)是介于-1和1之间的数字,分别描述负相关或正相关。零值表示不相关。
我们可以以先前的时间步观测值计算时间序列观测值的相关性,称为lags(滞后)。因为时间序列观测值的相关性是用前一次同一系列的观测值计算的,所以称为序列相关或自相关。
通过lags产生的时间序列自相关图被称为AutoCorrelation Function(自相关函数,如果直译的话,译者注),或简称ACF。这个图有时被称为相关图或自相关图。
下面是使用statsmodels库中的plot_acf()函数计算和绘制Minimum Daily Temperatures的自相关图的示例。
from pandas import Series
from matplotlib import pyplot
from statsmodels.graphics.tsaplots import plot_acf
series = Series.from_csv('daily-minimum-temperatures.csv', header=0)
plot_acf(series)
pyplot.show()
运行该示例将创建一个二维图,显示沿x轴的滞后值以及在-1和1之间的y轴上的相关性。
置信区间(Confidence intervals)被描绘成一个圆锥体。默认情况下,会被设置为95%的置信区间,表明这个代码之外的相关值很可能是一次相关而不是一个统计上的偶然事件。
默认情况下,所有的滞后值(lag values)都会打印出来,这使得图表噪音很大(指图表上干扰数据太多,译者注)。
我们可以将x轴上的滞后数量限制为50,以使图更容易阅读。
偏自相关是时间序列中的观测值与去除掉干预观测值之间的关系的前先前时间步观测值之间的关系的摘要。
滞后(lag)为K的偏自相关是这样的相关,它去除了由于更短的滞后(lags)引起的任何相关
—— 第81页,第4.5.6节偏自相关,Introductory Time Series with R(时间序列的R实现导论)
在先前的时间步中的观测值和观测值的自相关包括直接相关和间接相关。这些间接相关性是观测值相关性的线性函数,包括在干预时间步上的观测值。
偏自相关函数试图消除这些间接相关性。没有进入数学的领域,这是偏自相关的直观认识(intuition)(intuition有凭直觉感知的知识的意思,这里是意译)。
下面的示例使用statsmodels库中的plot_pacf()计算并绘制出使用前50个滞后的的每日最低温度数据集偏自相关函数。
from pandas import Series
from matplotlib import pyplot
from statsmodels.graphics.tsaplots import plot_pacf
series = Series.from_csv('daily-minimum-temperatures.csv', header=0)
plot_pacf(series, lags=50)
pyplot.show()
运行该示例创建了使用前50个滞后(lags)的偏自相关的二维图。
每日最低温度数据集的偏自相关图
自相关函数图和时间序列的偏自相关函数说明了一个完全不同的事情。
我们可以用ACF和PACF的直观认识(intuition)来探索一些思想实验。
考虑由自回归(AR)过程产生的滞后时间为k的时间序列。
我们知道,ACF描述了一个观测值与另一个观测值之间的自相关,包括直接和间接的相关性信息。
这意味着我们可以预期AR(k)时间序列的ACF强大到(如同使用了)k的滞后,并且这种关系的惯性将继续到之后的滞后值,随着效应被削弱而在某个点上缩小到没有。
我们知道,PACF只描述观测值与其滞后(lag)之间的直接关系。这表明,超过k的滞后值(lag value)不会再有相关性。
这正是ACF和PACF图对AR(k)过程的预期。
考虑由滑动平均(MA)过程产生的滞后(lag)时间为k的时间序列。
请记住,滑动平均过程是先前预测的残留偏差的时间序列的自回归模型。考虑滑动平均模型的另一种方法是根据最近预测的错误修正未来的预测。
我们期望MA(k)过程的ACF与最近的lag值之间的关系显示出强烈的相关性,然后急剧下降到低或者无相关性。根据定义,这解释了整个过程是如何产生的。
对于PACF,我们预计图会显示与滞后(lag)的关系,以及滞后(lag)之前的相关。
再次强调,这正是MAF(k)过程的ACF和PACF图的预期。
在本教程中,您了解了如何使用Python计算时间序列数据的自相关和偏自相关图。
具体来说,你了解到: