时序分析

作者: zidea | 来源:发表于2020-08-21 19:07 被阅读0次
    machine_learning.jpg

    时序预测

    time_series.jpg

    概述

    我们用机器学习模型通过对历史数据来学习拟合,从而来对未来进行预测。这次分享我们主要以传统

    • 统计理论时序分析
    • 机器学习在时序分析中的应用
    • 深度学习在时序分析中的应用

    主要从这三个方面来展开对时序分析

    时序应用

    时序分析是一个比较有特点研究领域,这个领域始于对金融业,例如股市趋势预测、投资风险评估。后来有渗透到其他领域,对未来市场预测、动态定价、用电量预测以及在生物医药也有其一席之地。

    • 股市预测
    • 风险评估
    • 销售目标
    • 财务计划
    • 库存管理(Inventory management)
    • 物流管理
    • 动态定价(例如机票)
    • 商业活动
    • 点击率预测
    • 工业用电量
    • 生物医药:心电图
    • 设备损耗,零件更换

    考虑因素

    颗粒度

    • 产品: 预测每一个产品还是一组产品
    • 时间周期: 每周、每月还是每年,供应链管理可能需要做到前一周或者前一天
    • 空间维度:区域

    预测范围

    • 短期预测:个人计划、产品和交易(小时为单位),快餐店,人员排班。
    • 中期预测:新设备购买、资源预定、原材料的购入(月或季度)
    • 长期预测:决策、需要考虑到市场环境、内部资源以及机会等诸多因素的预测

    y_{t:t+T} = f(x_{t-1},x_{t-2},\dots,x_1,temperature_t,dow_t,month_t)

    • x_1,\dots,x_{t-1} 就是历史观察量
    • 当前可以观察的外部依赖量,例如价格、促销活动

    时间序列的定义

    数学定义一般都是比较简短、严谨和抽象的语言来描述一个概念。按时间序列排序的一组随机数变量.
    X_1,X_2,\dots,X_t
    表示一个随机事件的时间序列,简记为\{X_t,t \in T\}

    在时序预测中,每一个数据也就是我们看到的数值其实都是一个随机变量的观察值,随机变量服从一定分布。其实我们看到值也可以称为观察值其实是时间随机序列的一个实现,或者叫做实例,所有我们看到历史数据就是随机时间序列一组样本。

    其实我们通过分析来把握这个随机时序的性质

    • 总体分布
    • 边缘分布
    • 联合分布
    • 均值和方差

    因为我们知道每一个点都是服从整体分布。只要我们通过数据得到这些随机时序的性质,也就是掌握随机变量的模样。其实就是一个数理统计过程,也有点类似机器学习中生成模型。

    其实上面就简述了时间序列任务总体方案

    1. 随机抽样
    2. 观察值序列
    3. 通过观察值我们分析出随机序列性质
    4. 根据这些性质建立模型,所谓的模型就是我们数学方式将这些分析性质描述和表示出来
    5. 使用模型进行预测

    有了整体方案,我们一步一步按照这些步骤去去做,然后把需要填填上就完成时序预测。

    时间序列分析

    上面内容一看任务的关键步骤就是时间序列分析,那么什么是时间序列分析呢?一句话时间序列分析就是对时间序列进行统计分析。

    • 其中统计就是把随机事件变化发展的过程记录下来
    • 其中分析就是寻找发展变化过滤

    时间序列分析方法

    那么具体分析方法有那些呢?主要有两种,分别是描述性时序分析和统计时序分析。

    • 描述性时序分析
      什么是描述分析,就是我们通过观察数据,和数据生成图表来进行分析寻找规律。这种方式操作简单、也比较直观

    • 统计时序分析
      统计时序分析,就是我们用一些规律和统计方法来分析寻找时序的规律。

    • 频域分析方法
      任何一种无趋势的时间序列都可以分解成若干不同频率的周期波动。大家看到分解为若干不同频率的周期波动,就会想起傅立叶分析,傅立叶变换不但被应用在语音和图像,也可以通过傅立叶变换将时间序列分解为若干正弦和余弦的函数。

    • 时域分析方法
      最近分析时序主要方向就是时域分析方法,时序分析主要从自相关的角度来揭示时序发展的规律。我们这里说一说时域分析的基本思想,通常我们认为事件发展具有一定惯性,这里惯性用统计语言来说就是序列值之间的相关关系,也就是自相关。

    • 考察观察值序列的特征

    • 根据序列的特征选择适当的拟合模型

    • 根据序列的观察数据确定模型的口径

    • 检测模型优化模型

    • 拟合模型预测

    machine_learning.jpg

    平稳性

    时间序列分析理论中有两种平稳性定义

    • 严平稳(strictly stationary)
    • 弱平稳(weakly stationary)

    严平稳

    所谓严就是说严平稳的所有统计性质都不随时间的变化而变化。这是严平稳性质也是严平稳的定义.
    以后我们对于一些概念都可以尝试用数学语言描述一下,
    F_n(x_1,x_2,\dots,x_n;t_1,t_2,\dots,t_nx_1,x_2,\dots,x_n;t_1 + \epsilon,t_2 + \epsilon,\dots,t_n + \epsilon)

    弱平稳

    也称协方差平稳(covariance stationary)、二阶平稳(second-order stationary)或宽平稳(wide-sense stationary),弱平稳时间序列的一阶矩和二阶矩不随时间的变化而变化。

    判断时间序列的平稳性有助随后选择模型,那么的平稳性是时间序列一个重要性质,可以用来给时间序列进行分类。

    我们会谈谈严平稳和弱平稳之间的关系,满足严平稳的序列具有弱平稳性,但是严平稳并不能全部涵盖弱平稳。为什么说严平稳并不能全部涵盖弱平稳?这是因为柯西分布是严平稳时间序列,但是不存在二阶矩或一阶矩,所以柯西分布就是不满足弱平稳的严平稳。

    当时间序列为正态分布序列,则由二阶矩描述了正态分布的所有统计性质,此时弱平稳的正态序列也是严平稳。

    因为在实际中多数时间序列都是弱平稳,所以今天我们也要重点谈谈弱平稳。

    平稳性定义

    如果时间序列\{y_t\}的二阶矩有限
    E(y_t) = E(y_{t-j}) = \mu
    我们看随着时间变化,时间序列的均值是一个常数。
    Var(y_t) = Var(y_{t-j}) = \sigma^2
    方差同均值一样也是常数,方差是二阶矩
    Cov(y_t,y_{t-s}) = Cos(y_{t-j},y_{t-j-s}) = \gamma_s
    协方差也是二阶矩,不同时刻的点是否有规律性,因为弱平稳的协方差或者准确地说自协方差是一个时间间隔的函数。当时间间隔协方差是相当的,当间隔不相同的时候对应协方差就不相同,当 s 变化 \gamma_s 就会变化

    其实我们就是在找(y_t,y_{t-1})(y_t,y_{t-2})之间的关系,这里用 \gamma(s) s 表示不同的时间间隔,例如(y_t,y_{t-s})

    那么也就是说弱平稳时间序列的自协方差只与时滞 s 有关,与时间的起始位置 t 无关。

    自协方差Cov(y_t,y_{t-s})简记为仅与时滞s 相关的一元函数形式\gamma_ss=0 时,\gamma_0 就等同于方差
    \gamma_0 = \sigma^2
    平稳时间序列的自相关系数也可以简记为与时滞 s 相关的一元函数形式p_s
    p_s \frac{\gamma_s}{\gamma_0} = \frac{\gamma_s}{\sigma^2}

    E[X_{t+k} - a][X_t - a] = \gamma(k) \forall t,t + k \in T

    平稳时间序列的应用特性

    • 由于时间的不可重复性,一个时间序列仅能够获得一个观测值序列
    • 一般情况下,通过每个时间点上所能观测到单一的样本来估计对应随机变量的一阶矩和二阶矩是不可行的。
    • 可以平稳时间序列在一定条件下,通过所有时间点上各样本的集合来估计其常数的一阶矩和二阶矩

    时间序列模型平稳性的判断

    如果一个模型生成时间序列是平稳的,那么就说明该模型是平稳,否则就是非平稳的

    模型平稳性的判别原因

    这里有一段话大家可以理解一下,AR、MA和ARMA模型都是常用的平稳序列的拟合模型,但并非所有的AR、MA和ARMA模型都是平稳的。

    模型的平稳性判别方法

    • 时序图和自相关图方法
      x_t = 0.8 x_{t-1} + \epsilon_t
    • 平稳域判别法和单位根判别法

    好我们回到线性差分方程,我们重点说一下差分方程两种表达方式,其中我们先说一下什么是滞后算子。
    假设已知时间序列\{y_t\}\{z_t\} 有如下关系
    z_t = y_{t-1}
    其实就是我们不用y_{t-1}来表示t-1是的y 而表达成为y_t = Ly_{t-1} 就是我们在程序中看到 lag 也有用 B 表示的,以此类推
    \begin{aligned} y_{t-1} = L y_t\\ y_{t-2} = LL y_t \end{aligned}
    所以用滞后算子表达出多项式
    A(L) = \alpha_0 + \alpha_1L +\alpha_1L^2 + \dots + \alpha_p L^p

    A(L)y_t = (\alpha_0 + \alpha_1L +\alpha_1L^2 + \dots + \alpha_p L^p) y_t

    差分算子

    阶差分

    • 一阶差分
      时间序列分析过程中,经常会用差分运算,对时间序列\{y_t\},差分运算可以表示为
      \Delta y_t = y_t - y_{t-1} = (1 - L)y_t
      其中,\Delta 差分算子,
    • 高阶差分
      \Delta^2 y_t = \Delta \Delta y_t
      \begin{aligned} = (y_t - y_{t-1}) - (y_{t-1} - y_{t-2})\\ = y_t - 2y_{t-1} + y_{t-2} \\ =(1- 2L + L^2)y_t \end{aligned}
      在阶差分我们计算都是针对相邻的两个点的计算,而步差分

    步差分

    • s 步差分
      差分运算还可以运用更多间隔的时间点之间,考虑
      \Delta_s y_t = y_t - y_{t-s} = (1 - L^s) y_t
      这里\Delta_s 称为 s 步差分。
      s 步差分的典型用处是测算季度或月度时间序列数据的同步变化,因此也称季节性差分。

    求解p阶线性差分方程的特征根法

    典型的 p 阶线性差分方程为
    y_t = c + \alpha_1 y_{t-1} + \alpha_2 y_{t-2} + \alpha_p y_{t-p} + \epsilon_t

    machine_learning.jpg

    今天我们主要说时间序列的一些推导公式,之前看些资料,其中关于时间序列中常用AR模型、MA模型背后推导说的比较深,不易于理解。最近看了一些资料,适当地总结一些。

    时间序列

    时间序列虽然简单、但是要是想真正弄懂也需要花费一些功夫,将序列分解为一下形式。
    X_t = T_t + S_t + R_t, t =1,2,\dots

    • T_t 趋势项
    • S_t 季节项
    • R_t 随机性

    这通过加法模型将这些项来表示时间序列,其中趋势项和季节项我们是可以通过模型来拟合,因为他们都是有规律可循的,需要我们能够通过模型学出来

    \begin{aligned} GDP_t = GDP_{t-1}(1 + 0.07)^1\\ GDP_t = GDP_{t-2}(1 + 0.07)^2 \end{aligned}
    GPD 就是一个趋势模型,而且是随着时间而不断成指数增长。

    超市的人流,具有周期性,每周的人流在周末人流要相对于周一到周五人要多一些。每天人流下午要相对于上午人流要多一些。

    X_t - T_t - S_t = R_t, t =1,2,\dots
    那么也就是说明我们对 R_t ,我们之前讨论过时间序列是一个随机过程,也就是f(x_1,x_2,\dots,x_t) 的联合分布,通常我们研究一个联合分布是一个比较复制的问题。
    这是我们在统计模型时候,最早的NPL 分析用到链式法则来表示联合概率一种
    p(x_1)p(x_2|x_1)p(x_3|x_1,x_2)\dots p(x_n|x_{n -1},x_{n-2},\dots,x_1)
    学习过概都知道条件概率,时序每一个时刻随机变量都是和他之前的随机时间点的概率是相关。这就是联合概率,要计算这个联合概率是需要相当大的计算量。

    • 马氏过程 p(x_3|x_2,x_1) = p(x_3|x_2)
      p(x_1)p(x_2|x_1)p(x_3|x_2)\dots p(x_n|x_{n-1})
      也就是把影响缩小到某一个时刻随机变量概率仅与其前一时刻的概率分布相关,这就可以表达为马氏过程

    • 还有一种方式也就是今天我们讨论的表现形式。
      x_n = f(x_{n-1},\dots,x_1,\epsilon_n,\dots,\epsilon_0)
      认为这个函数是之前 p 个时间点的线性组合,然后在
      a_1x_{n-1} + \dots + a_px_{n-p} + \epsilon_n
      这就是在时间序列要研究的模型为 AR(p) 模型,\epsilon_n是白噪声像,也是随机扰动项,类似小球落地弹起的过程,我们知道小球落地后会弹起一定高度,小球每次弹起高度都可以看成系数,随着弹起次数增加,小球高度逐渐减少、这里\epsilon_n表示干扰项,也就是外力的作用改变衰减过程。

    x_t = 0.8x_{t-1} + \epsilon_t

    x_t = ax_{t-1} + \epsilon_t
    当 a 小于 1 说明模型是稳定,反之说明模型是不稳定,为什么会有这样结论。我们可以结合小球的落地原理来项这个问题。
    其实我们非齐次项差分方程
    x_t - 0.8x_{t-1} = \epsilon_t
    下面是差分方程通解
    x_t - 0.8x_{t-1} = 0
    Bx_t = x_{t-1}
    其中 B 也即是滞后算子L,这里用 B 来表示,这里还是再演示一下吧
    \begin{aligned} x_{t-1} = Bx_t \\ x_{t-2} = B^2x_t \\ \end{aligned}
    x_t - 0.8Bx_t = \epsilon_t
    接下来计算特征解,提取左边x_t
    (I - 0.8B)x_t = \epsilon_t
    x_t = (I - 0.8B)^{-1}\epsilon_t

    \frac{1}{1 - 0.8Z}
    \frac{1}{1-x} = \sum_{n=0}^{\infty} x^n = 1 + x+ x^2 + \dots x^n + ,|x|<1
    可以表示无限变量只和形式,这个大家应该不会陌生,而且\frac{1}{1 + x} 类似\frac{1}{1 - 0.8Z},所以替换替换等比数列之和。
    \begin{aligned} \frac{1}{1 - 0.8z} = \sum_{n=0}^{\infty}(0.8z)^n\\ (I - 0.8B)^{-1} = \sum_{n=0}^{\infty}(0.8B)^n \end{aligned}

    x_t = \sum_{n=0}^{\infty}(0.8)^nB^n \epsilon_t = \sum_{n=0}^{\infty} 0.8 \epsilon_{t-n}

    B^n\epsilon_t = (B,B\dots,B)\epsilon_t

    重点相关性研究x_tx_{t-k}可以用a_1,\dots,a_p计算出来。AR序列相关性是随着负指数衰减,MA(q) 模型是有限相关性,
    X_t = b_1 \epsilon_{t-1} + \dots + b \epsilon_{t-q} 有限时间序列相关(X_t,X_{t-q-1})=0

    根据均方差最小原则,来进行预测
    f(x_{t-1},\dots,x_{t-p}) = E(x_t|x_t\dots x_{t-p})
    也就是我们讨论的AR模型,那么AR模型就可以用于时间序列分析
    a_1x_{t-1} + \dots + a_p x_{t-p}

    f(x_1,x_6,x_7) = f(x_2,x_7,x_8) 这样时间序列步长间隔相同间分布是一致,这样时间序列才是平稳的时间序列。线性filter

    f(x) = \sum_{n=0}^{\infty} a_n \sin nx + \sum_{n=1}^{\infty} b_n \cos nx
    这是研究时间序列另一种模型,通过频域来研究时间序列

    x_t = a_1 x_{t-1} + \dots + a_p x_{t-p} + \epsilon_t

    • a_1,\dots,a_p 不能随意取值,a_1z_p + \dots + a_pz =0 的多项式根必须在单位圆外部
    • 对于AR模型有a_1,\dots,a_p 和研究Var(\epsilon_t) = \sigma^2 有 p+1 个参数,我们主要就是研究这个写参数,通过调整参数找到拟合预测线最好

    相关文章

      网友评论

        本文标题:时序分析

        本文链接:https://www.haomeiwen.com/subject/pyxpjktx.html