“———
据说最贴心的男票是会记录下女票每一次大姨妈来的时间,然后绘制成一张月份折线图以监测女票的身体健康(以避开无法啪啪啪的时间)。你知不知道,这张图其实就是一个时间序列图,你看图预测未来几个月女票的大姨妈时间就叫做时间序列分析……
咳咳,言归正传,时间序列分析是一种广泛应用的数据处理统计方法,除了计算大姨妈周期,在实际很生活还有很多应用,小白今天就来带大家探探究竟。
小白问:时间序列分析就是分析时间的么?
答:你是想问分析的是什么数据吧?简单来说,时间序列数据是在特定时间内监测或记录下的有序数据集合。太阳活动、潮汐、股票市场趋势、疾病传播等都是时间序列的典型案例。几乎在任意应用科学或工程学领域,只要涉及到基于时间的测量,都可以找到时间序列的声影。科学的定义就是:在特定时间(例如,小时,月或年)内记录下的有序观测值集合。
下图为1720年至1980年的太阳活动图,就是典型的时间序列:
![屏幕快照 2017-02-15 16.23.08.png 0?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/c6732ca2e59539abc232ebe5cf0f4b32.png)
小白问:哦,就是说在规律的时间间隔内检测到的有序数据集,那怎么来分析数据呢?
答:首先,时间序列分析的前提是认为这些收集到的数据点在一段时间内的变化可能具有特定的内部结构,比如趋势啦或季节变化啦等等。在此前提下,通过比较不同时间点上单个或多个时间序列的值,对时间序列数据进行分析,进而提取出有意义的统计量或其他数据特征。
小白问:分析完了怎么用呐?
答:当然就是来预测女票大姨妈啦。哦,口误,当然是利用时间系列模型,基于前期观察到的序列规律来预测未来的数值啦。比如下图,绿线就是预测值,周边的灰色是置信区间:
小白问:什么信什么区间?
答:哈哈,我就知道你会问这个问题。举个例子,你明天要考试数学了,你觉得大概能多少分? 估计70分吧,上下不超过10分。那你对这个预测有多大把握呢?9成吧!我们就说你明天数学考试成绩90%的置信区间(Confidence Interval)为60~80,也就是你有90%的信心考出介于60~80的分数。
小白问:好像懂些了。其实我真想做个时间序列分析,然后预测女票啥时候会生气啊!
答:你还想预测女票啥时候会生气?你咋不找个机器人做女票!时间序列预测的应用可比这广泛多了,比如金融市场分析、库存控制、销售与市场预测、产量预测、地震预测、工作量预测等等,举例都举不完。
小白问:不明觉厉!
答:呃,那我再给你说明白点儿。下面这张图非常清楚地解释了一般时间序列可以被分解成的三个部分。最上面的曲线是我们实际观测到的点,它是由下面三个曲线叠加而成的结果——趋势性(第二条曲线),季节性(第三条曲线)和随机性(第四条曲线)
![0?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/163077419865f6d11ce255c39d3aa8c6.png)
时间序列分析的目的主要有两个,一是要识别监测到的数据所展现出的现象及其本质,就是找到规律,这个规律往往是趋势性的或者有着较为明确的周期即季节性,因此就需要去掉一些不必要的噪音干扰(比如上面的的第四条曲线),并且把趋势性和季节性分解出来,想图示那样;二是要利用这些数据来预测未来同样时间轴上可能会出现的数值(统筹考虑三个分解部分)。
这两个目的都要求我们识别时间序列数据内在的模式并将其尽可能准确地描述出来。因为事物发展的规律在长期内相对稳定(比如你女票的大姨妈来访这样的事件的发生),所以趋势性和季节性这样代表规律的因素,它们的数值变化也相对稳定,在未来的一定时期内,还会像现在看到的这样子变化,所以一旦我们了解了数据系列的模式,就可以解释这些数据并结合其他数据来做预测(例如:季节性商品价格的变化和预测)。
不过小白你要记住,无论我们的理解有多深刻,对现象的解释有多靠谱,时间序列预测的未来越久远,准确度会愈低。
小白问:一定一定。对了,时间序列分析不会出现很多异常的影响因素么?比如女票为了不影响游泳比赛,吃药推迟了大姨妈时间,再按照曲线推测她后续的经期,就会不准了吧?
答:好问题,看来小白你已经会举一反三了。是的,通常收集到的时间序列数据中都会包含有一些随机扰动因素的影响,我们把这些具有不确定性的因素导致的数量变化统称为随机变量,业内常见的是通过“平滑数据”的方法来降低或消除随机变量带来的影响,“平滑”通常也被称为过滤,目前主要有两大类:平均法和指数平滑法。
小白问:指数平滑听起来就是更快一点的平滑呗?
答:差不多是这个意思。
平均法就是取相邻几个数的平均数,然后分析平均数而不是原始数据。举一个简单的例子,平均法中最常见的其中一种叫做“移动平均”(Moving Average),这个例子中,我们把前三个时间点的数值取平均数,当作第3个时间点的移动平均数8.667=(9+8+9)/3,第2,3,4个点数值的平均数作为第4个点的移动平均数…以此类推。
![0?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/e8ddf2d65d0ae046d116f5c8aeff6b3c.png)
指数平滑法稍微复杂一点,但是也更受欢迎,很多时候也更准确。平均法中,过去的历史观测点的权重是一样的,而在指数平滑法里,越遥远的观测点的权重呈指数倍减少,就是说越靠近的点给的权重越高。
移动平均里也有加权移动平均噢,加权是为了体现距离平均值对应时点位置的远近,对平均值的不同影响程度,但是,移动平均只能考虑短期影响,对长期影响怎么办呢?虽然离得越远,影响越小,但是不能杜绝啊,科学的办法来解决,就是指数平滑了,它是通过往期平滑值与当期实际值的加总来体现平滑预测的理念,通过调整两部分的权重来体现过去对现在的影响,乃至对未来的影响。
小白问:嗯嗯,那平滑之后,时间序列分析里面都用到哪些方法和技术建模啊?
答:其实时间序列的应用可以说非常广泛但又备受限制。记得上面我们提到时间序列数据被分解为三个部分吗?其中大趋势和季节效应是相对容易建模的,而随机变化是比较难预测的。常见的针对“普通数据”的统计模型(如响应模型,提升模型等)中,趋势和季节效应可能都不存在时间序列分析就需要做更多的数据准备工作。例如,与用于标准线性回归的数据不同,时间序列的数据不一定是独立的或呈现出相同分布。它的一个决定性特征就是数据的排序是有意义的。数据的排序与内在含义有强依赖关系,更改顺序可能会更改数据的意义。
用来建立时间序列数据的模型主要包括以下几种:
——Box-Jenkins ARIMA(Autoregressive Integrated Moving Average)模型
——Box-Jenkins多变量模型
——Holt-Winters指数平滑法(单,双,三倍)
——不可观察成分模型(Unobserved Components Model)
通常使用者的偏好和需要应用的场景会决定最终使用哪类技术。时间有限,这里肯定没法给你介绍清楚所有的方法和技术,日后真需要用的时候,就要你自己多做做功课,再多加探索了。
小白问:我简单查了一下有关时间序列分析的资料,好多数学公式啊,这些模型有没有现成的程序包?
答:哈哈,小白你真是个求知欲旺盛的好喵。R和Python都有的,推荐你一个链接,有Python的样本程序,可以从基础学习哦。https://bicorner.com/2015/11/16/time-series-analysis-using-ipython/
刚刚女票召唤我了,你自己去研究研究吧!
原文发布时间为:2017-02-21
本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号