©作者 | 董叶

时间序列是一种特殊类型的数据集,其中随时间测量一个或多个变量。

例如天气变化, 股票价格变动,时间序列分析即是通过构建模型反映时间序列中包含的动态依存关系,并借以对未来发生的变化做预测。对最近7天的天气、明天收盘股价的预判。

01 时间序列分析的模型分类

目前发展的时间序列分析模型主要有三种:

1.1 经典时间序列模型

经典时间序列模型是一系列统计模型,例如自回归模型(AR)、整合移动平均自回归模型(ARIMA), 广义自回归条件异方差模型(GARCH),它们基于时间序列内的时间变化,并且适用于单变量时间序列,这些模型一般只适用于时间序列。

1.2 监督模型

线性回归、随机森林、XGBoost 这类经典的机器学习算法,虽然不是专门为时间序列分析而设计,但是在变量预测问题有着很好的效果。

1.3 深度学习模型

长短时记忆模型LSTM、Facebook开源时间序列库Prophet,亚马逊DeepAR, 此类模型能够自动从原始数据和不完整数据中学习和提取特征,同时考虑时间序列长期和短期的数据依赖。

02 时间序列数据的主要特性

2.1 时间序列数据的三个组成部分:季节性、趋势和噪声

季节性是出现在时间序列变量中的重复运动。例如,一个地方的温度在夏季较高,而在冬季较低。可以计算平均每月温度并使用此季节性作为预测未来值的基础。

趋势可以是长期向上或向下的模式。在温度时间序列中,由于全球变暖可能会出现趋势。例如,除了夏季/冬季季节性之外,很可能会看到平均温度随着时间的推移略有上升。

噪声是时间序列中可变性的一部分,既不能用季节性也不能用趋势来解释的部分, 始终存在的误差项。

2.2 时间序列数据中的自相关

自相关是时间序列的当前值与过去值之间的相关性,这意味着可能用历史数据预测未来。自相关具有非常强的合理性,因为我们的历史观让我们自然的去相信:历史会重演,过去的经验可以被用来反映未来。

2.3 时间序列中的平稳性

平稳性是指时间序列数据的变化特征维持稳定,数据的历史分布和未来分布趋于一致。通常股价走势数据、天气温度数据具有趋势性、周期性,并不直接满足平稳性特征,一般通过差分法将非平稳数据转换成平稳数据,例如股价的涨幅,温度按月度同比变化值,通过去除时间序列中趋势、季节性变化来平稳化数据。

03 实际应用 - 股价预测

预测股市的表现是最困难的事情之一,但时间序列分析可以为股票的技术分析提供参考,下文将会采用经典时间序列模型ARIMA以及深度学习LSTM模型对股价进行预测。

其中我们将会使用 Akshare 库下载国内A股交易数据, 并且以平安银行(股票代码:000001)为例。

经典时间序列模型 – ARIMA

ARIMA 整合移动平均自回归模型,这个模型适用于非平稳非周期性时间序列分析ARIMA模型有三个分量,通常以ARIMA(p,d,q)表示模型。

AR为自回归项,p为自回归项数;

I为差分项,d为使之成为平稳序列所做的差分次数(阶数);

MA为"滑动平均",q为滑动平均项数。

其中L是滞后算子(Lag operator),d in Z, d>0。

通常分析时间序列数据,可以参照下图:

对序列平稳性判断,通常我们采用ADF检验:

股价的原始序列不满足平稳性条件, 我们需要进行平稳性处理,一般采用差分和变换的方法,下面是确定模型相关参数的步骤,

1对于非平稳时间序列要先进行d阶差分运算,化为平稳时间序列

2 对得到的平稳时间序列分别求其自相关系数ACF 和偏自相关系数PACF,通过对自相关图和偏自相关图的分析,得到最佳的阶层 p 和阶数 q

3 由以上得到的d、p、q,得到ARIMA模型,然后开始对得到的模型进行模型检验。

从上图可以得出我们初步的模型可以选择 ARIMA(1,1,1)

