时间序列预测背景知识


本文一共介绍以下五块内容,分别为:

1、时间序列预测简介(introduction)

2、时间序列可视化

3、判断预测法

4、线性回归模型

5、时间序列分解

1、时间序列预测简介(introduction)

1、1 什么是可以被预测的

预测三要素
(1)因素如何影响我们的结果
(2)我们拥有多少数据
(3)我们的预测是否会影响我们的预测结果
例子
我们可以很好的预测我们的用电情况,因为这三个条件是可以较好的满足的,用电需求往往由温度,节假日和经济条件等决定,所以我们可以找到绝大部分影响我们预测结果的因素(第一条满足);我们拥有较大量的历史用电数据和天气等数据(第二条满足);我们有足够的能力开发一个好的模型将用电需求和关键的因素相结合,而且我们的预测结果对于我们的模型影响不大(第三条满足),所以最终我们的预测结果可以非常的好.
但是也有反例,例如大家天天讨论的股票的预测,虽然我们拥有较多的历史股票数据(第二条满足);但是我们对于每个因素对于股票价格的影响的贡献却是未知的,同样的我们对于股票的预测也会影响未来的股票的价格,例如有很多人预测股票价格会上涨,就会有很多人选择购入对应股票,而此时的股票的价格毫无疑问会受到很大的冲击,所以我们的模型的预测结果往往并不是总是很好.
观点
(1)只要模型预测的结果比随机猜测的结果好,我们就认为该事件是可以预测的。
(2)很多人错误的认为在环境变化的情况的预测是不可能的,实际上,一个好的预测模型能较好的抓住事物变化的本质,抓获事物变化的规律。所以现在很多模型假设环境的变化规律会延续到未来。
挑战
预测结果在时间轴上变化会比较大,决定时序预测结果的因素有很多,比如数据类型等,目前也没有唯一的预测模型。有简单的直接根据最近数据对未来结果进行预测的模型(Naive Methods);有利用历史所有数据的复杂神经网络;有的时候还会出现没有任何历史数据的情况等。预测模型与方法的选择往往依赖于我们可获得的数据以及我们预测的质量。

1、2预测,计划和目标

预测,计划和目标的解释
预测:使用所有可获得的信息,包括历史信息以及未来可能影响预测结果的信息来尽最大可能地预测未来我们所需的信息。
目标:希望看到发生的效果,与预测和计划相关。
计划:是预测和目标的一个响应,计划包含决定正确的行动来使你的预测来满足你的目标。
预测在整个过程中是不可或缺的一部分,它影响我们的重要决策,所以在很多公司或者机构都存在预测模型.从预测的时间跨度来看的话,我们可以将我们的预测模型初步划分为:短期,中期和长期预测 其中短期预测常常用来安排人员调度,交通等;中期预测则往往被用来确定下一阶段的资源需求,例如是否需要购买原材料机器设备等.而长期预测更多的出现在公司的策略决定当中,这样的决定经常要考虑市场的机会环境因素以及内部资源等各种因素.
明确预测的目标,是长期预测还是短期预测,是所有的产品预测还是单个产品预测.多久需要进行预测。一旦决定要预测什么,然后就可以针对性的进行数据的收集。一言以蔽之,理解需求。

1、3预测数据和方法

==方法与数据之间的关系: ==数据和方法是密切相关的,拥有什么样的数据往往决定我们采用什么样的预测方法。

  • 如果没有数据或者拥有的数据和需要预测的目标相关性不大,则定量的方法较为合适。

  • 定性预测可以在两大条件满足时进行使用。(1)以往的历史数据可以获得(2)以往的模式会被传递到后面
    ==时间数据类型:==在定性预测的时候我们收集到的时间序列数据往往分为两类:

  • 时间序列数据是定期收集的,例如商店以往每天的销量;

  • 剖面数据(在时间的某一个点上收集得到).
    在这里我们仅仅探讨在规定时间节点观测到的时间序列问题,例如每小时,每天,每周每月等等.
    ==三类时间预测模型:==假设我们需要预测夏天某一个区域下一个小时的用电需求,一个最简单的带有预测变量的模型的形式为:

  • E D = f ( c u r r e n t t e m p e r a t u r e , s t r e n g t h o f e c o n o m y , p o p u l a t i o n , t i m e o f d a y , d a y o f w e e k , e r r o r ) ED = f(current temperature,strength of economy,population,time of day,day of week,error) ED=f(currenttemperature,strengthofeconomy,population,timeofday,dayofweek,error)该定义中关系的定义较为明确,也较易解释,所以我们称此模型为解释模型(explanatory model),虽然这样的定义并不是百分百准确,在预测变量中有很多用电需求无法被解释,所以我们采用error项来表示这样的变动.

  • E D t + 1 = f ( E D t , E D t − 1 , E D t − 2 , . . . , e r r o r ) ED_{t+1} = f(ED_t,ED_{t-1},ED_{t-2},...,error) EDt+1=f(EDt,EDt1,EDt2,...,error),其中 t t t表示当前时间, t + 1 t+1 t+1表示下一时间… 此处下一时刻的预测完全依赖于历史上的单变量的数据,不依赖于其他的变量,同样的,此处我们用 e r r o r error error项来表示随机波动以及相关变量的影响.

  • E D t + 1 = f ( E D t , c u r r e n t t e m p e r a t u r e , t i m e o f d a y , d a y o f w e e k , e r r o r ) ED_{t+1} = f(ED_t,current temperature, time of day, day of week, error) EDt+1=f(EDt,currenttemperature,timeofday,dayofweek,error),此类模型则被称为是动态回归模型,还有很多其他的名称(dynamic regression models, panel data models, longitudinal models, transfer function models, and linear system models).

三类时间预测模型的选择:

  • 解释模型是首选,因为它融入了大量的信息,而不仅仅是需要预测的历史变量的信息.
  • 当系统无法解释时或者即使可以解释但是内在关系却极其复杂较难刻画,同时我们较为关心下一步会发生什么,而不是为什么它会发生,该时刻可以考虑第二种模型或者第三种模型

1、4一些案例研究

