概率统计随机过程之时间序列分析

概率统计随机过程之时间序列分析

时间序列分析(Time-Series Analysis)是统计与随机过程中常用的场景,在机器学习、强化学习的预测中也有重要地位,本笔记介绍时间序列分析的基本概念和指标,记录对时序分析的基本理解。

时间序列的基本概念

时间序列:又叫动态序列,是指将同一对象不同时间的观测数据按期发生的先后顺序排列而成的序列。

这就是我们常说的时域表示,自变量(横轴)是时间,因变量(纵轴)是观察值。常见的时间序列如股市K线图,各年经济统计图表,Gartner技术成熟曲线等。

时间序列是一种动态的数列分析。时间序列中每一时期的数值都是由许多不同的因素同时作用的综合结果

时间序列的基本要素:

  • 所属的时间范围:可以是年份,季度,月份或者其他任何形式的时间
  • 不同时间上的观察值

时间序列的类型

时间序列的类型从平稳性来看分为平稳序列和非平稳序列。

  1. 平稳序列。基本不存在趋势的序列,各观察值基本在某个固定的水平上波动,或虽存在波动程度不同,但并不存在某种规律。我觉得和随机过程中的平稳概念类似,各态历经性,每一个时刻的值域是一样的,值域不会随着时间的变化而变化。
  2. 非平稳序列。
  3. 趋势型,随着时间增长,序列观察值存在与时间轴线性或非线性相关的趋势。
  4. 复合型,趋势、季节性、周期性的复合序列。
时间序列稳态与非稳态.png

时间序列稳态与非稳态.png

时间序列的因素分解

时间序列分析的任务就是要正确地确定时间序列的性质,对影响时间序列的各种因素加以分解和测定,以便对未来的状况作出判断和预测。这些因素按照性质可以划分为:长期趋势、季节变动、循环变动、不规则变动。

时间序列因素四部分组成:

  1. 趋势(T,trend),线性趋势、非线性趋势
  2. 季节性(S,seasonal fluctuation)
  3. 周期性(C,cyclical fluctuation)
  4. 随机性(I,irregular variations)

根据因素的关系,时间序列可以通过以下两种方式分解:

加法分解\[Y_i=T_i+S_i+C_i+I_i\] 加法分解中,各影响因素是相互独立的,且均与\(Y\)有着相同的计量单位。季节性变动、周期性变动在各自周期内总会应为0,随机波动长期来看,期望也是0。在加法模型中,各因素的分解是通过减法实现,如 \[ Y-T=S+C+I \]

乘法分解\[Y_i=T_i\times S_i\times C_i\times I_i\] 乘法分解中,只有趋势与与\(Y\)有着相同的计量单位,其他因素都是以比率的形式出现,季节性变动、周期性变动在各自周期内几何平均会应为1(100%),随机波动长期来看,几何平均也是1(100%)。在乘法模型中,各因素的分解是通过除法实现,如 \[ Y\div T=S×C×I \]

时间序列分析基础

时间序列分析的基本目的是描述动态变化(分析过去),揭示变化规律(认识规律)以至获悉未来数量的趋势(预测未来)。最直观的时序分析方法是图像描述,在难道初始数据后,先画出一幅图,能有助于我们更快地了解大体情形。

发展水平与平均发展水平

发展水平:是指现象在不同的时间上的观察值,说明现象在某一时间上所达到的水平。表示为\(Y_0,Y_1,\dotsb,Y_n\).

说白了,发展水平就是观察值的好听点说法。那么所谓平均发展水平,就是一段时间内观察值的均值。

平均发展水平:现象在不同时间上取值的平均数,又称序时平均数或动态平均数,说明现象在一段时期内所达到的一般水平。

绝对数时间序列的序时平均数