Auto_ARIMA

除了用以上图形观察的方法选择模型参数之外,我们可以借用 pmdarima.arima 内置的Auto-ARIMA包自动迭代(p,d,q)三个参数,通过穷举的方法找出所有可能参数,从而求得最小AIC的模型。

采用模型作为预测:

逐点预测:

上面是采用ARIMA 模型预测最近一天的结果,属于逐点预测,如果用来预测未来N天的结果,模型反馈就比较差了,连续预测期数越长,效果越差。

上面的例子中,逐点预测的结果比完整序列预测更精确,但这有点欺骗性。

在这种情况下,除了预测点和最后一次预测的数据点之间的距离,模型其实不需要了解时间序列本身,因为即便它这次预测错误了,在进行下一次预测时,它也只会考虑真实结果,完全无视自己的错误,然后继续产生错误预测。

虽然这听起来不太妙,但其实这种方法还是有用的,它至少能反映下一个点的范围,可用于波动率预测等应用。

LSTM 长短期记忆模型

LSTM 广泛用于序列预测问题,并已被证明非常有效。它们运行良好的原因是因为 LSTM 能够存储重要的过去信息,而忘记不重要的信息。LSTM 有三个门:

输入门 input gate :输入门将信息添加到细胞状态

遗忘门forget gate :删除模型不再需要的信息

输出门output gate :选择要显示的信息作为输出

LSTM中采用专门设计的“门”来引入或者去除状态信息,类似信号处理中的滤波器,允许信号部分通过或者通过时被门加工了;有的门也跟数字电路中的逻辑门类似,允许信号通过或者不通过。

以下是Python实现过程:

1.导入数据,原始数据进行归一化处理,使数据介于[0,1]

2.利用前期数据预测当期,数据集(前期股价,当期股价)当做(X,Y)

3.建立及训练 LSTM 模型,模型很简单,就只有一個LSTM层及output层,其中并没有特别处理季节效应,模型训练100轮。

从预测结果上看,初次构建的LSTM 模型进行逐点预测的效果不如ARIMA模型,我们可以通过调整LSTM层数、添加dropout值或者增加epoch数来提高模型效果。

关于模型参数的调整,网络上有很多文章可以借鉴,就不在赘述了。

预测股市的表现是最困难的事情之一,预测涉及的因素很多——物理与心理、理性和非理性行为等。所有这些因素结合在一起,使股价波动且难以准确预测。

本文讨论的模型方法仅仅是用来展示时间序列预测的分析思路和方法,并不足以应用在实际投资当中。

时间序列预测是一个非常有趣的领域,除了股价、天气预测还有航班、门票销售相关的其他数据场景可以让我们探索。