案例1 客户是一个生产一次性产品的大公司,例如餐巾纸,一次性盘子等.希望预测每个月的上百个产品的销量,一些产品的时间序列展示了一定的特定模式,带有一定的趋势同时有一些周期性质还有一些什么规律都没有.公司采用的模型有:

  • 过去12个月的数据的均值;
  • 过去6个月数据的均值;
  • 过去12个月的线性回归预测;
  • 过去6个月的线性回归预测;
    预测结果依赖于去年与今年的销量的斜率以及上一个观测值的结果.

案例2 客户是澳大利亚联邦政府,希望预测每年在药品福利计划上的开支,药品福利计划(PBS)会对在澳大利亚贩卖的许多药品提供补贴,所以开支往往由人们购买了什么来决定.在2009年该方面的支出为7billion,后面略有波动,为了能很好的预测出总的支出,有必要对每一类药物产品的月销量进行预测,我们发现几乎每一类的药品销售都有一定的趋势和周期性,虽然有时候会因为同类的竞争药物而出现较大的短时波动.
所以此处我们的模型需要能捕获趋势和周期性,并且需要对突然的因为潜在因素的变化而引起的突变具有较好的鲁棒性.此外,最好还能较好地扩展到时间序列数据较大的情况(大数据).

案例3 大的汽车公司要求我们帮助预测汽车再销售价值,这类公司购入新的交通工具并且将该工具租售三年,然后在卖掉.对于再销售价值的预测能更好的帮助控制利用,同时能更好的制定租售的价格以最大化价值.在该时候,
该类问题在公司往往由一些专家来完成,不幸的是他们看到统计模型对他们造成了威胁,所以不愿意合作,最后公司提供了之前汽车的大量数据以及他们最终的在销售价格.

案例4 我们需要预测主要航线的每周的飞机乘客数量以及不同类的乘客的情况(经济舱,商务舱等),公司提供了过去6年每周的情况.飞机乘客的数量会受到学校假期,主要的体育活动等影响,而且不同的城市不一样,同时体育活动会从A城市转移到B城市,同时历史数据上还有一段数据因为飞行员罢工而出现一段时间没有航班,同时在数据的后半段,航班对不同的舱进行重新分配,经济舱和商务舱等的位置都有变化.

1、5预测任务中的基本步骤

预测任务中的5个基本步骤:

  • 问题定义 :需要业务理解以及对于客户需求的充分理解。
  • 信息收集: 两类信息,(a).统计数据;(b).累积的专业知识.通常较难收集到足够的历史数据,但是同时,越老的数据的价值往往也越小。
  • 探索分析:通过对数据的可视化,是够有较为一致的模态,是否有较强的趋势,是否有周期性的影响,是否存在奇异值,分析的特征与label的关系。
  • 选择模型并且拟合模型:模型的选择往往依赖于历史数据,预测变量与我们特征的关系以及预测的用意,通常我们会比较多个预测模型。
  • 使用并且评估模型。

1、6统计预测的角度

我们预测的变量也是一个随机变量:我们预测的东西往往是未知的,所以我们往往会将其看作是一个随机变量,例如下一个月的总的销量会有很多值,直到下个月我们才会知道.如果预测的是明年该月的销量,则销量可能的空间会更大,则预测将更为不确定.

2、时间序列可视化

数据分析最重要的一步是做EDA(Exploratory Data Analysis),对数据进行探索与分析,而这一步中数据可视化的作用不言而喻,通过合理的可视化技术,我们可以发现我们数据的周期性,随时间变化的规律,以及变量之间的相关性等,方便我们更好的理解数据同时可以辅助我们构建更好的模型.这一章我们会重点探讨对于时间序列的可视化技术.

2、1 ts对象

时间序列的理解之一:时间序列可以认为是一列数字或者数组,其中每一个元素都是在特定时间所记录,包含有在特定时间的信息.
所谓的ts Object是R语言中用来处理时间序列的一个工具包.

2、2 时序绘图(数据初探)

绘图1:全局:先对整个时间序列进行绘制,给自己一个大致的感受(就和数据处理中的pd.head()一样),此处我们需要重点观察如下信息:

  • 时序是否出现断层,中间是否有一段时间没有记录,调查原因
  • 序列是否存在较大的波动,是否存在突变
  • 序列是否存在周期性
  • 序列近期表现出什么趋势

2、3 时序模式(数据模式观测)

时间序列的几大模式:

  • 趋势:明显的趋势是当数据存在长期的的增长或者下降,不仅仅局限于线性的增长或者下降,也可能是周期的上升等。
  • 季节性:时序被周期性的模式影响例如年份,或者每周(例如周末超市消费就会比较高,周中就偏低),季节性或者周期性往往是一种固定的已知的频率。
  • 循环性:循环性的发生往往指数据不以固定的频率展现出上升以及下降的趋势,这些波动往往受到经济的影响,并且经常和商业周期有关,波动的时间往往较长。

2、4 绘图

(1)季节性绘图:因为季节性的数据的周期较为稳定,所以我们可以设定周期,然后在同一张表上进行多个周期的绘制。
(2)散点图:

  • 双变量之间的关系探索:
    在这里插入图片描述
  • 多变量(两两变量之间)的关系探索:当我们变量较多的时候,我们不太可能一一去绘制散点图,效率较为低下,此时我们可以通过成对绘制散点图的形式来进行观测比较,具体的例子如下:
  • 在这里插入图片描述
    (3)Lag图
    Lag图:Lag图显示了对于不同的 k k k值, y t y_t yt y t − k y_{t-k} ytk之间的关系,具体的例子参考如下:
    在这里插入图片描述
    由上图我们可以发现:
    lags4和8的关系是严格正的,在数据上显示了较强的季节性,而lags2和lags6则显示出了较强的negative相关性.

2、5 自相关性

时间序列中的自相关系数数学定义

