时间序列模型简介

目录

  1. 平稳序列
  2. 判断样本的平稳性
  3. 时间序列模型
  4. 参数选择
  5. 实验代码

1. 平稳序列

时间序列是一列观测值 X t X_t Xt的集合, 其中每个观测值是在时段 t t t观测所得( t t t是自然数 ). 给定时间序列 { X t } t = 1 n \{X_t\}_{t=1}^n {Xt}t=1n, 如果对任意的 t = 1 , … , n t=1,\ldots,n t=1,,n, 它满足下列条件:
i. var ( X t ) < ∞ \text{var}(X_t)<\infty var(Xt)<
ii. E ( X t ) = μ \mathbb{E}(X_t) = \mu E(Xt)=μ
iii. cov ( X r , X s ) = cov ( X r + t , X s + t ) , ∀ r , s = 1 , . . . , n \text{cov}(X_r, X_s) = \text{cov}(X_{r+t}, X_{s+t}), \forall r,s = 1, ..., n cov(Xr,Xs)=cov(Xr+t,Xs+t),r,s=1,...,n
我们把它叫做(弱)平稳(weakly stationary)序列.(下文我们简称平稳序列.)

通俗地讲, 平稳序列的期望, 方差, 协方差不随时间变化. 例如, X t X_t Xt服从同一个分布时, 它是平稳的.

例1 下图中的时间序列由 X t ∼ N ( 2 , 1 ) X_t\sim N(2, 1) XtN(2,1)生成. 从直观上看, 这个序列是"平稳的".
Fig1. 平稳的时间序列

例2 下图的中的时间序列由 X t = 2 + 0.9 X t − 1 + W t X_t= 2 + 0.9X_{t-1}+W_t Xt=2+0.9Xt1+Wt生成, 其中 X 0 = 0 X_0=0 X0=0, W t = N ( 0 , 1 ) W_t= N(0, 1) Wt=N(0,1). 它起初有明显地增长, 然后趋于平稳. 利用ADF检验(详情见下文), 我们发现该序列是平稳的(p-value < 0.01).
Fig2. 平稳的时间序列

Remark 弱平稳性的"弱"主要体现在时间序列在全局上是平稳的, 即,时间序列局部是波动的,但整体上看是平稳的, 或者随着时间的变化其样本的均值收敛.

2. 判断样本的平稳性

我们用统计学中假设检验的方法来判断样本的平稳性. 常用的是Augmented Dickey-Fuller(ADF)检验1.

  • Null Hypothesis ( H 0 ) (H_0) (H0): 样本中存在unit root2. 如果接受 H 0 H_0 H0, 则意味着样本是非平稳的.
  • Alternate Hypothesis ( H 1 ) (H_1) (H1): 样本中不存在unit root. 如果拒绝 H 0 H_0 H0, 则意味着样本是平稳的.

在显著水平 α = 0.05 \alpha=0.05 α=0.05的条件下, 我们可以通过计算p-value来接受或者拒绝 H 0 H_0 H0:

  • p-value > 0.05 \text{p-value} > 0.05 p-value>0.05: 接受 H 0 H_0 H0.
  • p-value ≤ 0.05 \text{p-value} \leq 0.05 p-value0.05: 拒绝 H 0 H_0 H0.

Python3中statsmodels.tas.stattools中的adfuller函数3实现了ADF检验. 使用方法如下所示.

from statsmodels.tsa.stattools import adfuller


def test_stationarity(data, alpha=0.05, print_detail=True):
    """ Test stationarity of time series data.
    :param data: time series data, formatted as list
    :param alpha: significance level.
    :param print_detail: if True print additional information. 
    """
    result = adfuller(data)
    is_stationary = True if result[1] <= alpha else False
    if print_detail:
        print('ADF statistic: %f' % result[0])
        print('p-value: %f' % result[1])
        print('critical values:')
        for key, value in result[4].items():
            print('\t%s: %.3f' % (key, value))
    return is_stationary