绝对数平均数就是我们常说的平均值,对于等分的时期序列,其计算公式是平凡的: \[ \bar{Y}=\frac{Y_1+Y_2+\dotsb+Y_n}{n}=\frac{\sum_{i=1}^n Y_i}{n} \] 时期序列时点序列.png

所谓时期序列,就是指观察值代表了某一时段的值。对应的是时点序列,含义是指观察值只代表当前时间点的值。对于时点序列,我们可以用两侧端点的平均数作为某个时段的代表值,即\(\bar{Y_i}=\frac{1}{2}(Y_i+Y_{i+1})\),因此时点序列的平均发展水平就是: \[ \bar{Y}=\frac{{(Y_1+Y_2)\over 2}+{(Y_2+Y_3)\over 2}+\dotsb+{(Y_{n-1}+Y_n)\over 2}}{n-1}=\frac{{Y_1\over 2}+Y_2+\dotsb+Y_{n-1}+{Y_n\over 2}}{n-1} \] 注意,只有\(n-1\)个时段,而非像时期序列有\(n\)个时段。

有时,时间序列并不是均等的,如下图所示: 间隔不相等的时间序列

我们可以用两侧端点的平均数作为某个时段的代表值,然后再乘以时间间隔的长度,最后除以总的时间,这里使用了加权平均的思想。 \[ \bar{Y}=\frac{({Y_1+Y_2\over 2})T_1+({Y_2+Y_3\over 2})T_2+\dotsb+({Y_{n-1}+Y_n\over 2})T_{n-1}+}{\sum_{i=1}^{n-1} T_i} \]

相对数时间序列的序时平均数

首先,分别求出构成相对数的分子指标\(a_i\)和分母指标\(b_i\)的序时平均数;其次,在进行对比,即得相对数时间序列的序时平均数: \[ \bar{Y}=\frac{\bar{a}}{\bar{b}} \]

增长量

  • 逐期增长量:报告期水平与前一期水平之差,\(\Delta_i=Y_i-Y_{i-1}\)
  • 累计增长量:报告期水平与某一固定时期水平之差,\(\Delta_i=Y_i-Y_{0}\)。显然,累计增长量等于逐期增长量之和。
  • 年距增长量,为了消除季节变动影响,本期发展水平-去年同期发展水平
  • 平均增长量 \[ 平均增长量=\frac{累计增长量}{间隔期数}=\frac{累计增长量}{观察值个数-1} \]

时间序列的速度分析

时间序列的速度主要分发展速度和增长速度两个方面,发展速度是“连本带利”的速度,而增长速度主要看“利息”的增长,二者都反应了时间序列变化的快慢。

发展速度

发展速度:报告期水平和基期水平之比,公式表达为: \[发展速度=\frac{报告期水平}{基期水平}\]

常用的发展速度有环比发展速度、同比发展速度(年距发展速度)、定基发展速度。

  1. 环比发展速度:报告期水平与前一期水平之比\(R_i=\frac{Y_i}{Y_{i-1}}\);
  2. 同比发展速度:本期发展水平与去年同期发展水平之比;
  3. 定基发展速度:报告期水平与某一固定时期水平之比\(R_i=\frac{Y_i}{Y_0}\)。如果是计算长时间内总的发展速度,称为总速度。

显然,观察期内各环比发展速度的乘积等于最末期的定基发展速度,即 \[ \prod_{i=1}^n \frac{Y_i}{Y_{i-1}}=\frac{Y_n}{Y_0} \]

平均发展速度

平均发展速度研究的是多个时期的发展速度均值,这里的均值计算方式需要仔细考虑下,并不能采用简单的算术平均,因为\(n\)个时期发展水平累积起来是乘积关系,所以求其平均数我们自然会想到将其开\(n\)次根号,即使用几何平均数\[ \bar{R}=\sqrt[n]{\frac{Y_1}{Y_0}\times\frac{Y_2}{Y_1}\times\dotsb\times\frac{Y_n}{Y_{n-1}}}=\sqrt[n]{\prod_{i=1}^n \frac{Y_i}{Y_{i-1}}}=\sqrt[n]{\frac{Y_n}{Y_{0}}}\\ 反过来:Y_n=Y_0\bar{R}^n \]