在时间序列里面存在一些自相关系数,例如, r 1 r_1 r1可以用来评估 y t y_t yt y t − 1 y_{t-1} yt1之间的关系, r 2 r_2 r2可以用来评估 y t y_t yt y t − 2 y_{t-2} yt2之间的关系,其中 r k r_k rk的计算公式如下:
Alt
其中 T T T为时间序列的长度.
例子:
在这里插入图片描述
在上表中,我们发现:
r 4 r_4 r4 相对较大,可能是因为周期为4的原因.
r 2 r_2 r2相对较小,可能是因为周期为4的,而2恰好在峰值之后的中间.
③ 蓝色的虚线表示相关性是否和0严格不同.

季节性和趋势给自相关系数带来的影响

  • 当数据是季节性的(周期性的),自相关系数会在季节性的位置(lag=k,2k,3k,…)获得较大的值;
    如果我们的时间序列的以为 k k k周期的话,那么我们的 r k r_k rk值就会较大.
  • 当数据存在趋势,则对于小的lag(例如lag=1,2)的自相关系数就会变得较大,但是当把lag设置大一点的时候,就会得到缓解.

2、6 白噪音

白噪音:当时间序列没有显示出自相关性时,我们将这种时间序列称之为白噪音
在这里插入图片描述
在这里插入图片描述
白噪音检测:
关于白噪音的检测,我们认为ACF中有95%的spikes在± 2 T \frac{2}{\sqrt{T}} T 2里面的时间序列称之为白噪声,其中 T T T为时间序列的长度.但是如果有一个或者多个的spikes在这两个bounds(蓝色虚线)的外面,或者超过5%的spikes在这些bounds外面,那么这些时间序列可能就不是白噪音.

3、判断预测法

==需求:==当我们的历史数据几乎完全缺失,当有全新的产品上线,当一个竞争对象刚刚进入市场,我们几乎没有什么历史数据,但是我们有需要进行预测的时候,我们无法直接使用传统的统计模型,而此时判断预测发将会成为目前唯一的选择。
判断预测法两大关键因素:
因为严重缺失的历史数据,判断预测法的提升更多的依赖两大关键因素:

  • 重要的行业知识
  • 更多的实时的,最新的信息
    判断预测法三大设定:
  • 没有可获得的数据,统计模型不再有效
  • 可以获得数据,统计模型生效,然后对统计模型在使用判断进行调整
  • 可以获得数据,统计模型和判断预测法同时独立的生成,然后在进行组合。

3、1 判断预测法的局限性

判断预测法的缺陷:

  • 判断预测法是不一致的,它严重依赖于我们的认知,所以较为受限,举例来说,我们的认知会忽略很久之前发生的事情;对事物错误的理解与会严重误导我们的模型。
  • 判断预测法是主观的,存在个人的观点;很多时候也会受到我们个人情感或者周围因素的影响,从而较大的影响我们的判断预测。
  • 锚定anchoring的影响,在预测的时候我们的预测往往会受到熟悉的参考点的影响,比如价格预测的时候,我们往往会选取最近的点作为参考点,因此在预测的时候会给予其更大的权重。锚定可能会导致保守和低估新的和更多的最新信息,从而存在系统性偏差。

3、2 关键原则

因为判断预测法的种种缺陷,需要有一个好的判断预测法,我们往往需要遵循以下的一些原则.
判断预测法的关键原则:

  • 将预测任务设定清晰:尽量使所有人都能明白任务,所有的定义都应该是清晰易于理解的,避免模糊不清的表述,同时需要避免在预测的时候融入情感的因素和不相关的其他因素等.
  • 实施系统的方法:预测的准确率可以通过系统的方法来提高,例如对信息中相关的类别变量进行处理,类似于数据探索寻找最能影响我们目标的变量,并探索关系.
  • 文档和证明:成列记录系统方法下的决策规则和假设.
  • 系统的评估预测:系统地监测预测过程可以识别不可预见的违规行为,用预测结果和真实结果进行对比获得反馈,反馈的评估结果能帮助我们更好的改善预测的准确率等.

3、3 德尔菲法

德尔菲法的假设:由集体做出的预测往往比个体做出的预测更加准确.
德尔菲法的目的:以迭代的方法从一群专家那里构建一个一致性的预测.
德尔菲法的步骤:
① 汇集一群专家;
② 设定预测任务并且分配给每一个专家;
③ 专家返回初始的预测和理由,为了给与反馈这些都会被汇编(compiled)和总结;
④ 反馈到达专家手中,然后专家根据反馈回顾他们的预测,这一步会被迭代进行直到令人满意的共识达成;
⑤ 最终的预测由这些专家的预测所组成.
德尔菲法的讨论和一些建议:
专家和匿名(尽可能令专家独立的不受到影响的做出自己的预测)
① 确定一组能为预测任务做出贡献的专家 ----- 大概5-20个拥有丰富专业知识的专家.
② 参与的专家需要全程匿名,这样专家在预测过程中就会不被政治或者社会压力所影响.
③ 所有专家都有平等的发言权,所有人都对自己的预测负责.

  • 在Delphi中设置预测任务:在设定预测任务之前,从专家那里进行初步的信息收集,或者,当专家提交他们最初的预测和理由后,在提供反馈前,有价值的未被共享的信息可以被识别.
  • 反馈:反馈的信息应当包含预测的汇总统计和定性的证据,数值类的总结和图形的表示可以被用来总结专家的预测. As the feedbackis controlled by the facilitator, there may be scope todirect attention and information from the experts to areas where it is most required. For example, the facilitator may direct the experts’ attention to responses that fall outside the interquartile range, and the qualitative justification for such forecasts.
  • 迭代: 专家提交预测,收到反馈然后审视自己的预测并且再提交,这个过程持续迭代,直到达到某一种满意的程度.(该程度往往指:反馈的变动性降低到令人满意的程度the variability of the responses has decreased to a satisfactory level),在此过程中因为迭代次数的增多会使得专家厌烦,所以一般的迭代次数为3次左右即可.
  • 最终预测: 最终的预测往往是由所有专家的预测的加权得到(每个专家的权重是相等的),记住可能会存在极端情况.
  • 约束和变动:直接使用Delphi方法可能会很耗时,在一个小组会议中,最终的预测可能会在数小时内获得,如果时间太长的话,小组可能会失去兴趣和凝聚力.
  • 主持人:主持人的角色是最重要的,主持人主要负责德尔菲法的设计,管理;同时还得给专家提供反馈并且生成最后的预测.此外,主持人的高效性也很大程度上决定了德尔菲法的成功性.所以必须得有很好的经验.

