【数模】时间序列分析
数学建模:介绍时间序列分析相关,主要介绍指数平滑模型和ARIMA模型,并结合spss软件处理具体例子
- 时间序列也称动态序列,是指将某种现象的指标数值按照时间顺序排列而成的数值序列。
- 时间序列分析大致可分成三大部分,分别是描述过去、分析规律和预测未来。本讲将主要介绍时间序列分析中“预测未来”常用的三种模型,并将结合Spss软件对时间序列数据进行建模:
- 季节分解(时间序列分解):要求时间单位小于年(如月份或季度)
- 指数平滑方法
- ARIMA模型
一、时间序列的基本概念
1.1 时间序列数据
- 时间序列数据:对同一对象在不同时间连续观察所取得的数据。
- 例①:从出生到现在,你的体重的数据(每年生日称一次)。
- 例②:中国历年来GDP的数据。
- 例③:在某地方每隔一小时测得的温度数据。
- 例①和③是时点时间序列;例②是时期时间序列
1.2 时间序列的组成要素
- ① 时间要素:年、季度、月、周、日、小时、分钟、秒
- ② 数值要素
1.3 时间序列的分类
- 时间序列根据时间和数值性质的不同,可以分为时期时间序列和时点时间序列。
- ① 时期序列中,数值要素反映现象在一定时期内发展的结果;
- ② 时点序列中,数值要素反映现象在一定时点上的瞬间水平。
- 时期序列可加,时点序列不可加。
- 时期序列中的观测值反映现象在一段时期内发展过程的总量,不同时期的观测值可以相加,相加结果表明现象在更长一段时间内的活动总量; 而时点序列中的观测值反映现象在某一瞬间上所达到的水平,不同时期的观测值不能相加,相加结果没有实际意义。
- 灰色预测模型里面有一个累加的过程
二、 时间序列分解
- 由于时间序列是某个指标数值长期变化的数值表现,故可从其规律性切入分析。
2.1 时间序列的数值变化规律
- 一般情况下,时间序列的数值变化规律有以下四种:
- ① 长期变动趋势
- ② 季节变动规律
- ③ 周期变动规律
- ④ 不规则变动(随机扰动项)
① 长期趋势:T
- 长期趋势(Secular trend,T)指的是统计指标在相当长的一段时间内,受到长期趋势影响因素的影响,表现出持续上升或持续下降的趋势,通常用字母T表示。
- 例如,随着国家经济的发展,人均收入将逐渐提升;随着医学水平的提高,新生儿死亡率在不断下降。
② 季节趋势:S
- 季节趋势(Seasonal Variation,S)是指由于季节的转变使得指标数值发生周期性变动。这里的季节是广义的,一般以月、季、周为时间单位,不能以年作单位。
- 例如:雪糕和棉衣的销量都会随着季节气温的变化而周期变化;每年的长假(五一、十一、春节)都会引起出行人数的大量增加。
- 百度指数
③ 循环变动:C
- 循环变动(Cyclical Variation,C)与季节变动的周期不同,循环变动通常以若干年为周期,在曲线图上表现为波浪式的周期变动。这种周期变动的特征表现为增加和减少交替出现,但是并不具严格规则的周期性连续变动。(用的很少)
- 最典型的周期案例就是市场经济的商业周期和的整个国家的经济周期。
④ 不规则变动:I
- 不规则变动(Irregular Variation,I)是由某些随机因素导致的数值变化,这些因素的作用是不可预知和没有规律性的,可以视为由于众多偶然因素对时间序列造成的影响(在回归中又被称为扰动项)。
- 称作白噪声
2.2 叠加模型和乘积模型
-
一个时间序列往往是以上四类变化形式的叠加:有时这些变动会同时出现在一个时间序列里面,有时也可能只出现一种或几种,这是由引起各种变动的影响因素决定的
-
四种变动与指标数值最终变动的关系可能是叠加关系,也可能是乘积关系
- ① 如果四种变动之间是相互独立的关系,那么叠加模型可以表示为:
Y= T + S + C + I
- ② 如果四种变动之间存在相互影响关系,那么应该使用乘积模型:
Y= T × S × C × I
- 符号说明:
- Y:指标数值的最终变动
- T:长期趋势变动
- S:季节变动
- C:循环变动
- I:不规则变动
- 注意:
- ① 数据具有年内的周期性时才能使用时间序列分解,例如数据是月份数据(周期为12)、季度数据(周期为4) ,如果是年份数据则不行。
- ② 在具体的时间序列图上,如果随着时间的推移,序列的季节波动变得越来越大,则反映各种变动之间的关系发生变化,建议使用乘积模型;反之,如果时间序列图的波动保持恒定,则可以直接使用叠加模型;当然,如果不存在季节波动,则两种分解均可以。
- ① 如果四种变动之间是相互独立的关系,那么叠加模型可以表示为:
-
举例判断适用的模型:
- ① 随着时间变化,搜索美赛数据的季节波动越来越大,那么使用乘积模型会更精确。
- ② 随着时间变化,销售数据的季节波动越来越大,那么使用乘积模型会更精确。
- ③ 销量有向上的趋势,且第二季度的销量明显高于其他季度,因此数据表现出很强的季节性。随着时间变化,销量数据的季节波动变化不大,因此可使用加法分解模型。
2.3 Spss处理时间序列分解
2.3.1 数据预处理:检查数据是否完整
-
Spss处理时间序列中的缺失值
- 缺失值发生在时间序列的开头或者尾部,可采用直接删除的方法;
- 缺失值发生在序列的中间位置,则不能删除(删除后原有的时间序列会错位),可采用替换缺失值的方法。
-
Spss替换缺失值
- Excel中的数据条功能
- Excel数据导入Spss(详情参考 相关系数章节 )
- 替换缺失值的五种方法
- 替换后
2.3.2 Spss软件定义时间变量
- 要提前告诉Spss软件这个时间的规律是什么。
- 如若一开始数据就是如连续年份等有规则的时间顺序,其实也可以不用定义。但建议都定义下,是好习惯,且可以避免很多风险。
- 结果
2.3.3 时间序列图(时序图)
- Spss操作
- 图表分析解释:
销量有向上的趋势,且第二季度的销量明显高于其他季度,因此数据表现出很强的季节性。随着时间变化,销量数据的季节波动变化不大,因此可使用加法分解模型。
2.3.4 季节性分解
- Spss分解模型操作
移动平均值权重需要根据周期的奇偶性选择(一般都是选偶数的“端点按0.5加权”,因为周期常为一年12月或一季度4月)
- 图表解释
加法季节因子的解释:
乘法季节因子的解释: - 画出分解后的时序图
2.4 时间序列分析总结
- 时间序列分解的具体步骤
-
作时间序列图;
-
判断时间序列包含的变动成分;
-
时间序列分解(有周期性且包含长期趋势、季节变动或循环变动);
-
建立时间序列分析模型;
- 专家建模器:
- Spss处理:提供时间序列,Spss即可选择合适的拟合模型(指数平滑模型或ARIMA模型),并可识别指定的数据中的异常值。
- 专家建模器:
-
预测未来的指标数值。
-
三、指数平滑模型
- 指数平滑模型分类
3.1 Simple模型
-
理论:
-
Spss实际运用:Spss的专家建模如果选择了Simple模型用来估计,那么软件会自动选取一个适合的平滑系数使得预测误差最小。
-
注意:当预测出的结果值都一样并非是Simple模型出错,是其原理公式使然(只能预测一期的)
3.2 线性趋势模型(linear trend)
- 理论:
- 布朗(Brown)线性趋势模型:特殊的霍特线性趋势模型
- 假定𝛼 = 𝛽,即认为水平平滑参数和趋势平滑参数相等。(是Holt线性趋势模型的特例)
3.3 阻尼趋势模型(Damped trend)
- 理论:
- 适用条件:线性趋势逐渐减弱且不含季节成分
- 与之类似的ARIMA模型:ARIMA(1,1,2)
- 经验表明,Holt的线性趋势模型倾向于对未来预测值过高,特别是对于长期预测。Gardner 和 McKenzie (1985)在霍特的模型基础上引入了一种阻尼效应,用来缓解较高的线性趋势。
- 霍特趋势和阻尼趋势预测
3.4 简单季节性(Simple seasonal)
- 适用条件:含有稳定的季节成分、不含趋势
- 与之类似的ARIMA模型:SARIMA(0,1,1)×(0,1,1)s
3.5 温特加法模型(Winters’ additive)
- 适用条件:含有线性趋势和稳定的季节成分
- 与之类似的ARIMA模型:SARIMA(0,1,0)×(0,1,1)s
3.6 温特乘法模型(Winters’ multiplicative)
- 适用条件:含有线性趋势和不稳定的季节成分
- 与之类似的ARIMA模型:不存在
四、ARIMA模型
4.1 一元时间序列分析的模型
- 了解即可(直接参考11节P36-63课件),重在运用
4.1.1平稳时间序列和白噪声序列
- 协方差平稳/弱平稳:
- 严格平稳
- 注:严格平稳要求太高,因此在时间序列中提到的平稳没有特殊说明默认为弱平稳。
- 白噪声序列:平稳时间序列的特例
4.1.2 MA(q)模型(moving average)
q阶移动平均过程(MA(q)模型)
- MA模型和AR模型的关系
- 可以将1阶移动平均模型转换为无穷阶的自回归模型,这一性质称为移动平均模型的可逆性;类似的,在某些条件下(可逆性条件)也可以将MA(q)模型也转换为无穷阶的自回归过程。
- 一般地,任何经济变量的时间序列都可以自回归过程AR模型来描述。但在模型分析的实践中,为简化估计参数的工作量,我们当然希望模型当中的参数尽可能地少,于是便有了引进移动平均过程MA(q)的必要。
五、运用实例
5.1 Spss时间序列建模的思路
(以下仅是思考过程,非写于论文中)
- 处理数据的缺失值问题、生成时间变量并画出时间序列图;
- 一般不会出现缺失值,故常仅生成时间变量后画出时间序列图即可。
- 若有缺失值,出现前后可直接删除,出现中间则需通过以上5个方法补缺失值。
- 数据是否为季度数据或者月份数据(至少有两个完整的周期,即两年),如果是的话则要观察图形中是否存在季节性波动。
- 若存在季节性波动,则考虑分解(加法分解/乘法分解)
- 根据时间序列图大致判断数据是否为平稳序列(即数据围绕着均值上下波动,无趋势和季节性)
- 平稳:ARMA模型
- 明显上升/下降趋势:ARIAM模型
- 打开Spss,分析→时间序列预测→创建传统模型,看看Spss专家建模器得出的最优的模型类型。
- 如果最后的结果是 ARIMA(p,0,q) 模型(“0”即是用ARMA模型),论文就可以画出时间序列的样本ACF和PACF图形进行分析;如果得到的是 ARIMA(p,1,q) 模型,可以先对数据进行1阶差分后再用ACF和PACF图形分析;如果得到的结果与季节性相关,可以考虑使用时间序列分解。
5.2 示例1:销量数据预测
题目
- 根据某产品2014‐2018年季度销售数据,预测未来两年的销售数据。
Spss答题
-
(1)Excel导入数据
-
(2)定义时间日期
-
(3)生成时间序列图
专家建模器:SPSS给出最优模型,心里有个底要采用什么建模器分析- 专家建模器的工作原理:专家建模器会自动查找每个相依序列的最佳拟合模型.如果指定了自变量(预测)变量,则专家建模器为ARIMA模型中的内容选择那些与该相依序列具有统计显著关系的模型。适当时,使用差分和/或平方根或自然对数转换对模型变量进行转换。缺省情况下,专家建模器既考虑指数平滑法模型也考虑ARIMA 模型.但是,您可以将专家建模器限制为仅搜索ARIMA模型或仅搜索指数平滑法模型。还可以指定自动检测离群值.
- 专家建模器的工作原理:专家建模器会自动查找每个相依序列的最佳拟合模型.如果指定了自变量(预测)变量,则专家建模器为ARIMA模型中的内容选择那些与该相依序列具有统计显著关系的模型。适当时,使用差分和/或平方根或自然对数转换对模型变量进行转换。缺省情况下,专家建模器既考虑指数平滑法模型也考虑ARIMA 模型.但是,您可以将专家建模器限制为仅搜索ARIMA模型或仅搜索指数平滑法模型。还可以指定自动检测离群值.
-
(4)Spss时间序列建模器
- 变量选项:默认在所有的指数平滑模型和ARIMA模型中选择合适的模型。
- 变量→条件→离群值:自动检测异常值的方法(一般不会出现异常值,若出现,Spss会对发现的异常值使用序列平均值来替代)
- 统计选项:
- 注①一般比较两个模型的好坏(评价指标),可以使用平稳的R方(文档上翻译成了固定的R方)或者标准化BIC(BIC准则),这两个指标既考虑了拟合的好坏,又考虑了模型的复杂度;
- ②R方可用来反映线性模型拟合的好坏,越接近于1拟合的越准确。
- 图选项
- 注①预测值和拟合值是不相同的,预测值是将样本外年份的数据带入模型计算得到的,而拟合值是将样本的年份重新带入模型计算得到的。
- ②这里保留残差的ACF和PACF图形可以帮助我们判断残差是否为白噪声,即该时间序列是否能被模型识别完全。
- 保存选项
- 选项(想预测到哪年,就到哪年)
-
(5)参数估计值表格(对温特加法模型的解释)
-
(6)白噪声进行残差检验(看模型估计的效果如何)
- 从残差的ACF和PACF图形中可以看出,所有滞后阶数的自相关系数和偏自相关系数均和0没有显著的差异;
- 另外从下表可以看出,对残差进行Q检验得到的p值为0.741,即我们无法拒绝原假设,认为残差就是白噪声序列,因此温特加法模型能够很好的识别本例中的销量数据。
-
(7)预测的结果和效果图
- 从图中可以看出,真实数据和拟合数据的时序图几乎重合,这说明温特加法模型对原数据拟合的效果很好;
- 另外,预测的后两年的数据既保留了原始序列的季节效应,也同时具有向上的线性趋势,这说明温特加法模型能很好的对该产品的销量数据进行预测。
总结
- 由于本数据不存在缺失值,并且是季度数据,故可作出其时间序列图。从图中看出销量数据存在向上的趋势,且存在很明显的季节性波动,即可考虑采用时间序列分解。又由于该波动是平稳的波动,故可以采用加法的时间序列分解
- (接着对加法时间序列分解结果进行分析后)我们利用SPSS软件的专家建模器(可解释下专家建模器的工作原理)会为选择一个最为合适的模型,本题中所选的模型为 温特加法模型。(接着对温特加法模型进行解释)
- (看模型估计的效果怎么样)对模型进行白噪声残差检验(可通过图形,也可通过Q检验)
- (接下来进行预测)我们考虑95%的置信水平,即可表述在95%的置信水平下可得预测值,有95%的可能性落在119和126之间(若只预测一个值的话,即为122)
- (若想要在图中显示置信区间,可按照如下操作,即可显示真实值、预测值、拟合值及预测值对应的置信水平)
(有需要才实现右图,图便利也可直接使用左图)
- (汇报一下预测结果的好坏:论文中提平稳的R方、R方集标准化BIC这几个指标是多少)
- (若想要在图中显示置信区间,可按照如下操作,即可显示真实值、预测值、拟合值及预测值对应的置信水平)
5.3 示例2:人口数据预测
-
【题目】
-
【Spss答题】
-
(1)Excel引入数据后,定义时间(好习惯)
-
(2)绘制时间序列图
若想给图生成标记点(时间点若太多就不推荐添加标记点,太密不好看) -
(3)看一下Spss软件最后用于预测的最优模型是什么(本题为二阶的ARIMA模型)
-
(4)预测结果
由于该模型需要前两期数据,故最前两期的数据是没有预测结果的 -
(5)残差的白噪声检验
-
本题中:平稳的R方为0,Q检验统计量也没有显示。(可能是本题模型比较特殊引起的)
-
但R方为0.999,这说明估计的效果特别好,所以还是能用该模型去预测。
-
ACF和PACF图形则显示残差为白噪声。
-
-
(6)预测效果图形(双击图形的不同位置可对图形进行修改)
-
(7)实际人口不会一直趋于一个上升的状态,故可见该模型结果并不符合,由此我们考虑添加其他的特殊参数限制,用于控制模型的预测效果。
-
5.4 示例3:上证指数预测
- 该示例强调注意异常值
【题目】
- 给定2016/01/04至2019/08/07的上证指数,请对其进行建模,并预测接下来一段时间的指数走势。(注意:股票在节假日不交易。)
【Spss答题】
-
(1)引入Excel数据后,由于本题中数据周末无数据,定义日期也没合适的处理方式,直接选用天即可
-
(2)查看专家建模的结果:简单指数平滑模型
-
(3)分析
- ①R方很大说明拟合的很不错,但是平稳R方很小,且最关键的Q检验拒绝了原假设(认为残差不是白噪声,即模型没有完全识别出数据),说明模型有待改进。
- ①R方很大说明拟合的很不错,但是平稳R方很小,且最关键的Q检验拒绝了原假设(认为残差不是白噪声,即模型没有完全识别出数据),说明模型有待改进。
-
②观察横坐标,Spss在建模时已经将时间数据转换成了序列号了,这是因为日期不连续导致的。
-
③ 残差的ACF和PACF中有很多滞后阶数显著的异于0,说明残差不是白噪声;
-
④ 简单指数平滑模型只能预测未来一期
-
(4)剔除异常值后重新建模:剔除异常值后,R方小幅增加,平稳的R方明显增加,且残差也是白噪声了。
异常值共有15个;P值为0.21>0.05(说明现在残差是白噪声了)
预测的等式:
-
(5)预测效果
从表中可以看出,可以预测出前14期,超过14期后预测值不会改变(建立ARMA模型时非常常见)
-
(6)本题是将波动较大的数据看成了异常值,事实上有更加复杂的模型可以捕捉到这些异常值(更适合股票类的预测模型),例如GARCH模型(广义的自回归条件异方差模型)→自行了解
5.5 示例4:GDP增速预测(反例)
【题目】
- (真正的预测要结合背景,而不是直接套用模型)
- 第十一届三中全会于1978年12月18日至22日在北京举行,此次会议标志着我国改革开放的开始。
- 今年是2019年,改革开放进行了40周年,它改变了中国落后的命运,使中国富起来了,也使中国走向了世界强国的行列,我们收集了过去四十周年(1979‐2018)中国GDP的增长率,请根据历史数据来合理的预测未来两年我国GDP的增长
率。
【Spss答题】
-
(1)引入Excel数据后,定义时间
-
(2)绘制时间序列图
并具体描述下数据(如前几年波动很大,近年有所衰减等) -
(3)预测模型
无论是否处理了异常值,预测效果均很差。
-
(4)预测效果不佳原因分析:没有结合时政背景
- 预测两要:①要结合背景(结合时政、背景等);②要合理假设(假如已知GDP会有所下降,就应对预测假如合适的阻尼)。
- 预测两不要:①不要硬套模型;②不要不做解释(如对选择的模型要做解释,比如交代数据符合模型等)
附言
- 参考课程可见 B站清风数模,如上仅作个人学习后笔记整理。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)