3. 时间序列模型

前面之所以介绍平稳序列的概念及检验方法, 是因为它是很多基础的时间序列模型的前提假设. 在本节我们介绍一些常见的时间序列模型(更多内容可以参考4, 5).

AR(p)

AR代表自回归(Autoregression). 假设时间序列 { X t } \{X_t\} {Xt}是平稳的, 它可以被表示成如下形式:
X t = δ + ∑ i = 1 p ϕ i X t − i + W t . X_t = \delta + \sum_{i=1}^p \phi_iX_{t-i} + W_t. Xt=δ+i=1pϕiXti+Wt.

  • δ \delta δ是常数.
  • W t ∼ iid N ( 0 , σ 2 ) W_t\overset{\text{iid}}{\sim} N(0, \sigma^2) WtiidN(0,σ2), 它表示时段 t t t的误差(随机变量).
  • p p p代表自回归阶数.
MA(q)

MA代表移动平均(Moving Average). 假设时间序列 { X t } \{X_t\} {Xt}是平稳的, 它可以被表示成如下形式:
X t = δ + ∑ i = 1 q θ i W t − i + W t . X_t = \delta + \sum_{i=1}^q \theta_iW_{t-i} + W_t. Xt=δ+i=1qθiWti+Wt.

  • δ \delta δ是常数.
  • W t ∼ iid N ( 0 , σ 2 ) W_t\overset{\text{iid}}{\sim} N(0, \sigma^2) WtiidN(0,σ2), 它表示时段 t t t的误差(随机变量).
  • q q q代表移动平均阶数.
ARMA(p,q)

ARMA模型是AR和MA的组合. 假设同上. 它可以被表示为如下形式:
X t = δ + ∑ i = 1 p ϕ i X t − i + ∑ i = 1 q θ i W t − i + W t . X_t = \delta + \sum_{i=1}^p \phi_iX_{t-i} + \sum_{i=1}^q \theta_iW_{t-i} + W_t. Xt=δ+i=1pϕiXti+i=1qθiWti+Wt.

  • p p p是自回归阶数
  • q q q是移动平均阶数
ARIMA(p,d,q)

ARIMA模型是ARMA模型的推广, 全称是Autoregressive Integrated Moving Average. 当时间序列 { X t } \{X_t\} {Xt}不满足平稳性时, 我们通常使用差分的技巧把序列变得平稳, 然后再应用ARMA模型.

参数 d d d代表差分的阶数. 下面是差分的计算公式( Δ \Delta Δ为差分算子):

  • 一阶差分 Δ X t = X t − X t − 1 \Delta X_t = X_t - X_{t-1} ΔXt=XtXt1
  • 二阶差分 Δ ( 2 ) X t = Δ ( X t − X t − 1 ) = X t − 2 X t − 1 + X t − 2 = ( 1 − Δ ) 2 X t \Delta^{(2)} X_t = \Delta(X_t-X_{t-1}) = X_t - 2X_{t-1}+X_{t-2} = (1-\Delta)^2X_t Δ(2)Xt=Δ(XtXt1)=Xt2Xt1+Xt2=(1Δ)2Xt
  • d d d阶差分 Δ ( d ) X t = ( 1 − Δ ) d X t \Delta^{(d)} X_t = (1-\Delta)^dX_t Δ(d)Xt=(1Δ)dXt

例3 下图是原始的时间序列. 通过观察, 它的均值有明显的上升趋势且不收敛, 因此不是平稳序列(ADF检验的p-value为0.94).

对该序列进行一阶差分后, 我们得到如下平稳的时间序列(p-value为0.00).

ARIMA(p,d,q) × \times ×(P,D,Q,s)

