时间序列分析:偏自相关函数

1. 问题

  在 AR(p) 过程中,每个时刻的值都与历史时刻相关,导致其自相关函数呈现逐渐衰减,而不会像 MA(q) 那样出现截断。我们希望能够单独分析两个时刻随机变量之间的相关性,而不受其他时刻的影响,这样就可以方便地确定 AR(p) 过程的阶数。

2. 偏自相关的一般例子

  看一个更一般的例子。R 中 isdals 包的 bodyfat 数据包含了 20 个人的体脂(Fat)、三头肌皮脂厚度(Triceps)、大腿围(Thigh)和中臂围(Midarm)的数据,期望通过 Triceps、Thigh 和 Midarm 预测 Fat 的数值。

library(isdals)
data(bodyfat)
attach(bodyfat)
pairs(cbind(Fat, Triceps, Thigh, Midarm))
library(isdals) data(bodyfat) attach(bodyfat) pairs(cbind(Fat, Triceps, Thigh, Midarm))
library(isdals)
data(bodyfat)
attach(bodyfat)
pairs(cbind(Fat, Triceps, Thigh, Midarm))

图 1

由图 1 可以看出,Fat、Triceps 和 Thigh 之间似乎都有着线性关系,计算几个特征之间的相关可以印证这一点。

cor(cbind(Fat, Triceps, Thigh, Midarm))
cor(cbind(Fat, Triceps, Thigh, Midarm))
cor(cbind(Fat, Triceps, Thigh, Midarm))

输出为

Fat Triceps Thigh Midarm
Fat 1.0000000 0.8432654 0.8780896 0.1424440
Triceps 0.8432654 1.0000000 0.9238425 0.4577772
Thigh 0.8780896 0.9238425 1.0000000 0.0846675
Midarm 0.1424440 0.4577772 0.0846675 1.0000000
Fat Triceps Thigh Midarm Fat 1.0000000 0.8432654 0.8780896 0.1424440 Triceps 0.8432654 1.0000000 0.9238425 0.4577772 Thigh 0.8780896 0.9238425 1.0000000 0.0846675 Midarm 0.1424440 0.4577772 0.0846675 1.0000000
              Fat   Triceps     Thigh    Midarm
Fat     1.0000000 0.8432654 0.8780896 0.1424440
Triceps 0.8432654 1.0000000 0.9238425 0.4577772
Thigh   0.8780896 0.9238425 1.0000000 0.0846675
Midarm  0.1424440 0.4577772 0.0846675 1.0000000

这在直观上也容易理解:对于一个人来说,他的 Fat、Triceps 和 Thigh 是与他的体型紧密相关的。

  我们希望能消除 Thigh 的影响,单独衡量 Fat 和 Triceps 的关系,即偏自相关。此时可以训练两个线性模型,使用 Thigh 分别对 Fat 和 Triceps 进行预测,然后衡量预测值之间的相关:

Fat.hat = predict(lm(Fat ~ Thigh))
Triceps.hat = predict(lm(Triceps ~ Thigh))
cor((Fat - Fat.hat), (Triceps - Triceps.hat))
Fat.hat = predict(lm(Fat ~ Thigh)) Triceps.hat = predict(lm(Triceps ~ Thigh)) cor((Fat - Fat.hat), (Triceps - Triceps.hat))
Fat.hat = predict(lm(Fat ~ Thigh))
Triceps.hat = predict(lm(Triceps ~ Thigh))
cor((Fat - Fat.hat), (Triceps - Triceps.hat))

上面代码的输出为 0.1749822,可见消除 Thigh 的影响后,Fat 和 Triceps 的相关降低了不少。

  也可以使用类似地方法消除多个变量的影响,例如消除 Thigh 和 Midarm 的影响后,衡量 Fat 和 Triceps 的相关:

Fat.hat = predict(lm(Fat ~ Thigh+Midarm))
Triceps.hat = predict(lm(Triceps ~ Thigh+Midarm))
cor((Fat - Fat.hat), (Triceps - Triceps.hat))
Fat.hat = predict(lm(Fat ~ Thigh+Midarm)) Triceps.hat = predict(lm(Triceps ~ Thigh+Midarm)) cor((Fat - Fat.hat), (Triceps - Triceps.hat))
Fat.hat = predict(lm(Fat ~ Thigh+Midarm))
Triceps.hat = predict(lm(Triceps ~ Thigh+Midarm))
cor((Fat - Fat.hat), (Triceps - Triceps.hat))