3、4 类比预测

类比预测,故名思议就是用类似的物品或者事物来对眼前的任务进行预测.
类比预测的例子:
假设我们需要预测在某个国家设计一个较为完善的学校课程表的耗时,假设我们已经收集大量其他国家课程表设计耗时的例子,然后研究发现60%类似的小组都耗费了7-10年的时间,而40%其他的小组甚至都未能完成课程表的设计.此时我们很可能就可以类比猜测该国家的课程表的设计大致需要8-9年左右的时间.而并非随意的猜测.

3、5 情景预测

情景预测: 基于合情合理的场景生成预测.
与Delphi以及类比预测的比较: 和之前的Delphi方法以及类比预测不同,他们经常会生成一些相近的结果,而情景预测发生的概率往往较低, 情景由所有可能发生的因子,因子之间的交互以及需要预测的目标所生成.
情景预测的优点以及缺点:

  • 优点:情景预测的预测结果的范围很广,一些极端的值也可以被预测到,对于这些情况的预测可以更好的帮助我们进行决策同时加深对事物的理解.
  • 缺点:情景预测的结果涵盖范围广,所以自然而然的就会存在较大的偏差.

3、6 新产品预测

新产品:

  • 全新的之前市场上没有的产品
  • 对现有的产品进行价格机制的改变
  • 对新产品进行升级或者变动.
    针对全新的产品,对于销量或者售价的预测我们常常会有如下的三种方法:
    三类处理方法:
  • 销售人员组合:在该方法中国,每个产品的预测由销售人员所组成,而且通常包括销售经理预测他们管理的出口的需求等.销售人员通常和销售员以及产品更加接近,并且拥有购买意向的感觉,他们可以对预测带来十分有价值的经验.不过这违背了预测者与用户独立的假设,往往会对预测带来一定的偏差.
  • 实施意见:和销售人员组合不同,该方法涉及管理层顶部的员工,该类的预测往往由在一个群会议中产生,管理人员从自己在公司中的领域提供信息.该方法最大的缺点就是需要从会议中进行决策,而这违背了独立性的原则.所以需要记录预测过程,同时执行者需要对此负责,这样用来减少群会议中的偏差.
  • 客户意图:客户的意图可以用来预测一个新的产品的需求或者一个现有产品的波动,为了统计用户的需求往往需要设计用户调查问卷,涉及每个产品的喜欢程度等.该方法中我们需要注意用户的购买意向以及用户的购买行为,因为用户往往不会按照他们说的做.
    不管是哪一类的方法,我们都需要注意对预测的过程进行详细的记录以及背后的原因和理由.( it is important to thoroughly document the forecasts made, and the reasoning behind them, in order to be able to evaluate them when data become available.)

3、7 判断调整

使用上面的方法可以对我们很多传统的统计模型进行调整,因为上述的很多方法考虑了很多统计模型所没有的因素,或者历史数据所不能反映的一些因素.
保守使用调整:
判断调整尽量不要尝试去纠正统计模型中缺失的数据系统模式,这已经被证明是无效的,很多时候预测者经常会被带有噪音的序列所影响,所以带来的纠正往往很差.相反地,我们更多地应该认为统计模型是可以更好地捕获这种模式的,而主观的调整往往只会影响准确率. 只有当我们手中的额外信息尚未融入模型,此时利用这些额外信息对模型进行调整往往才是高效的
在这里插入图片描述

  • 黑色的是实际情况,蓝色的是统计模型的预测结果,橘黄色的是技术委员会专家的预测结果,而紫色的是最后调整之后的结果.很明显调整之后的结果相比于两者都取得了更好的结果,关于该例子的具体描述可以参考链接:http://otexts.org/fpp2/judgmental-adjustments.html

4 、线性回归模型

基本假设:此处最基本的假设就是:我们假设我们感兴趣的变量y是和我们的时间序列呈线性关系的
例子:

  • 根据广告支出来预测每个月的销量
  • 根据温度 x 1 x_1 x1,和周中的某一天 x 2 x_2 x2来预测每月的用电量 y y y

4、1 简单的线性回归

基本假设:
在这里插入图片描述
我们认为每一个观测变量 y t y_t yt都是由 β 0 + β 1 x t \beta_0+\beta_1x_t β0+β1xt加上一个随机误差 ϵ t \epsilon_t ϵt所组成, 误差项不是一个错误,而是在潜在线性模型周围的一个扰动.它表示除了 x t x_t xt的所有影响 y t y_t yt的因素.
多元线性回归:
当存在两个或者多个变量时,我们称该模型为多元回归模型,它的数学形式为:
y t y_t yt= β 0 \beta_0 β0+ β 1 x 1 , t \beta_1x_1,t β1x1,t+ β 2 x 2 , t \beta_2x_2,t β2x2,t+…+ β n x 1 n , t \beta_nx_1n,t βnx1n,t+ ϵ t \epsilon_t ϵt
线性模型假设:
注意下面的假设和很多书籍中存在一定的不同,大家以自己的理解为主即可.:
(1).模型对于现实是一种合理的近似,也就是说我们预测的变量(label)和我们的特征之间满足线性的关系.
(2).我们对于误差( ϵ \epsilon ϵ)做如下假设:

  • 它们之间的均值是0,否则预测的结果将会被系统性的biased.
  • 它们之间不能自相关,否则,预测将会是无效的,因为数据中存在更多的信息可以被探索(噪音之间的相关性).
  • 噪音和我们的特征是无关的,否则,应当将更多的信息被引入我们的模型.
    (3).每个特征变量不是随机的.

4、2 最小平方估计