增长速度

增长速度:又称增长率,是增长量与基期发展水平之比,或报告期发展水平和基期发展水平之比减1\[\begin{aligned} 增长速度(增长率)&=\frac{增长量}{基期水平}=\frac{报告期水平-基期水平}{基期水平}\\&=发展速度-1 \end{aligned}\]

增长速度表明了相对增加的程度,注意增长速度可正可负可0,但是在负增长时有些概念需要谨慎使用。同样,增长速度也可分为环比增长速度、同比增长速度(年距增长速度)、定基增长速度。

  1. 环比增长速度(率):报告期水平与前一期水平之比减1,\(G_i=\frac{Y_i-Y_{i-1}}{Y_{i-1}}=\frac{Y_i}{Y_{i-1}}-1\)
  2. 同比增长速度(率):总增长率与去年同期发展水平之比,或者本期发展水平与去年同期发展水平之比减1;
  3. 定基增长速度(率):报告期水平与某一固定时期水平之比减1,\(G_i=\frac{Y_i-Y_0}{Y_0}=\frac{Y_i}{Y_0}-1\)

平均增长速度

平均增长速度,又称平均增长率,是用来描述现象在整体观察期内平均每期增长变化的程度。它与平均发展速度有着密切关系,两者仅相差一个基数,即 \[ 平均增长速度=平均发展速度-1\\ \bar{G}=\sqrt[n]{\frac{Y_n}{Y_{0}}}-1=\bar{R}-1 \]

年化增长速度

如果我们计算不等长时期的增长率,比如要比较一个月的增长率和一个季度的增长率,由于其基准时期不同,其结果往往不客观。为了统一基准,我们可以采用年化增长率(又叫年率)来表示。我们借用平均增长速度的计算方式,先计算出观察时期的平均发展速度,然后再通过多次幂的方式求出年化发展速度。计算公式为: \[ G_A=(\frac{Y_i}{Y_0})^{\frac{m}{n}}-1 \] 其中,\(m\)为一年中的时期个数,比如按月算\(m=12\),按季度算\(m=4\);\(n\)表示当期和某一固定时期所跨的时期总数。

增长1%绝对值

在有些情况下,增长率会起到误导的作用,比如小基数场景下,不多的绝对值增长就会导致增长率的大幅上升。因此,不能单纯就增长率论增长率,需要与绝对值水平结合。为此,提出了增长1%绝对值的概念,即增长率每增长一个百分点而增加的绝对量。 \[ 增长1\%绝对值=\frac{前期水平}{100} \] 用于弥补增长率分析中的局限性。

时间序列的预测

我们对时间序列的研究往往是需要通过历史数据来预测未来的数据,其分析步骤如下:

  1. 确定时间序列所包含的成分,即趋势、季节、周期、随机性的类型判断
  2. 选择适合此类时间序列的预测方法
  3. 对可能的预测方法进行评估,以确定最佳方案
  4. 利用最佳方案进行预测
时间序列预测方法

时间序列预测方法

时间序列分析评估

时间序列分析评估

平稳序列预测

对于既没有趋势性,也没有季节性周期性的纯随机时间序列,我们可以采用平稳序列预测方法。主要包括简单平均法、移动平均法、指数平均法三种。

简单平均法

顾名思义,就是取过去所有值的算术平均数,表达为: \[ F_{t+1}=\frac{1}{t}(Y_1+Y_2+\dotsb+Y_t)=\frac{1}{t}\sum_{i=1}^t Y_i \] 简单平均法将所有观察值看作同等重要,不区分远期数据和近期数据的影响,适合对较为稳定的时间序列进行预测。其误差为: \[ e_{t+1}=Y_{t+1}-F_{t+1} \]

