开始使用免费开始使用

计算自相关

自相关(或滞后相关)用于评估时间序列是否依赖其过去值。对长度为 n 的时间序列 x,我们考虑相隔 1 个时间单位的 n-1 对观测。第一对是 (x[2],x[1]),下一对是 (x[3],x[2])。每一对都可写成 (x[t],x[t-1]) 的形式,其中 t 是观测索引,在此从 2 变化到 n。x 的 1 阶自相关(lag-1)可以用这些 (x[t], x[t-1]) 配对的样本相关系数来估计。

一般而言,我们可以手动构造这些观测对。首先,创建两个向量 x_t0x_t1,它们的长度均为 n-1,使其行对应于 (x[t], x[t-1]) 配对。然后应用 cor() 函数来估计 1 阶自相关。

幸运的是,acf() 命令提供了捷径。对序列 x 使用 acf(..., lag.max = 1, plot = FALSE) 会自动计算 1 阶自相关。

最后请注意,这两种估计会略有差异,因为它们在计算样本协方差时采用的缩放略有不同,分别为 1/(n-1)1/n。尽管后者会带来有偏估计,但在时间序列分析中更常用,并且由此得到的自相关估计仅相差一个 (n-1)/n 的比例因子。

在本练习中,您将分别练习手动与自动计算 1 阶自相关。时间序列 x 及其长度 n(150)已加载。右侧图中显示了该序列。

本练习是课程的一部分

R 中的时间序列分析

查看课程

练习说明

  • 创建两个向量 x_t0x_t1,它们的长度均为 n-1,使其行对应于 (x[t], x[t-1]) 配对。
  • 使用预写代码确认 x_t0x_t1 确实构成 (x[t], x[t-1]) 配对。
  • 使用 plot() 查看 x_t0x_t1 的散点图。
  • 使用 cor() 查看 x_t0x_t1 的相关系数。
  • x 使用 acf() 自动计算 1 阶自相关。将 lag.max 参数设为 1 以只生成一个滞后期,并将 plot 参数设为 FALSE
  • 使用预写代码验证差异比例因子为 (n-1)/n

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Define x_t0 as x[-1]
x_t0 <- 

# Define x_t1 as x[-n]
x_t1 <- 

# Confirm that x_t0 and x_t1 are (x[t], x[t-1]) pairs  
head(cbind(x_t0, x_t1))
  
# Plot x_t0 and x_t1
plot(___, ___)

# View the correlation between x_t0 and x_t1
cor(___, ___)

# Use acf with x
acf(___, lag.max = ___, plot = ___)

# Confirm that difference factor is (n-1)/n
cor(x_t1, x_t0) * (n-1)/n
编辑并运行代码