我们拥有较多的观测到的特征,但是每个特征对应的系数却是未知的,而最小平方估计可以很好的帮助我们获得我们需要的系数 β 0 , β 1 , . . . , β k \beta_0,\beta_1,...,\beta_k β0,β1,...,βk而求解的方法就是通过去求解下面的式子:
m i n ∑ t = 1 T ϵ 2 = ∑ t = 1 T ( y t − β 0 − β 1 x 1 , t − β 2 x 2 , t − . . . . . . − β n x n , t ) 2 min\sum_{t=1}^T{\epsilon^2}=\sum_{t=1}^T{(y_t-\beta_0-\beta_1x_1,t-\beta_2x_2,t-......-\beta_nx_n,t)^2} mint=1Tϵ2=t=1T(ytβ0β1x1,tβ2x2,t......βnxn,t)2

4、3 一些有用的预测因子

在使用回归模型处理时序问题的时候存在很多有用的预测因子.
趋势:
时间序列里面最常见的就是趋势,线性模型可以简单的使用 x 1 , t = t x_{1,t} = t x1,t=t作为一个特征,此时
y t = β 0 + β 1 t + ϵ t , t = 1 , 2 , 3..... T y_t = \beta_0+\beta_1t+\epsilon_t,t=1,2,3.....T yt=β0+β1t+ϵt,t=1,2,3.....T
哑变量:
通常我们会假设我们的特征都是数值型的.(下面是类别为2的情况)

  • 传统用途:最常见的例如销量预测中是否为节假日.此时我们可以用0,1来替换该信息;
  • 特殊用途:哑变量还可以用来处理奇异值,例如销量预测中总会出现一些奇异的事情,例如演唱会,运动会等等都会使得某类产品的销量大增,这个时候我们可以用哑变量来表示该类奇异值的情况.而不是直接删除数据.
    如果类别多于2个,采用类似的编码操作即可.
    季节性(周期性)哑变量:
    例如我们希望预测每天的用电需求,因为每天的用电需求和周几的关系很大,而且呈现周期性的特性,此时我们经常会选择用哑变量来表示该类特性,例如一周七天我们会用下面的方式表示.
    在这里插入图片描述
    注意七个类别变量我们只需要6个哑变量,因为第七个变量当其他六个已经确定的时候基本已经定了,剩余一个哑变量带来的影响会被intercept所捕获.
    傅里叶序列:
    季节性哑变量的一个替代方法就是傅里叶序列,尤其是关于长期的周期性,如果 m m m是季节性周期,则第一个少量的傅里叶项将会由下述形式所给出:
    在这里插入图片描述
    如果呈现月的周期性,我们使用11个特征变量,然后我们将会获得和11个哑变量一样的特征.
    使用傅里叶项的优势在于我们经常可以使用更少的特征变量,尤其是当 m m m特别大的时候,例如当 m = 52 m=52 m=52的时候,对于较短的周期性,例如季节性的数据,使用傅里叶变换相比于哑变量的优势并不会十分明显.
    傅里叶变换可以直接使用工具包获得. 含有傅里叶项的回归经常被称作是谐波回归,因为连续的傅里叶项表示前两个傅立叶项的谐波.
    干预变量:
    对于可能对预测结果带来影响的干预进行建模,例如,广告支出,工业行动等等.
    当影响只回持续某一个周期的时候,我们会使用一个穗变量来表示**.穗变量在干预的周期内是1,在其他地方是0**,穗变量在处理奇异值的时候等价于哑变量.
    其他的干预如果有一个立即的持续的影响的话,我们用一个步变量来表示,步变量在干预之前都是0,在干预之后都是1.
    另外一种持久的影响是斜面坡度的影响,次数干预将会使用分段的线性趋势来表示.(具体的会在后面继续讨论)
    交易日:
    一个月内的交易日可能会对当月的交易带来非常大的影响,所以为了表示带来的影响,可以将每个月内交易日的个数包含为一个特征.例子如下:
    在这里插入图片描述

4、4 回归模型的评估

残差:
观测变量 y y y与对应的预测变量 y ˉ \bar{y} yˉ的差,我们称之为残差: e t = y t − y ˉ t e_t = y_t - \bar{y}_t et=ytyˉt,每个残差是相关的观测变量的不可预测的部分.
残差的一些有用的属性:
∑ t = 1 T e t = 0 a n d ∑ t = 1 T x k , t e t = 0 f o r a l l k \sum_{t=1}^T{e_t}=0 and \sum_{t=1}^T{x_k,te_t} = 0 for all k t=1Tet=0andt=1Txk,tet=0forallk
残差直方图:
检测残差是否是正态分布的总是一个比较好的想法.例如下图中2004年的预测我们发现有比较大的偏差,此时可以就需要进一步研究究竟在那一年发生了什么不寻常的事情来帮助我们进行后续的建模.
在这里插入图片描述
残差预测图:
我们希望残差的分布是随机的,没有任何的模式,而这样最简单的方式就是直接采用scatterplot的方式画出散点图.如果绘制的散点图存在某种模式,那么说明存在一些非线性的关系需要进一步进行挖掘.
奇异值和影响点:
对回归模型的预测结果有较大影响的被称作影响点(influential observations),和大多数数据极端不一样的被称作是离群点(outliers).

  • 对于可能是奇异值的处理:①如果有十足的把握判断是奇异值,建议直接删除;②研究奇异值的产生原因并且好好利用它;③如果无法研究原因,则分别记录带有该奇异值的结果和不带有该奇异值的结果,然后进行比较.
  • label为离群点或者影响点给线性回归带来的影响可以参考下图.红色的是去除影响点的,而黑色是没有去除影响点的.
  • 在这里插入图片描述
    拟合良度(Goodness-of-fit):
    我们常常会使用 R 2 R^2 R2来判断模型的拟合良度.
    在这里插入图片描述
    如果模型的预测结果和真实结果很接近,那么 R 2 R^2 R2就比较接近于1,另一方面,如果预测结果和真是结果是无关的,则 R 2 R^2 R2往往会趋于0.在所有的例子中, R 2 R^2 R2介于0和1之间.
    还有一种关于 R 2 R^2 R2数学形式如下.
    在这里插入图片描述
    回归的标准误:
    除了 R 2 R^2 R2可以较好的对模型的拟合效果进行评估之外,另外一种评估模型拟合好坏的方法就是残差的标准差.经常也被称作"residual standard error",可以通过下面的式子进行计算得到:
    在这里插入图片描述
    此处除以 T − k − 1 T-k-1 Tk1是为了解释计算残差时的估计参数的个数.( k + 1 k+1 k+1指的是 k + 1 k+1 k+1)
    参数 (the intercept and a coefficient for each predictor variable) ))
    伪回归(Spurious regression)
    时间序列数据经常是不稳定的,也就是说不会再某一个常数值附近上下波动,具体的处理该类数据的方法会在后续讨论.