移动平均法

一种对简单平均法做出改进的方法是移动平均法,通过对时间序列的逐期递移,球的一系列平均数作为预测值。移动平均法本质上是构建了一个滑动窗口,只计算窗口内的观察值的平均数。根据数据是否平等可分为简单移动平均和加权移动平均两种。

简单移动平均:假设滑动窗口的大小为\(k\),即计算最近的\(k\)个观察值的平均数,其预测值为: \[ F_{t+1}=\bar{Y}_t=\frac{Y_{t-k+1}+Y_{t-k+2}+\dotsb+Y_{t-1}+Y_t}{k} \] 窗口大小\(k\)是一个超参数,需要根据实验或经验获得。\(k\)越小,越能跟上变化,\(k\)越大,预测曲线越稳定。

对于\(n\)个预测值,我们使用均方误差(MSE)衡量其误差: \[ MSE=\frac{\sum_{i=1}^n (Y_i-F_i)^2}{n} \]

加权移动平均:假设滑动窗口的大小为\(k\),这些观察值并不平等,有些观察值(比如近期的观察值)比较重要,需要加上一个权重\(\alpha\),体现不同观察值的重要性,所有的权重值之和为1。 \[ F_{t+1}=\bar{Y}_t=\frac{\alpha_1Y_{t-k+1}+\alpha_2Y_{t-k+2}+\dotsb+\alpha_{k-1}Y_{t-1}+\alpha_kY_t}{k}\\ \alpha_1+\alpha_2+\dotsb+\alpha_k=1 \] 加权移动平均可以更加灵活的反映不同时期数据对均值的影响,但是除了超参数\(k\),还引入了另一组超参数\(\alpha_i,i=\{1,2,\dotsb,k\}\)。我们可以通过合理地调整这些超参数,来最小化MSE。

指数平滑法

指数平均法算是加权平均的一种特例(没有窗口限制,且权重呈等比数列)。对过去的观察值加权平均进行预测的一种方法。观察值时间越远,其权重也跟着呈现指数的下降,这也是指数平滑法的名称由来。

指数平滑法会将时间序列进行修匀,消除随机波动,找出序列变化趋势。其计算公式为: \[ F_{t}=\alpha Y_{t-1}+(1-\alpha)F_{t-1} \] 其中,\(Y_{t-1}\)\(t-1\)期实际观察值,\(F_{t-1}\)\(t-1\)期预测值,\(\alpha\)为平滑系数(\(0<\alpha<1\)),对于起点我们设\(F_1=Y_1\)。如果我们将式子展开,最终预测值会是前面各期的加权平均。显然,\(\alpha\)越大,新的观察值\(Y_{t-1}\)比例越大,预测对变动越敏感,适用于随机波动比较大的序列;反则反之。

趋势序列的预测

所谓趋势,就是持续向上或持续向下的状态或规律,可分为线性趋势和非线性趋势。常用的趋势预测方法有线性趋势预测、非线性趋势预测和自回归模型预测。

线性趋势预测

本质上是线性回归,用观察值做线性回归。

非线性趋势预测

指数曲线,使用指数曲线取回归数据。本上算是广义线性回归。对于指数曲线,只要取\(\ln\),就可以变成线性回归。 \[ \hat{Y}_t=b_0b_1^t \]

修正指数曲线:加了一个常数偏置\(K\)\[ \hat{Y}_t=K+b_0b_1^t \]

Gompertz曲线: \[ \hat{Y}_t=Ka^{b^{t}} \]

Logistics曲线 \[ \hat{Y}_t=\frac{1}{K+ab^t} \]

多阶曲线:高阶多项式拟合。 \[ \hat{Y}_t=b_0+b_1t++b_2t^2+\dotsb++b_kt^k \]

季节因素考虑

季节指数:刻画序列在一个年度个月或各季度的典型季节特征。