专栏首页张俊红时间序列预测(下)

时间序列预测(下)

总第219篇/张俊红

前面两篇给大家介绍了几种对时间序列直接的预测方法,这一篇给大家讲讲如何对时间序列进行分解,并根据分解法对数据进行预测。

要对一个指标进行预测,首先得知道影响这个指标的因素都有哪些。假如,现在领导让你预估下个月的销量情况,这个时候你会从哪些角度进行考虑呢?也就是什么因素会影响下个月的销量呢?

正常情况下,第一个需要考虑的因素就是今年比往年整体销量的增长情况是什么样子的,我们把这个因素称为长期趋势;第二个因素呢就是下个月是一年中的淡季还是旺季,一般业务都是会有淡旺季之分的,我们把这个因素称为季节因素;与淡旺季相类似还有一个因素是循环因素,淡旺季是针对一年内的数据而言的,而循环因素是针对不同年份之间的,比如股市的熊市和牛市周期;前面这三个都是已知的一些因素,实际中总是会有一些其他我们所不知道的因素,但是又确实影响着指标的实际情况的,我们把这种因素称为不规则因素。

综上,一个时间序列可以分为:长期趋势(T)、季节因素(S)、循环因素(C)、不规则因素(I)四部分。

那么我们应该如何把这四个因素组合起来呢?有两种组合方式:

加法模型:Y = T + S + C + I
乘法模型:Y = T * S * C * I

如果各个因素之间对Y值的影响是相互独立的,那么就用加法模型,反之则需要使用乘法模型。

接下来我们看一下这几个因素分别如何求取:

1.首先我们可以通过移动平均的方法求出TC值,即长期趋势和循环因素两部分; 2.对TC值利用方程(线性、二次项、指数、对数、多项式等)进行拟合,得到的拟合值就是T; 3.利用TC值除T值就可得到循环分量C值; 4.用序列值Y除TC值,即可得到SI,即季节因素+不规则因素 5.求取过去几年相同季节的平均数,再计算全季总平均数,然后用各季节平均数去除全季总平均数,得到的值就是各季节指数,需要保证各季节指数之和等于4,如果不为4,则需要调整。最后用SI值除S值即可得到I值。

在实际应用中上面的几个因素不一定同时存在,需要根据实际情况来进行判断。

以上是关于时间序列各因素的一个拆解,接下来给大家一个举个例子:

下表为2015年-2019年各个季度的GDP值,这是一个完整的时间序列,我们接下来就看下如何拆解这个时间序列中的各个因素。

先来画个趋势图,看看整体趋势情况:

先进行第一步,求取移动平均值,因为我们的数据有严格的季节性,所以选取4期移动平均,关于移动平均的方法在前面讲过,这里就不重复了。

第二步根据求出来的移动平均值,拟合回归方程,因为看趋势像线性趋势,所以直接选择线性方程进行拟合,结果如下:

第三步利用Y值除移动平均TC值即可得到SI值。

第四步求取季节因素S值,我们先对季节因素做个图:

可以看到每年的第一季度到第四季度都是稳定上升,接下来求取下具体的季节因素大小,其实就是每个季节的在全年中的一个占比情况。

第五步用SI值除S值,即可得到I值。

最后整体的结果如下:

我们并对2020年各个季度的GDP做了一个预测,即下图中红线部分,每个季度的预测值等于该季度对应的TSC,因为每个值对应的I不相同,所以就没放进来,当然也可以对不同季度的I值取均值放进来。

以上就是关于时间序列预测的下部分。为了理解更加深刻,大家一定要自己跟着过程计算一遍。

本文分享自微信公众号 - 张俊红(zhangjunhong0428),作者:张俊红

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 时间序列数据(上)

    总第92篇 01|时间序列定义: 时间序列是按照一定的时间间隔排列的一组数据,其时间间隔可以是任意的时间单位,如小时、日、周月等。比如,不同时间段某产品的用...

    张俊红
  • 作为一台“取数机”,你能不能把数据取准确?

    作为一名数据分析师,可能经常会抱怨自己整天在接一些临时数据需求,根本没时间去做分析。所谓的临时数据需求更多的都是取数,一会领导要你看一下这个数,一会业务部门又要...

    张俊红
  • Jupyter Notebook如何导出包含中文的 PDF?

    Jupyter Notebook是很好的数据科学创作环境。Jupyter提供导出的格式有 .py、.html、.md、.pdf等。目前用其导出包含中文的pdf会...

    张俊红
  • 基于DNSmasq写了个WEB界面(开源)

    网上找了一下好像没有合适的 DNSmasq WEB 界面,虽然 DNSmasq 配置已经足够简单了,但还是觉得 WEB 管理更加方便。

    砸漏
  • [TCP/IP] ping traceroute和TTL

    1.Time To Live是生存时间的意思,就是说这个ping的数据包能在网络上存在多少时间。当我们对网络上的主机进行ping操作的时候,我们本地机器会发出一...

    陶士涵
  • Spring Boot功能实战

    添加web功能启动器 添加了Spring Boot基础依赖后,如要使用web mvc功能,只需要添加如下启动器即可,Spring Boot会自动装配web功能。...

    Java技术栈
  • Spring Boot简单环境配置

    使用Maven,通过导入Spring Boot的starter模块,可以将许多程序依赖的包自动导入到工程中。使用Maven的parent POM,还可以更加容...

    itlemon
  • 由SecureCRT引发的思考和学习

    [由于业务需要,最近在云上新购买了一批centos7.0的服务器,用脚本批量添加了用户(脚本请见我之前的博客/秘钥认证用户自动控制:]](http://my.o...

    明哥的运维笔记
  • HLS Lesson12-for循环优化:基本性能指标

    #include<ap_int.h> #define N 3 #define XW 8 #define BW 16 typedef ap_int<XW> dx_...

    瓜大三哥
  • Android面试问题整理

          作为一个即将毕业的Android程序媛,开始面临找工作了,本媛媛还是有点小紧张,于是收集了一些Android面试的题目.希望能够用上.如果大家有A...

    仇诺伊

扫码关注云+社区

领取腾讯云代金券