Processing math: 100%

时间序列分析:SARIMA 过程

1. SARMA 过程

  前文描述的 ARIMA(p,d,q)模型具有如下的形式

ϕ(B)dXt=θ(B)et

ϕ(B)(1B)dXt=θ(B)et

其中

ϕ(B)=1ϕ1Bϕ2B2ϕpBp

θ(B)=1+θ1B+θ2B2+θqBq

  在实际中遇到的时间序列,常常会具有季节性(Seasonality),即每 s 个观测值就会发成自我重复,例如月度经营数据往往以 12 个月为一个周期,此时 XtXt12,Xt24, 等数据间会存在较强的相关性。

  为了对序列中的季节性进行建模,首先引入季节性 ARMA(P,Q)s 过程

ΦP(Bs)Xt=ΘQ(Bs)et

其中

ΦP(B)=1Φ1BsΦ2B2sΦPBPs

ΘQ(B)=1+Θ1Bs+Θ2B2s+ΘQBQs

其中 s 为季节周期。对于季节性 ARMA 过程,当 ΦP(B)=0ΘQ(B)=0 的根都在单位圆外时,季节性 ARMA 过程是平稳且可逆的。

  举例来说,季节性 ARMA(1,1)12 具有如下的形式

(1Φ1B12)Xt=(1+Θ1B12)et

Xt=Φ1B12Xt12+et+Θ1B12et12

2. SARIMA 过程

2.1. 定义

  当 ARMA(p,q) 过程不平稳,但它的 d 阶差分平稳时,可以使用 ARIMA(p,d,q) 模型进行建模。类似地,对于季节性过程,季节性的成分可以有独立的差分参数 D,此时得到季节性 ARIMA 过程,即 SARIMA(p,d,q,P,D,Q)s,其中参数 p,d,q 为非季节性的自回归、差分、滑动平均阶数,参数 P,D,Q 分别为季节性的自回归、差分、滑动平均阶数,s 为季节周期。该过程表示为

ΦP(Bs)ϕp(B)DsdXt=ΘQ(Bs)θq(B)et

ΦP(Bs)ϕp(B)(1BS)D(1B)dXt=ΘQ(Bs)θq(B)et

其中

ϕp(B)=1ϕ1Bϕ2B2ϕpBpθ(B)=1+θ1B+θ2B2+θqBqΦP(B)=1Φ1BsΦ2B2sΦPBPsΘQ(B)=1+Θ1Bs+Θ2B2s+ΘQBQs

  实际应用中,季节性差分阶数 D 不会太大,一般只会取到 12。当 D=1 时,有

sXt=(1Bs)Xt=XtXts

D=1 时,有

2sXt=(1Bs)2Xt=(12Bs+B2s)=Xt2Xts+Xt2s

  举例来说,SARIMA(1,0,0,1,0,1)12 具有如下的形式

(1ϕ1B)(1ΦqB12)Xt=(1+Θ1B12)et

等号两边展开得

(1ϕ1BΦ1B12+ϕ1Φ1B13)Xt=et+Θ1et12

Xt=ϕ1Xt1+Φ1Xt12ϕ1Φ1Xt13+et+Θ1et12

  又例如 SARIMA(0,1,1,0,0,1)4 具有如下的形式

(1B)Xt=(1+Θ1B4)(1+θ1B)et

Xt=Xt1+et+θ1et1+Θ1et4+θ1Θ1et5

2.2. 自相关函数

  下面以 SARIMA(0,0,1,0,0,1)12 过程为例,分析其自相关函数。对于

Xt=(1+Θ1B12)(1+θ1B)et

Xt=et+θ1et1+Θ1et12+θ1Θ1et13

γ0=Var(Xt)=Var(et+θ1et1+Θ1et12+θ1Θ1et13)=σ2e+θ21σ2e+Θ21σ2e+θ21Θ21σ2e=(1+θ21)(1+Θ21)σ2e

  由 Xt1=et1+θ1et2+Θ1et13+θ1Θ1et14,可得

γ1=Cov(Xt,Xt1)=Cov(et+θ1et1+Θ1et12+θ1Θ1et13,et1+θ1et2+Θ1et13+θ1Θ1et14)=θ1Cov(et1,et1)+θ1Θ1Θ1Cov(et13,et13)=θ1σ2e+θ1Θ2σ2e=θ1(1+Θ21)σ2e

又由 (1θ1)2=12θ1+θ210,可知 1+θ212θ1,故

ρ1=γ1γ0=θ11+θ2112

  由 Xt2=et1+θ1et2+Θ1et14+θ1Θ1et15Xt 没有公共的 {et} 项,可知 γ2=Cov(Xt,Xt2)=0,故 ρ2=0

  类似地,可知对于式 (8) 所示的过程,当 k=2,3,,10 时,有 ρk=0

  由 Xt2=et2+θ1et2+Θ1et14+θ1Θ1et15,可得

γ11=Cov(Xt,Xt11)=θ1Θ1σ2e

ρ11=γ11γ0=θ1Θ1(1+θ21)(1+Θ21)14

可见虽然式 (8) 中并不显式地存在滞后为 11 的项,当 θ1Θ1 不为零时,有 ρ110

  使用如下代码模拟 SARIMA(0,0,1,0,0,1)12 过程并绘制 ACF 如图 1、图 2 所示:

x <- NULL
z <- NULL
n <- 10000
e <- rnorm(n)
x[1:13]=1
for(i in 14:n){
x[i] <- e[i] + 0.7*e[i-1] + 0.6*e[i-12] + 0.42*e[i-13]
}
x <- ts(x)
plot(x[12:96], type='l')
acf(x)
x <- NULL z <- NULL n <- 10000 e <- rnorm(n) x[1:13]=1 for(i in 14:n){ x[i] <- e[i] + 0.7*e[i-1] + 0.6*e[i-12] + 0.42*e[i-13] } x <- ts(x) plot(x[12:96], type='l') acf(x)
x <- NULL
z <- NULL
n <- 10000
e <- rnorm(n)
x[1:13]=1
for(i in 14:n){
  x[i] <- e[i] + 0.7*e[i-1] + 0.6*e[i-12] + 0.42*e[i-13]
}
x <- ts(x)

plot(x[12:96], type='l')
acf(x)

图 1

图 2

由图 2 可见在滞后为 1 处有显著的自相关,与前述分析的结果一致。