该记号代表季节性(或周期性)ARIMA模型, 详细的表达式可以参考4(4.1 Seasonal ARIMA models), 其中

  • p , d , q p,d,q p,d,q的意义同上.
  • P P P代表周期性自回归阶数(前 P P P个周期对应观测值的自回归).
  • D D D代表周期性差分阶数.
  • Q Q Q代表周期性移动平均阶数(前 Q Q Q个周期对应的移动平均).
  • s s s代表一个周期的长度.

我们可以把它看成两阶段模型: 第一阶段在全局使用ARIMA(p,d,q); 第二阶段通过指定周期长度 s s s, 再利用ARIMA(P,Q,D)模型考虑周期之间的关系.

例4 考虑如下周期性的平稳时间序列( s = 18 s=18 s=18).

season.png

对序列进行周期性差分: Y t = X t − X t − 18 Y_t = X_t - X_{t-18} Yt=XtXt18得到新的时间序列 { Y t } \{Y_t\} {Yt}如下图所示(红色部分)

deseason.png

通过使用周期性差分, 我们可以把原有时间序列的周期性移除. 同理, 通过采用周期性的自回归和移动平均系数, 我们可以把周期之间的依赖关系考虑进模型.

例5 考虑周期s=18的数据(蓝色曲线). 用 ARIMA ( 1 , 0 , 0 ) \text{ARIMA}(1,0, 0) ARIMA(1,0,0) ARIMA ( 1 , 0 , 0 ) × ( 0 , 1 , 0 , 18 ) \text{ARIMA}(1, 0, 0)\times(0, 1, 0, 18) ARIMA(1,0,0)×(0,1,0,18)分别进行预测的结果如下.

不考虑周期性的ARIMA模型的预测结果(灰色曲线)逐渐收敛到时间序列的均值. 由于序列是平稳的, 这样的预测结果符合我们的期望. 考虑到该时间序列有比较强的周期性, 且通过观察发现周期 s = 18 s=18 s=18. 在本例中, 我们仅使用周期差分, 最终得到了如图所示(红色曲线)的周期性预测结果.

ARCH(p)

ARCH的全称是Autoregressive Conditionally Heteroscedasticity, 它可以用来考虑样本的方差随着时间变化(或震荡)的时间序列. 设时间序列 { X t } \{X_t\} {Xt}是平稳的, ARCH ( p ) \text{ARCH}(p) ARCH(p)模型可以被表示成如下形式:

X t = σ t W t , W t ∼ iid N ( 0 , 1 ) X_t = \sigma_tW_t,\quad W_t \overset{\text{iid}}{\sim} N(0,1) Xt=σtWt,WtiidN(0,1)
其中
σ t 2 = α 0 + ∑ i = 1 p α i X t − i 2 . \sigma_t^2 = \alpha_0 + \sum_{i=1}^p \alpha_iX_{t-i}^2. σt2=α0+i=1pαiXti2.

  • p p p代表 X t 2 X_t^2 Xt2的自回归阶数.
GARCH(p,q)

GARCH即Generalized ARCH, 是ARCH模型的推广6. 设时间序列 { X t } \{X_t\} {Xt}是平稳的, GARCH ( p , q ) \text{GARCH}(p,q) GARCH(p,q)模型可以被表示成如下形式:
X t = σ t W t , W t ∼ iid N ( 0 , 1 ) X_t = \sigma_tW_t,\quad W_t \overset{\text{iid}}{\sim} N(0,1) Xt=σtWt,WtiidN(0,1)
其中
σ t 2 = α 0 + ∑ i = 1 p α i X t − i 2 + ∑ i = 1 q β i σ t − i 2 . \sigma_t^2 = \alpha_0 + \sum_{i=1}^p \alpha_iX_{t-i}^2 + \sum_{i=1}^q \beta_i\sigma^2_{t-i}. σt2=α0+i=1pαiXti2+i=1qβiσti2.

  • p p p代表 X t 2 X_t^2 Xt2的自回归阶数.
  • q q q代表 σ t 2 \sigma_t^2 σt2的移动平均阶数.

