自相关和偏自相关的简单介绍
A Gentle Introduction to Autocorrelation and Partial Autocorrelation
原文作者: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)
自相关函数图和时间序列的偏自相关函数说明了一个完全不同的事情。
我们可以用ACF和PACF的直观认识(intuition)来探索一些思想实验。
自回归直观认识(intuition)
考虑由自回归(AR)过程产生的滞后时间为k的时间序列。
我们知道,ACF描述了一个观测值与另一个观测值之间的自相关,包括直接和间接的相关性信息。
这意味着我们可以预期AR(k)时间序列的ACF强大到(如同使用了)k的滞后,并且这种关系的惯性将继续到之后的滞后值,随着效应被削弱而在某个点上缩小到没有。
我们知道,PACF只描述观测值与其滞后(lag)之间的直接关系。这表明,超过k的滞后值(lag value)不会再有相关性。
这正是ACF和PACF图对AR(k)过程的预期。
滑动平均直观认识(Moving Average Intuition)
考虑由滑动平均(MA)过程产生的滞后(lag)时间为k的时间序列。
请记住,滑动平均过程是先前预测的残留偏差的时间序列的自回归模型。考虑滑动平均模型的另一种方法是根据最近预测的错误修正未来的预测。
我们期望MA(k)过程的ACF与最近的lag值之间的关系显示出强烈的相关性,然后急剧下降到低或者无相关性。根据定义,这解释了整个过程是如何产生的。
对于PACF,我们预计图会显示与滞后(lag)的关系,以及滞后(lag)之前的相关。
再次强调,这正是MAF(k)过程的ACF和PACF图的预期。
概要
在本教程中,您了解了如何使用Python计算时间序列数据的自相关和偏自相关图。
具体来说,你了解到:
- 如何计算和创建时间序列数据的自相关图。
- 如何计算和创建时间序列数据的偏自相关图。
- 解释ACF和PACF图的区别和直观认识(intuition)。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- TensorFlow基础:创建计算图
- TensorFlow基础:常量
- 如何在Python中优雅地使用进度条?
- 绝了!这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!
- 「数据仓库架构」数据仓库的三种模式建模技术
- 设计模式实战-空对象模式,你肯定不知道,但是项目中会常用到到
- Go 开发十种常犯错误
- SpringBoot缓存应用实践
- 为什么应该使用 Go module proxy
- 谁能想到,我给技术总监“上了一课”
- 设计模式速览
- 序列模型——吴恩达深度学习课程笔记(五)
- 30分钟学会pyecharts数据可视化
- 用Keras从零开始6步骤训练神经网络
- Keras结构化数据预处理范例——Titanic生存预测