4、5 变量选择

Naive的方法

  • 绘制每一个特征与label之间的图,通过观察二者之间有无明确的关系来判定.(很难直接通过散点图等形式直接观测变量之间的潜在关系)
  • 对所有的特征变量做多元线性回归,然后将 p p p值大于0.05的全部丢弃.(统计重要性并不意味着预测值的准确性,当两个或者多个预测变量存在的时候 p p p值可能会带来误导)
    特征选择的指标
    上述的方法比较适合特征维度较低,同时特征与label之间的关系较为明显的时候,却不太适用于特征维度较高的时候,在实践中,我们也很少会选择这么做.此处我们介绍一些现在大家用的较多的指标和方法.
  • 调整的 R 2 R^2 R2
    在这里插入图片描述
  • 交叉验证:交叉验证的思路很简单,就不再叙述,最直观的理解可以参考下图.因为交叉验证可以近似我们的预测指标,所以在很多比赛中,我们往往通过线下的交叉验证的结果来近似线上的成绩.因此交叉验证也成为了很多比赛选手最常用的指标之一.
  • 在这里插入图片描述
  • Akaike信息准则(Akaike’s Information Criterion): 也就是我们常说的AIC指标, A I C = T l o g ( S S E T ) + 2 ( k + 2 ) AIC =Tlog(\frac{SSE}{T}) + 2(k+2) AIC=Tlog(TSSE)+2(k+2), 同样的, T T T是观测样本的个数, k k k是特征维度的个数. k + 2 k+2 k+2是因为一共有 k k k个系数加上一个intercept, b b b,再加上一个噪声项.我们防线当样本 T T T足够大的时候,最小化AIC本等价于最小化CV值;
  • 纠正的AIC: A I C c = A I C + 2 ( k + 2 ) ( k + 3 ) T − k − 3 AIC_c = AIC +\frac{2(k+2)(k+3)}{T-k-3} AICc=AIC+Tk32(k+2)(k+3),上面的 A I C AIC AIC在当样本个数较少的时候,往往会为了最小化前一项而使得我们的特征维度偏高(参数个数偏多),为了对此进行纠正,我们决定加大对于参数个数的惩罚,所以就有了我们的 A I C c AIC_c AICc;
  • 施瓦茨的贝叶斯信息准则(Schwarz’s Bayesian Information Criterion): B I C = T l o g ( S S E T ) + ( k + 2 ) l o g ( T ) BIC =Tlog(\frac{SSE}{T}) +(k+2)log(T) BIC=Tlog(TSSE)+(k+2)log(T),和 A I C AIC AIC一样,最小化 B I C BIC BIC也是为了给出最好的模型, B I C BIC BIC选出来的模型和 A I C AIC AIC很像,但是我们也看到了, B I C BIC BIC对于模型的系数的个数惩罚相对较大,所以最终 B I C BIC BIC所选出的模型的系数的个数往往也较少.
    特征选择的模型构建方法
    **最佳子集回归:**在资源许可的情况下,所有潜在的模型都应当被拟合回归,并且最好的模型应该基于上述讨论的指标而选出,我们知道,只要当我们的观测样本个数 T T T足够大,最终我们选出的模型很有可能是同一个.
    逐步回归: 当我们的特征维度足够大的时候,是不太可能拟合所有的模型再做评估的,此时我们往往会采用两种方法,前向逐步回归和后向逐步回归

4、6 回归预测

事前事后预测

  • 事前预测:事前预测指的是仅仅只使用预测变量之前的信息,例如我们要预测2017.12月份的销量,那么我们就只能使用2017.11月份及之前的数据;
  • 事后预测: 事后预测指那些会使用到未来信息的预测,例如我要预测12月份的销量,我在预测的时候就使用到了12月份以及之后的天气,超市产品的进货信息等这些未来信息,注意事后预测一般指我们可以获得未来的特征变量,而非未来的label.
  • 事情预测和事后预测可以帮助我们分离预测不确定性的来源.这可以帮助我们理解我们的预测差的原因是来源于模型还是来源于我们的特征.
    基于场景的预测
    在该设定中,预测员假设所有感兴趣的特征可以预见,例如,美国政府想要预测未来的消费量,在预测的时候我们已经知道人们的收入和就业的指数近期呈现常数增长(该增长长期不变),这样我们在模型预测的时候就已经知道了我们的未来特征without uncertainty.
    构建预测回归模型
    在这里插入图片描述
    回归模型的最大优势在于它可以捕获特征变量和我们的label之间的关系.而最大的挑战则在于为了进行事前预测,模型需要未来特征,从我们的模型中我们就可以发现,预测 t t t时刻的 y y y我们需要知道 t t t时刻的 x x x,如果是基于场景的预测,那么该问题还相对简单很多,所以我们需要对该公式进行变形.
    在这里插入图片描述
    经过变形之后,我们在预测 t + h t+h t+h时的label时,我们仅仅只需要知道在 t t t时刻的特征即可. 增加的误差变量不仅仅使得我们的模型更加易于操作,同时还使得我们的模型更加易于理解.
    预测区间
    预测区间的计算会在下一小节进行讨论,此处我们仅仅给出预测区间的简单公式以及它的直观的解释,假设我们使用简单的回归 y ˉ = β 0 + β 1 x \bar{y} = \beta_0 + \beta_1 x yˉ=β0+β1x模型进行预测,并且回归模型的误差是正太分布的,那么我们的95%的预测区间可以通过如下公式计算得到:
    在这里插入图片描述
    其中 T T T是我们的观测样本个数, x ˉ \bar{x} xˉ是我们的观测样本特征的均值, s x s_x sx x x x的标准差.
    我们发现: 当我们的特征值 x x x与我们的均值 x ˉ \bar{x} xˉ相距越远的时候,我们的预测区间也会越大.