Remark ARCH/GARCH随机过程产生的数据是什么样的? 前面提到它们允许样本的方差随时间变化, 但是由于 { X t } \{X_t\} {Xt}必须满足平稳性(前提假设), 因此样本的方差从局部看是变化(震荡)的, 但从整体看应该是"平稳的"序列. 例如下图是一个 GARCH ( 1 , 1 ) \text{GARCH}(1,1) GARCH(1,1)过程生成的时间序列( α 0 = 5 , α 1 = β 1 = 0.5 \alpha_0=5, \alpha_1=\beta_1=0.5 α0=5,α1=β1=0.5).

VAR(p)

VAR即Vector Autoregression, 它是多变量的自回归模型. 类似地, 我们有 VARMA ( p , q ) \text{VARMA}(p, q) VARMA(p,q), 它是 ARMA ( p , q ) \text{ARMA}(p,q) ARMA(p,q)的向量版本. 需要注意的是, VARMA模型处理的时间序列可以有趋势. 我们不做详细的展开, 感兴趣的读者可以参考4章节11.2: Vector Autoregressive models VAR§ models.

4. 参数选择

给定时间序列的观测样本, 选定预测模型之后如何确定模型的参数? 本节我们介绍两种常用的方法: 1. 画出ACF/PACF图, 然后观察出 p , q p,q p,q的值; 2. 通过计算相关的统计指标, 自动化地选择参数.

4.1 观察ACF/PACF
ACF

ACF的全称是Autocorrelation Function. 对变量 h = 1 , 2 , . . . h=1,2, ... h=1,2,..., ACF的值代表 X t X_t Xt X t − h X_{t-h} Xth之间的相关性.
ACF ( h ) = cov ( X t , X t − h ) var ( X t ) \text{ACF}(h) = \frac{\text{cov}(X_t, X_{t-h})}{\text{var}(X_t)} ACF(h)=var(Xt)cov(Xt,Xth)

PACF

PACF的全称是Partial Autocorrelation Function. 对变量 h = 1 , 2 , . . . h=1,2,... h=1,2,..., PACF的值代表已知 X t − 1 , . . . X t − h + 1 X_{t-1}, ... X_{t-h+1} Xt1,...Xth+1的条件 下, X t X_t Xt X t − h X_{t-h} Xth之间的相关性.
PACF ( h ) = cov ( X t , X t − h ∣ x t − 1 , . . . x t − h + 1 ) var ( X t ∣ x t − 1 , . . . x t − h + 1 ) var ( X t − h ∣ x t − 1 , . . . x t − h + 1 ) \text{PACF}(h) = \frac{\text{cov}(X_t,X_{t-h}|x_{t-1}, ... x_{t-h+1})}{\sqrt{\text{var}(X_t|x_{t-1}, ... x_{t-h+1})\text{var}(X_{t-h}|x_{t-1}, ... x_{t-h+1})}} PACF(h)=var(Xtxt1,...xth+1)var(Xthxt1,...xth+1) cov(Xt,Xthxt1,...xth+1)

例6 W t ∼ N ( 0 , 1 ) W_t\sim N(0, 1) WtN(0,1). 考虑下面三个模型生成的时间序列, 并计算相应的ACF/PACF.

  1. AR ( 1 ) : X t = 2 + 0.5 X t − 1 + W t \text{AR}(1): X_t=2 + 0.5X_{t-1}+W_t AR(1):Xt=2+0.5Xt1+Wt

  2. MA ( 1 ) : X t = 2 + 0.5 W t − 1 + W t \text{MA}(1): X_t=2 + 0.5W_{t-1}+W_t MA(1):Xt=2+0.5Wt1+Wt

  3. ARMA ( 1 , 1 ) : X t = 2 + 0.5 X t − 1 + 0.5 W t − 1 + W t \text{ARMA}(1,1): X_t=2 + 0.5X_{t-1}+ 0.5W_{t-1}+W_t ARMA(1,1):Xt=2+0.5Xt1+0.5Wt1+Wt

