课程
如果您想学习我们的《R 中的时间序列分析入门》课程,请点击此链接。
计算自相关
自相关或滞后相关用于评估时间序列是否依赖其过去。对于长度为 n 的时间序列 x,我们考虑相隔一个时间单位的 n-1 对观测。第一对为 (x[2],x[1]),下一对为 (x[3],x[2])。每一对都形如 (x[t],x[t-1]),其中 t 为观测索引,在此处我们让 t 从 2 变化到 n。x 的一阶滞后自相关可估计为这些 (x[t], x[t-1]) 配对的样本相关系数。
一般而言,我们可以手动创建这些观测对。首先创建两个长度为 n-1 的向量 x_t0 和 x_t1,使得每一行对应一对 (x[t], x[t-1])。然后应用 cor() 函数以估计一阶滞后自相关。
幸运的是,acf() 命令提供了快捷方式。对序列 x 应用 acf(..., lag.max = 1, plot = FALSE) 会自动计算一阶滞后自相关。
最后请注意,这两种估计略有不同,因为它们在计算样本协方差时采用的缩放略有差异,即 1/(n-1) 与 1/n。尽管后者会产生有偏估计,但在时间序列分析中更受青睐,且得到的自相关估计仅相差一个 (n-1)/n 的因子。
在本练习中,您将同时练习手动与自动计算一阶滞后自相关。时间序列 x 及其长度 n(150)已加载。右侧的图展示了该序列。
操作说明
- 创建两个长度均为
n-1的向量x_t0和x_t1,使每一行对应一对(x[t], x[t-1])。 - 使用预写代码确认
x_t0和x_t1是(x[t], x[t-1])配对。 - 使用
plot()查看x_t0与x_t1的散点图。 - 使用
cor()查看x_t0与x_t1之间的相关性。 - 对
x使用acf()自动计算一阶滞后自相关。将lag.max参数设为1(仅产生一个滞后期),并将plot参数设为FALSE。 - 使用预写代码确认差异因子为
(n-1)/n。
如果这些都清楚了,请继续下一道练习!如果还不太清楚,请观看概览视频。
自相关概览视频
自相关函数
可以在多个滞后期上估计自相关,以更好地评估时间序列与其过去的关系。我们通常最关注序列与其最近过去的关系。
acf(..., lag.max = ..., plot = FALSE) 函数会估计从 0、1、2、… 到由参数 lag.max 指定值的所有自相关。在上一道练习中,您通过将 lag.max 参数设为 1 来聚焦一阶滞后自相关。
在本练习中,您将进一步探索 acf() 命令的一些用法。同样,时间序列 x 已为您预加载,并在右侧图中展示。
操作说明
- 使用
acf()查看序列x从 0 到 10 的自相关。将lag.max参数设为10,并将plot参数保持为FALSE。 - 复制并粘贴滞后 10 的自相关估计值(ACF)。
- 复制并粘贴滞后 5 的自相关估计值(ACF)。
可视化自相关函数
在多个滞后期上估计自相关函数(ACF)可以帮助我们评估时间序列 x 与其过去的关系。数值估计对于细致计算很重要,但将 ACF 作为滞后期的函数进行可视化也很有用。
事实上,acf() 命令默认会生成图形。它还会为 lag.max(要显示的最大滞后数)做出默认选择。
三个时间序列 x、y 和 z 已加载到您的 R 环境中,并在右侧绘出。时间序列 x 显示出较强的持续性,意味着当前值与其之前的值高度接近。时间序列 y 呈现出周期性模式,周期长度约为四个观测,意味着当前值与四期之前的观测相对更接近。时间序列 z 则没有明显模式。
在本练习中,您将为每个时间序列绘制估计的自相关函数。由 acf() 生成的图中,每个自相关估计对应的滞后标在横轴上,而每个自相关估计由竖条的高度表示。请回忆,滞后 0 处的 ACF 始终为 1。
最后,每个 ACF 图都会包含一对蓝色的水平虚线,表示以零为中心、按滞后划分的 95% 置信区间。它们用于判断给定滞后处单个自相关估计相对于零(即该滞后无自相关)的统计显著性。
操作说明
使用三次 acf() 函数调用来显示三个时间序列(x、y 和 z)各自的估计 ACF。无需在调用 acf() 时指定额外参数。
如果您想从这门课程中学习更多内容,请点击此链接。
欢迎查阅我们的使用 R 进行时间序列分析:教程。