计算自相关
自相关(或滞后相关)用于评估时间序列是否依赖其过去值。对长度为 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_t0 和 x_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_t0和x_t1,它们的长度均为n-1,使其行对应于(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()自动计算 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