时间序列分析的模型应用 – 股价预测相关推荐

  1. arima 数据预处理_时间序列分析|ARIMA模型分步骤解析及R中实践

    你是否想要做时间序列分析,但却不知道代码怎么写? 你是否不清楚时间序列分析各种模型该在什么情况下使用? 本文将针对以上两个问题,带你入门时间序列分析~ 等等! 不止'入门' 读完这篇,你立即就能在R中 ...

  2. covariance matrix r语言_时间序列分析|ARIMAX模型分步骤详解和R中实践

    这是关于时间序列的第N篇文章,本文将介绍ARIMAX模型,简单来说就是在ARIMA的基础上增加一个外生变量.ARIMAX和ARIMA相比在理论上没有太多新的内容,所以本文直接介绍在R里怎么一步一步跑A ...

  3. 时间序列分析ARMA模型原理及Python statsmodels实践(上)

    目录 1. 时间序列及相关基本概念 1.1. 时间序列分解 1.2. 时间平稳序列 1.3. 自相关与自相关函数(ACF) 1.4. 白噪声及Ljung-Box检验 1.4.1. 白噪声 1.4.2. ...

  4. 时间序列分析-ARIMA模型

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 时间序列分析-ARIMA模型 概述 一.时间序列平稳性 1.严平稳 2.弱平稳 二.建模步骤 1.平稳性检验 2.人工p 和 q 阶数 ...

  5. 数学建模--时间序列分析、模型预测

    学习自:b站 清风数学建模 第1部分_时间序列分析的概念与时间序列分解模型 时间序列 时间序列的基本概念 区分时期和时点序列 时期序列适用于灰色预测模型 时间序列分解 时间要小于1年,才能进行时间序列 ...

  6. python时间序列分析航空旅人_时间序列分析-ARIMA模型(python)

    时间序列概念:在生产和科学研究中,对某一个或者一组变量 进行观察测量,将在一系列时刻 所得到的离散数字组成的序列集合,称之为时间序列.时间序列分析是根据系统观察得到的时间序列数据,通过曲线拟合和参数估 ...

  7. python arima模型_时间序列分析 ARIMA模型 Python(2)

    最近做了一个时间序列分析的项目.时间序列分析不同于以前的项目--看一下相关的库怎么用,就可以快速上线应用.它是非常需要你的基础知识的,Hamilton关于<时间序列分析>方面的知识,写了厚 ...

  8. 季节性时间序列分析-SARIMAX模型的python实现

    0 SARIMAX模型时间序列分析步骤 1. 用pandas处理时序数据 2. 检验时序数据的平稳性 3. 将时序数据平稳化 4. 确定order 的 p.d.q值 5. 确定season_order ...

  9. 时间序列模型matlab_平稳时间序列分析01---AR模型

    引言 根据Wold分解定理,任意一个离散平稳时间序列都可以分解为一个确定性平稳序列和一个随机性平稳序列之和.且确定性序列可以表达为历史序列值的线性函数,而随机性序列可以表达为历史新息(历史纯随机波动) ...

  10. 时间序列分析 ARMA模型(R语言实战)

    文章目录 一.ARMA模型是什么? 二.建模过程 1.平稳性检验 2.阶数的确定 3.参数估计 4.模型检验 5.模型预测 一.ARMA模型是什么? 自回归滑动平均模型(英语:Autoregressi ...

最新文章

  1. c++11 之模板定义别名(using)
  2. ython二十五: 解压序列
  3. Hadoop 2.2.0安装和配置lzo
  4. 比较器Comparable(内部比较器)和Comparator(外部比较器)
  5. linux通过platform_match()匹配platform总线上的device和driver
  6. 【Vue.js】vue用户登录功能
  7. Node.js中的常用工具类util
  8. Ubuntu18 搭建apache2+php5.6+mysql服务器
  9. 计算机组成原理实验八报告,计算机组成原理实验八报告
  10. 飞畅 8口RS-485集线器产品性能参数介绍
  11. 链接服务器访问接口返回了消息没有活动事务,因为链接服务器 SQLEHR 的 OLE DB 访问接口 SQLNCLI10 无法启动分布式事务。...
  12. 二叉链表的建立和遍历 完整的前,中,后和层序建立和遍历
  13. Bootstrap HTML 编码规范之IE兼容模式
  14. 【嵌入式Linux】嵌入式Linux应用开发基础知识之串口应用编程
  15. g18 android 4.4,cm11出了最新的android4.4完美的附网址
  16. linux环境下,集群中Hadoop版本更换
  17. 参考一:双缝干涉与波长测量
  18. iOS-开发者相关的几种证书
  19. Linux 查看系统日志命令
  20. 计算机技术与软件专业资格(水平)考试 报考指南

热门文章

  1. java索引越界异常_java中的字符串索引越界错误(charAt)
  2. DFT(design for test)
  3. Matlab快速傅里叶变换
  4. 深入理解Kafka cruise control
  5. 计算机快捷键win,Windows电脑常用的10个Win组合快捷键,你知道多少?
  6. java vm 参数及设置(转载)
  7. springboot elementui vue商城微信小程序源码(毕设)开发讲解
  8. Java、JSP网上订餐系统
  9. 进销存管理系统源码VS2015
  10. android tv 文件管理,电视必备!5款文件管理器强力推荐