4、7 矩阵形式

这一节涉及到使用最小平方算法求解线性模型的一些数学知识,因为每一本介绍机器学习的书籍在线性模型模块都会有所介绍,所以此处我们省略具体的数学推导,仅仅给出重要的结论.
多元线性回归的向量形式
在这里插入图片描述
最小平方估计
在这里插入图片描述
拟合值与交叉验证
在这里插入图片描述
在这里插入图片描述

4、8 非线性回归

因为很多时候变量之间的关系往往是非线性的,所以我们需要进行非线性建模,本节在之前线性模型的基础之上介绍几种简单的将线性模型转化为非线性模型的技巧.
几种线性回归转非线性回归的技巧

  • log-log函数形式:将x和y都进行log处理,举例如:
    在这里插入图片描述
  • linear-log形式:将x进行log处理.
  • 分段线性转化:例如 x = ( x − c ) + x=(x-c)_+ x=(xc)+, x &lt; c x &lt; c x<c的全部转为0,大于 c c c的转化为 x − c x-c xc.
    非线性趋势预测
    在这里插入图片描述
    下图是三种不同转换的对比.
    在这里插入图片描述
    我们发现label的log转换和我们的简单线性拟合类似,但是分段线性转换的效果却好了很多.

4、9 相关性,因果性和预测

这一节主要介绍几个易错的概念,相关性,因果性以及预测.
相关性与因果性

  • 相关性:如果一个特征变量 x x x能对我们预测label带来非常大的帮助,那么我们往往称该特征变量与我们的label有着较强的相关性.
  • 因果性:如果有B发生了,那么100%是 A A A造成的,此时我们称之为因果性.

相关性,因果性与预测的关系可以用下面的语句来阐述:相关性能为我们的预测带来非常大的帮助,即使这二者不存在因果关系; 当然,如果能确定某些因果关系,那么我们就会有更大的希望构建一个好的模型.
混淆特征变量
混淆特征变量:如果两个特征变量给label带来的影响是无法分开的时候,我们称之为混淆变量. 平时我们一般将两个线性相关系数较高的变量称之为一对混淆变量.
混淆特征变量在我们做模型预测的时候带来的影响往往不是很大,很多时候我们仅仅只需要将两个全部放入模型即可.但是如果我们需要进行场景预测的时候,我们就需要分析特征变量之间的关系,另外,我们希望统计混淆变量在历史数据上对label带来的影响时,这也会成为一大问题.
共线性和预测
共线性:如果两个特征变量之间的相关性近似为1或者-1,我们认为这两个变量具有共线性.较为典型的例子就是dummy variable trap,例如我们有季节性的哑变量 d 1 , d 2 , d 3 , d 4 d_1,d_2,d_3,d_4 d1,d2,d3,d4并且 d 1 + d 2 + d 3 + d 4 = 1 d_1+d_2+d_3+d_4 = 1 d1+d2+d3+d4=1,那么我们为1的那一列就和我们这四个变量的和是共线的.
共线性的变量对于线性模型的预测会带来非常大的损害,尤其是回归系数的计算将会变得非常困难.具体的细节大家可以搜索线性回归方面的论文.

5 、时间序列分解

时间序列数据可以呈现大量的形式,将时间序列数据分成诸多模块对于时间序列问题的分析十分有帮助.
在第二章中,我们将时间序列分割成趋势,季节性,和周期性,平时我们经常将趋势和周期组合成"trend-cycle"成分,所以我们也可以将时间序列分割为三大块:"trend-cycle"模块,季节性模块和剩余组件(包含时间序列中的任何其他内容).
这一章,我们考虑从时间序列中提取这些成份的一些方法,通常这是为了帮助我们更好的理解时间序列,但是它也可以被用来提升我们的预测准确率.

5、1 时间序列成份

这一节主要介绍两种将时间成份的建模形式,加法模式和乘法模式.
两种时序模型
假设 y t y_t yt是在时间段 t t t处的数据, S t S_t St为在时间段 t t t处的季节性成份, T t T_t Tt为趋势周期成份, R t R_t Rt为在时间段 t t t处的剩余成份.那么

  • 加法模型: y t = S t + T t + R t y_t = S_t + T_t + R_t yt=St+Tt+Rt,如果季节性波动是在周期趋势上下进行,那么加法模型是一个不错的选择.
  • 乘法模型: y t = S t ∗ T t ∗ R t y_t = S_t * T_t * R_t yt=StTtRt.如果波动和时间序列的level成比例相关,那么乘法模型会比较好.
    加法模型和乘法模型的联系: y t = S t ∗ T t ∗ R t y_t = S_t * T_t * R_t yt=StTtRt = l o g y t = l o g S t + l o g T t + l o g R t logy_t = logS_t + logT_t + logR_t logyt=logSt+logTt+logRt
    例子
    在这里插入图片描述
    上图中 T t T_t Tt为趋势周期成份, y t y_t yt为原始数据成份,趋势周期展示了时间序列的整体运动(忽略季节性和任何小的波动).我们将加法模型的成份展开得到下图:
    在这里插入图片描述
    经季节性因素调整后的数据
  • 定义:
    经季节性因素调整后的数据: 如果我们将原始数据中的季节性因素移除,那么最终剩下的数据就被称作是季节性调整后的数据.对于加法模型,季节性调整后的数据可以通过 y t − S t y_t - S_t ytSt得到,对于乘法模型,可以通过 y t / S t y_t / S_t yt/St得到.
  • 使用场景
    如果季节性带来的波动不是我们感兴趣的,那么就可以对经季节性因素调整后的数据进行分析,例如,我们对于每个月的失业率非常感兴趣,但是因为每年的毕业季就会出现大量的失业,这种季节性带来的影响往往会阻碍我们发觉真正的潜在带来失业的原因,所以使用经季节性因素调整后的数据往往会更好.

5、2 移动平均值