指导原则(参考4)
模型ACFPACF说明
AR§逐渐趋近于0或像正弦曲线一样收敛到0 p p p个值非常显著, 其余的值不显著 p p p值主要参考PACF
MA(q) q q q个值非常显著, 其余的值不显著逐渐趋近于0或像正弦曲线一样收敛到0 q q q值主要参考ACF
ARMA(p,q)逐渐趋近于0或像正弦曲线一样收敛到0逐渐趋近于0或像正弦曲线一样收敛到0 p , q p,q p,q值靠猜
4.2 自动化地决定参数

基本思想是通过计算一些指标, 并选择参数使得相关的指标值尽可能小. 下面我们介绍一些常用的指标.

为方便描述, 我们先定义一些记号.

  • n n n = 样本的大小
  • k k k = 模型中需要拟合的参数数量(例如正态分布有的数量是2: μ \mu μ σ \sigma σ)
  • L max ⁡ L_{\max} Lmax = 通过最大似然估计得到的最大Likelihood
AIC(Akaike Information Criterion)7

AIC = 2 k − 2 ln ⁡ ( L max ⁡ ) \text{AIC} = 2k - 2\ln(L_{\max}) AIC=2k2ln(Lmax)

AICc8

(AIC的改良版, 解决小样本过拟合的问题)
AICc = AIC + 2 k 2 + 2 k n − k − 1 \text{AICc} = \text{AIC} + \frac{2k^2 + 2k}{n-k-1} AICc=AIC+nk12k2+2k

BIC(Bayesian Information Criterion)9

(也称为Schwartz Criterion, SBC, SBIC)

BIC = ln ⁡ ( n ) k − 2 ln ⁡ ( L max ⁡ ) \text{BIC} = \ln(n)k - 2\ln(L_{\max}) BIC=ln(n)k2ln(Lmax)

HQIC(Hannan–Quinn Information Criterion)10

HQIC = 2 k ln ⁡ ( ln ⁡ ( n ) ) − 2 ln ⁡ ( L max ⁡ ) \text{HQIC} = 2k\ln(\ln(n)) -2\ln(L_{\max}) HQIC=2kln(ln(n))2ln(Lmax)

Remark 建议在实际中综合考虑这些指标.

5. 实验代码

Python3 code on Github

参考文献


  1. Wikipedia. Augmented Dickey-Fuller test. ↩︎

  2. Dickey, D. A.; Fuller, W. A. Distribution of the Estimators for Autoregressive Time Series with a Unit Root. Journal of the American Statistical Association. 74(366): 427–431, 1979. ↩︎

  3. https://www.statsmodels.org/dev/generated/statsmodels.tsa.stattools.adfuller.html ↩︎

  4. Lecture notes of Applied Time Series Analysis (SATA 510). The Pennsylvania State University. ↩︎ ↩︎ ↩︎ ↩︎

  5. Jan Grandell. Time series analysis (lecture notes). ↩︎

  6. Bollerslev, T. Generalized autoregressive conditional heteroscedasticity. Journal of Econometrics, 31, 307–327, 1986. ↩︎

  7. Hirotugu Akaike. A new look at the statistical model identification, IEEE Transactions on Automatic Control, 19 (6): 716–723, 1974. ↩︎

  8. Wikipedia. https://en.wikipedia.org/wiki/Akaike_information_criterion#AICc. ↩︎

  9. Schwartz E.S. The Stochastic Behavior of Commodity Prices: Implications for Valuation and Hedging’. J Finance 52(3) Papers and Proceedings Fifty-Seventh Annual Meeting, American Finance Association, New Orleans, Louisiana, 923-973, 1997. ↩︎

  10. Hannan, E. J. and B. G. Quinn. The Determination of the order of an autoregression, Journal of the Royal Statistical Society, Series B, 41: 190–195, 1979. ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值