输出为 0.33815

  也可以用 ppcor 包的 pcor 函数计算偏自相关

library(ppcor)
pcor(cbind(Fat, Triceps, Thigh, Midarm))
library(ppcor) pcor(cbind(Fat, Triceps, Thigh, Midarm))
library(ppcor)
pcor(cbind(Fat, Triceps, Thigh, Midarm))

输出为

$estimate
Fat Triceps Thigh Midarm
Fat 1.0000000 0.3381500 -0.2665991 -0.3240520
Triceps 0.3381500 1.0000000 0.9963725 0.9955918
Thigh -0.2665991 0.9963725 1.0000000 -0.9926612
Midarm -0.3240520 0.9955918 -0.9926612 1.0000000
$estimate Fat Triceps Thigh Midarm Fat 1.0000000 0.3381500 -0.2665991 -0.3240520 Triceps 0.3381500 1.0000000 0.9963725 0.9955918 Thigh -0.2665991 0.9963725 1.0000000 -0.9926612 Midarm -0.3240520 0.9955918 -0.9926612 1.0000000
$estimate
               Fat   Triceps      Thigh     Midarm
Fat      1.0000000 0.3381500 -0.2665991 -0.3240520
Triceps  0.3381500 1.0000000  0.9963725  0.9955918
Thigh   -0.2665991 0.9963725  1.0000000 -0.9926612
Midarm  -0.3240520 0.9955918 -0.9926612  1.0000000

可见 Fat 与 Triceps 的偏自相关为 0.3381500,与前面的计算相符。

3. 时间序列的偏自相关函数

  定义 k 阶滞后的偏自相关函数为,消除中间介入变量 Yt1,Yt2,,Ytk+1 的影响后 YtYtk 的相关系数,记为 ϕkk

  如果 {Yt} 式正态分布的时间序列,则令

ϕkk=Corr(Yk,Ytk|Yt1,Yt2,,Ytk+1)

ϕkk 是二元分布 Yk,Ytk 的以 Yt1,Yt2,,Ytk+1 为条件的相关系数。

  更一般地,构建一个线性模型,使用中间介入变量 Yt1,Yt2,,Ytk+1Yt 进行预测,例如预测值为

ˆYt=β1Yt1+β2Yt2++βk1Ytk+1

选择参数 β 使得预测的均方误差最小。选定 β 后,由平稳性可知,给定相同的数据 Yt1,Yt2,,Ytk+1,对 Ytk 的最优预测是

ˆYtk=β1Ytk+1+β2Ytk+2++βt1Ytk+1

此时 k 阶滞后的偏自相关函数定义为

ϕkk=Corr(YtˆYt,YtkˆYtk)=Corr[Yt(β1Yt1+β2Yt2++βk1Ytk+1),Ytk(β1Ytk+1+β2Ytk+2++βt1Ytk+1)]

  Yt 只基于 Yt1 的最优线性预测为 ρ1Yt1,因此

Cov(Ytρ1Yt1,Yt2ρ1Yt1)=Cov(Yt,Yt2)ρ1Cov(Yt,Yt1)ρ1Cov(Yt1,Yt2)+ρ21Cov(Yt1,Yt1)=γ2ρ1γ1ρ1γ1+ρ21γ0=γ0(ρ2ρ21ρ21+ρ21)=γ0(ρ2ρ21)

又由

Var(Ytρ1Yt1)=Var(Yt2ρ1Yt1)=Var(Yt2)+ρ21Var(Yt1)2ρ1Cov(Yt2,Yt1)=γ0+ρ21γ02ρ1γ1=γ0(1+ρ212ρ21)=γ0(1ρ21)

于是

ϕ22=γ0(ρ2ρ21)γ0(1ρ21)=ρ2ρ211ρ21

对于 AR(1) 过程,有 ρk=ϕk,于是

ϕ22=ϕ2ϕ21ϕ2=0

AR(1) 的滞后为 2 的偏自相关为 0。对于 AR(1) 过程,当 k=1 时,有 ϕ110;当 k>1 时,有 ϕkk=0

  一般地,AR(p) 过程的偏自相关函数图像在滞后超过 p 后截尾。