近段时间在论文里经常见到一些学者用自回归模型(Auto-regression)等生成时间序列数据的随机数,或者使用 ARIMA 模型做时间序列数据的预测,决定总结一下。
文章目录
1. 一些理论知识
1.1 平稳性
对于一个时间序列 { x t } \{x_t\} {xt},均值、方差对于任意时间段 t t t 都是相同的,并且对于任何相同的时间间隔 s s s,协方差 C o v ( x t , x t + s ) Cov(x_t, x_{t+s}) Cov(xt,xt+s) 也相同,则称该时间序列为平稳的。(这个定义为宽平稳,严格平稳要求对于相同的时间间隔,联合分布完全相同)
1.2 自相关函数 ACF
平稳性检验可以通过计算时间序列数据的自相关函数(ACF,autocorrelation function),画出图像看出,看是否随着阶数的增加能很快趋于零。国内一些教科书把自相关函数翻译成自相关系数。
h
h
h 阶自相关函数 (ACF)
ρ
h
\rho_h
ρh 为:
ρ
h
=
γ
(
t
+
h
,
t
)
γ
(
t
+
h
,
t
+
h
)
γ
(
t
,
t
)
\rho_h=\frac{\gamma(t+h, t)}{\sqrt{\gamma(t+h, t+h)\gamma(t,t)}}
ρh=γ(t+h,t+h)γ(t,t)γ(t+h,t)
其中, γ ( t + h , t ) \gamma(t+h, t) γ(t+h,t) 为 序列 x t x_t xt 与 x t + h x_{t+h} xt+h 的自协方差,即
γ ( t + h , t ) = C o v ( x t + h , x t ) \gamma(t+h, t)=Cov(x_{t+h}, x_t) γ(t+h,t)=Cov(xt+h,xt)
对于平稳性时间序列,由于相同间隔的协方差相同,上面的表达式可以简写:由于 γ ( t + h , t ) = γ ( h , 0 ) \gamma(t+h, t)=\gamma(h,0) γ(t+h,t)=γ(h,0), γ ( t + h , t ) \gamma(t+h, t) γ(t+h,t) 可以简写成 γ h \gamma_h γh, γ ( t + h , t + h ) = γ ( t , t ) = γ 0 \gamma(t+h, t+h)=\gamma(t,t)=\gamma_0 γ(t+h,t+h)=γ(t,t)=γ0,因此
ρ h = γ h γ 0 \rho_h=\frac{\gamma_h}{\gamma_0} ρh=γ0γh
更标准的平稳性检验是单位根检验:ADF检验
1.3 偏自相关函数 PACF
将
x
t
x_t
xt 分别写成
x
t
−
1
x_{t-1}
xt−1,
x
t
−
2
x_{t-2}
xt−2,
…
\dots
…,
x
t
−
k
x_{t-k}
xt−k 的回归函数,相应的回归系数是偏自相关函数(国内教科书也称偏自相关系数):
x
t
=
c
1
+
ϕ
11
x
t
−
1
+
ϵ
1
t
x
t
=
c
2
+
ϕ
21
x
t
−
1
+
ϕ
22
x
t
−
2
+
ϵ
2
t
⋮
x
t
=
c
k
+
ϕ
k
1
x
t
−
1
+
ϕ
k
2
x
t
−
2
+
⋯
+
ϕ
k
k
x
t
−
k
+
ϵ
k
t
\begin{aligned} x_t=&c_1+\phi_{11}x_{t-1}+\epsilon_{1t}\\ x_{t}=&c_2+\phi_{21}x_{t-1}+\phi_{22}x_{t-2}+\epsilon_{2t}\\ \vdots\\ x_{t}=&c_k+\phi_{k1}x_{t-1}+\phi_{k2}x_{t-2}+\dots+\phi_{kk}x_{t-k}+\epsilon_{kt} \end{aligned}
xt=xt=⋮xt=c1+ϕ11xt−1+ϵ1tc2+ϕ21xt−1+ϕ22xt−2+ϵ2tck+ϕk1xt−1+ϕk2xt−2+⋯+ϕkkxt−k+ϵkt
其中, ϕ 11 \phi_{11} ϕ11 是 x t x_t xt 与 x t − 1 x_{t-1} xt−1 的偏自相关系数, ϕ 22 \phi_{22} ϕ22 是 x t x_t xt 与 x t − 2 x_{t-2} xt−2 的偏自相关系数, ϕ k k \phi_{kk} ϕkk 是 x t x_t xt 与 x t − k x_{t-k} xt−k 的偏自相关系数。
1.4 自回归模型(AR)
时间序列数据 { x t } \{x_t\} {xt} 可以表示为它的前期值和随机误差项的线性函数,即
x t = μ + φ 1 x t − 1 + φ 2 x t − 2 + ⋯ + φ p x t − p + ε t x_t=\mu+\varphi_1 x_{t-1}+\varphi_2 x_{t-2}+\dots+\varphi_p x_{t-p}+\varepsilon_t xt=μ+φ1xt−1+φ2xt−2+⋯+φpxt−p+εt
该模型为 p p p 阶自回归模型,记为 A R ( p ) AR(p) AR(p)。其中, μ \mu μ 为 x t x_t xt 的均值, ε t \varepsilon_t εt 为均值为 0, 方差为 σ 2 \sigma^2 σ2 的白噪声序列。
时间序列模型可以引入之后算子 B B B: B x 1 = x t − 1 Bx_1=x_{t-1} Bx1=xt−1, B 2 x t = x t − 2 B^2x_t=x_{t-2} B2xt=xt−2, … \dots …, B p x t = x t − p B^px_t=x_{t-p} Bpxt=xt−p,则自回归模型也可以表示为:
x t = μ + φ 1 B x t + φ 2 B 2 x t + ⋯ + φ p B p x t + ε t x_t=\mu+\varphi_1 Bx_{t}+\varphi_2 B^2x_{t}+\dots+\varphi_p B^px_{t}+\varepsilon_t xt=μ+φ1Bxt+φ2B2xt+⋯+φpBpxt+εt
令 φ ( B ) = 1 − φ 1 B − φ 2 B 2 − ⋯ − φ p B p \varphi(B)=1-\varphi_1B-\varphi_2B^2-\dots-\varphi_pB^p φ(B)=1−φ1B−φ2B2−⋯−φpBp,则自回归模型可以表示为:
x t φ ( B ) = μ + ε t x_t\varphi(B)=\mu+\varepsilon_t xtφ(B)=μ+εt
1.5 移动平均模型(MA)
时间序列数据
{
x
t
}
\{x_t\}
{xt} 可以表示为它的前期随机误差项的线性函数,即
x
t
=
μ
+
ε
t
+
θ
1
ε
t
−
1
+
⋯
+
θ
q
ε
t
−
q
x_t=\mu+\varepsilon_t+\theta_{1}\varepsilon_{t-1}+\dots+\theta_{q}\varepsilon_{t-q}
xt=μ+εt+θ1εt−1+⋯+θqεt−q
该模型为 q q q 阶移动回归模型,记为 M A ( q ) MA(q) MA(q)。
1.6 自回归移动平均模型(ARMA)
时间序列数据
{
x
t
}
\{x_t\}
{xt} 可以表示为:
x
t
=
μ
+
+
φ
1
x
t
−
1
+
φ
2
x
t
−
2
+
⋯
+
φ
p
x
t
−
p
+
ε
t
+
θ
1
ε
t
−
1
+
⋯
+
θ
q
ε
t
−
q
x_t=\mu++\varphi_1 x_{t-1}+\varphi_2 x_{t-2}+\dots+\varphi_p x_{t-p}+\varepsilon_t+\theta_{1}\varepsilon_{t-1}+\dots+\theta_{q}\varepsilon_{t-q}
xt=μ++φ1xt−1+φ2xt−2+⋯+φpxt−p+εt+θ1εt−1+⋯+θqεt−q
这个移动平均(moving-average)模型跟预测方法中常规的移动平均(moving average)不一样。
1.7 移动平均自回归模型(ARIMA)
时间序列数据
{
x
t
}
\{x_t\}
{xt} 被称为
A
R
I
M
A
(
p
,
d
,
q
)
ARIMA(p,d,q)
ARIMA(p,d,q),若
▽
d
x
t
=
(
1
−
B
)
d
x
\triangledown^d x_t=(1-B)^d x
▽dxt=(1−B)dx
是
A
R
M
A
(
P
,
Q
)
ARMA(P, Q)
ARMA(P,Q).
其中, ( 1 − B ) d x (1-B)^dx (1−B)dx 表示 x t x_t xt 的 d d d 阶差分。即 x t x_t xt 的 d d d 阶差分是自回归移动平均模型。
一阶差分:
x
t
′
=
x
t
−
x
t
−
1
x'_t=x_t-x_{t-1}
xt′=xt−xt−1,
二阶差分:
x
t
′
′
=
x
t
′
−
x
t
−
1
′
=
x
t
−
x
t
−
1
−
(
x
t
−
1
−
x
t
−
2
)
=
x
t
−
2
x
t
−
1
+
x
t
−
2
=
(
1
−
B
)
2
x
x''_t=x'_t-x'_{t-1}=x_t-x_{t-1}-(x_{t-1}-x_{t-2})=x_t-2x_{t-1}+x_{t-2}=(1-B)^2x
xt′′=xt′−xt−1′=xt−xt−1−(xt−1−xt−2)=xt−2xt−1+xt−2=(1−B)2x
2. 做 ARIMA 的步骤
- 先做平稳性 ADF 检验,若不平稳,则做差分,更高阶的差分,直到通过平稳性检验为止,依次确定差分阶数 d d d
- 一般通过看偏自相关系系数 PACF 图,确定自回归阶数 p p p (若第 i i i 阶的 PACF 值低于置信区间上下界,则 p = i − 1 p=i-1 p=i−1)。PACF 系数95%置信区间的上下界为 ± 1.96 / n \pm 1.96/\sqrt{n} ±1.96/n,其中 n n n 为样本个数
- 一般通过看自相关系数 ACF 图,确定移动平均阶数 q q q。ACF 系数95%置信区间的上下界也可以近似为 ± 1.96 / n \pm 1.96/\sqrt{n} ±1.96/n