时间序列模型简介

如题所述

第1个回答  2022-06-20

目录

时间序列是一列观测值 的集合, 其中每个观测值是在时段 观测所得( 是自然数 ). 给定时间序列 , 如果对任意的 , 它满足下列条件:
i.
ii.
iii.
我们把它叫做(弱)平稳(weakly stationary)序列.(下文我们简称平稳序列.)

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

例1 下图中的时间序列由 生成. 从直观上看, 这个序列是"平稳的".

例2 下图的中的时间序列由 生成, 其中 , . 它起初有明显地增长, 然后趋于平稳. 利用ADF检验(详情见下文), 我们发现该序列是平稳的(p-value < 0.01).

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

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

在显著水平 的条件下, 我们可以通过计算p-value来接受或者拒绝 :

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

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

AR代表自回归(Autoregression). 假设时间序列 是平稳的, 它可以被表示成如下形式:

MA代表移动平均(Moving Average). 假设时间序列 是平稳的, 它可以被表示成如下形式:

ARMA模型是AR和MA的组合. 假设同上. 它可以被表示为如下形式:

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

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

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

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

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

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

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

对序列进行周期性差分: 得到新的时间序列 如下图所示(红色部分)

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

例5 考虑周期s=18的数据(蓝色曲线). 用 和 分别进行预测的结果如下.

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

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


其中

GARCH即Generalized ARCH, 是ARCH模型的推广 [6] . 设时间序列 是平稳的, 模型可以被表示成如下形式:

其中

Remark ARCH/GARCH随机过程产生的数据是什么样的? 前面提到它们允许 样本的方差 随时间变化, 但是由于 必须满足平稳性(前提假设), 因此样本的方差从局部看是变化(震荡)的, 但从整体看应该是"平稳的"序列. 例如下图是一个 过程生成的时间序列( ).

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

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

ACF的全称是Autocorrelation Function. 对变量 , ACF的值代表 与 之间的相关性.

PACF的全称是Partial Autocorrelation Function. 对变量 , PACF的值代表已知 的条件 下, 与 之间的相关性.

例6 设 . 考虑下面三个模型生成的时间序列, 并计算相应的ACF/PACF.

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

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

(AIC的改良版, 解决小样本过拟合的问题)

(也称为Schwartz Criterion, SBC, SBIC)

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

Python3 code on Github

相似回答