在经典的分解模型中,第一步往往是使用移动平均值来估计趋势和周期(trend-cycle),所以这一节我们介绍最经典的移动平均值.
移动平均平滑
m-MA:一个阶数为 m m m的移动平均可以被表示为, T ˉ t = 1 m Σ j = − k k y t + j \bar{T}_t = \frac{1}{m} \Sigma_{j=-k}^{k} y_{t+j} Tˉt=m1Σj=kkyt+j, 其中 m = 2 k + 1 m=2k+1 m=2k+1, 也就是说我们希望利用均值来删除数据的随机扰动,使得我们的趋势周期(trend-cycle)能够更加平滑.当 m m m越大,我们的移动均值就平滑.

  • 使用季节性的数据估计趋势周期
    在这里插入图片描述
    注意:移动均值法没有在 t t t趋近于时间序列末尾的时候还给出估计 T ˉ t \bar{T}_t Tˉt,以你为红色的线没有延伸到边角.
    移动平均的移动平均
  • 移动平均的移动平均可以看做是二阶信息.
  • 中心移动平均线,当一个2-MA在一个偶数阶移动均值(例如4)之后的平均,我们就称之为:阶为4的中心移动平均. 可以表示为:
    在这里插入图片描述
    使用季节性的数据来估计趋势周期
    使用上面 2 ∗ 4 − M A 2*4-MA 24MA的图,我们有:
    在这里插入图片描述
    我们发现,当使用季度性的数据时,每年的每个季度会给第一个最后一个数据相同的权重,因为他们在一年中是连续的(今年的季末和明年的季初),所以最终结果带来的影响可以认为是没有季节性的波动存在的.
    加权移动平均
    在这里插入图片描述
    Σ j = − k k a j = 1 \Sigma_{j=-k}^k a_j = 1 Σj=kkaj=1 同时 a j = a − j a_j = a_{-j} aj=aj,
    **优势:**主要的优势在于加权移动平均可以获得一个平滑的趋势周期估计.
    常用的一些权重:
    在这里插入图片描述

5、3 经典的分解

时间序列的分解是非常经典的一种思路,包括现在的Facebook的Prophet方法等,都是采用分解的形式建模,可解释性强,调参也方便.这一节我们假设季节性的成份年年都是一个常数,分解形式.
加法分解
步骤1:如果 m m m是一个偶数,那么我们就使用 2 ∗ m − M A 2*m-MA 2mMA来计算趋势周期成份 T ˉ t \bar{T}_t Tˉt,如果 m m m是一个奇数,那么我们就使用 m − M A m-MA mMA来计算趋势周期成份 T ˉ t \bar{T}_t Tˉt.
步骤2:计算去趋势序列 y t − T ˉ t y_t - \bar{T}_t ytTˉt.
步骤3:为了估计每个季节的季节成份,我们直接对去趋势的数据求均值,例如,计算三月的季节成份,我们就对所有历史上去趋势的三月的数据求均值.季节性的成份可以通过将数据每一年的的值链接起来获得.这样我们就可以得到 S ˉ t \bar{S}_t Sˉt.
步骤4:我们将数据减去趋势周期值和季节值得到我们的剩余部分, R ˉ t = y t − T ˉ t − S ˉ t \bar{R}_t = y_t - \bar{T}_t - \bar{S}_t Rˉt=ytTˉtSˉt.
乘法分解
乘法分解和加法分解较大的区别就是将减替换为除即可.
在这里插入图片描述
经典分解评论
虽然经典的分解方法还常常被使用,但是它却存在非常多的缺点。

  • 趋势周期的估计在一些地方无法估计,例如时间序列的开始和时间序列的结尾处都无法计算,所以相应的,这些点的剩余成份和季节性成份都无法计算.
  • 趋势周的估计很容易太过平滑.
  • 经典的分解假设季节性的成份年年会重复,这对于很多长的时间序列并不是一个非常好的假设.

5、4 X11分解

上一节介绍的经典分解模型非常简单易懂,同时也有很多缺点,针对这些缺点,这一节我们介绍X11算法,X11算法再很多层面都解决了上述经典分解算法出现的问题.
X11 分解是基于经典的分解思路,但是却包含了更多的额外步骤和特征,在X11算法中,趋势周期估计在样本的开始和结尾都可以得到,季节性的成份也可以是随着时间缓慢变化的,此外X11还可以解决交易日的波动,节假日的影响以及一些其他因素的影响.
在这里插入图片描述
1、相比于STL以及传统分解的方法,X11趋势周期部分很好的抓住了数据在2009年的突然下降的情况.
2、在2009年末不同寻常的样本点在剩余成份也越加清晰.

5、5 STL分解

STL(Seasonal and Trend decomposition using Loess)是一个分解时间序列的多功能并且鲁棒的方法,相比于SEATS和X11分解方法,STL方法拥有如下的优势和缺点:
优点 :

  • 不像SEATS和X11方法,STL可以处理任意类型的季节性性,不仅仅是月和季度的数据;
  • 季节性的成份可以随时间变化,变化率也可以被用户所控制;
  • 趋势周期的平滑性可以被用户所控制;
  • 对奇异值鲁棒(i.e. 用户可以指定一个鲁棒的分解),因此偶尔的不寻常的样本点不会影响趋势周期和季节性的成份,但是还是会影响剩余成份.
    缺点:
  • 无法自动处理交易日和日历波动;
  • 仅提供对于加法分解的形式(虽然可以通过对数据进行log处理来获取乘法分解)
  • 当使用STL时,两个需要被选择,一个是趋势周期窗口,另外一个是季节性窗口,这两个窗口控制了趋势周几和季节性乘法的变化快慢.(窗口越小,变化越快).

原文链接:
https://mp.weixin.qq.com/s/ICbZK8BNWDr6Oqr_Vf_RYw
https://mp.weixin.qq.com/s/XAiTHei67BCc3OIguSFVnw
https://mp.weixin.qq.com/s/ub3M8GWUt0sRtAIBSdrSxw
https://mp.weixin.qq.com/s/CPMybO8n62dqVMdpBdh8wQ
https://mp.weixin.qq.com/s/AEZFJynaE214v9BH_-ZgoQ

  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值