时间序列分析——指数平滑和ARIMA模型

个人学习笔记,课程为数学建模清风付费课程

目录

一、时间序列分析

1.1时间序列数据

1.2时间序列的基本概念

1.3区分时期和时点时间序列

1.4时间序列分解

1.4.1长期趋势:T

1.4.2季节趋势:S

1.4.3循环变动:C

1.4.4不规则变动:I

1.5叠加模型和乘积模型

1.6Spss处理时间序列中的缺失值

1.7替换缺失值的五种方法

​1.8Spss操作步骤

1.8.1定义时间变量

​1.8.2画时间序列图(时序图)

1.8.3季节性分解

1.8.4结果解读

1.8.5画出分解后的时序图

​1.9总结

1.9.1分析

1.9.2步骤

二、建立时间序列分析模型 

2.1专家建模器

2.2指数平滑模型 

​2.2.1Simple模型 

2.2.2简单指数平滑法预测 

2.2.3线性趋势模型(linear trend)  

2.2.4阻尼趋势模型(Damped trend)

2.2.5霍特趋势和阻尼趋势预测 

2.2.6简单季节性(Simple seasonal) 

2.2.7温特加法模型(Winters' additive) 

2.2.8温特乘法模型(Winters' multiplicative) 

2.2.9温特加法和乘法预测 

 三、一元时间序列分析的模型

3.1平稳时间序列和白噪声序列

3.1.1时间序列的平稳性(stationary series)

3.1.2白噪声序列 

3.1.3一些时间序列的图形 

3.2差分方程和滞后算子

3.2.1差分方程

3.2.2差分方程的特征方程

​3.2.3滞后算子

3.3AR模型

3.3.1模型概念

3.3.2平稳条件

3.3.3例子

3.4MA模型

3.4.1模型概念

3.4.2MA模型和AR模型的关系

3.4.3平稳条件

3.5ARMA模型

3.5.1模型概念

3.5.2平稳条件 

3.6ACF和PACF

3.6.1ACF自相关系数

3.6.2PACF偏自相关函数 

3.6.3例子 

3.6.3.1AR(1)模型(系数符号相反)

3.6.3.2MA(1)和AR(2)模型

3.6.3.3ARMA(1,1)模型和总结表格 

3.7ARMA模型的估计

3.7.1ARMA模型的识别

3.7.1.1R语言生成随机序列: x <- arima.sim(n=100, model=list(ar=c(0.5, -0.25, 0.4)))

3.7.1.2R语言生成随机序列: x <- arima.sim(n=100, model=list(ma=c(0.2, 0.4)))

3.7.1.3x <- arima.sim(n=100, model=list(ar=c(0.5),ma=c(0.2, 0.4))) 

3.7.1.4x <- arima.sim(n=100, model=list(ar=c(0.5, 0.2),ma=c(0.4)))

3.7.2ARMA模型的估计

3.7.3检验模型是否识别完全

3.8模型选择-AIC和BIC准则(选小原则)

3.8.1AIC

3.8.2BIC

3.9ARIMA模型

3.9.1模型概念

3.9.2时间序列图 

3.9.2.1ARIMA(1,1,1)

3.9.2.2ARIMA(1,2,1)

3.10SARIMA模型

四、SPSS时间序列建模 

4.1解题步骤

4.2例题1:销量数据预测

4.2.1前期准备工作

4.2.2 Spss时间序列建模器

4.2.3自动检测异常值的方法 

​4.2.4SPSS操作步骤

4.2.4.1SPSS时间序列建模器设置

4.2.4.2常用的评价指标 

4.2.4.3参数估计值表格 

4.2.4.4白噪声进行残差检验 

4.2.4.5预测的结果和效果图 

4.3例题2:人口数据预测 

4.3.1预测结果

4.3.2残差的白噪声检验

4.3.3预测效果图形

4.4例题3:上证指数预测 

4.4.1直接进行专家建模的结果

4.4.2剔除异常值后重新建模

4.4.3预测效果

4.5例题4:GDP增速预测 

4.5.1用所有数据进行预测(剔除异常值)

4.5.2出错的原因

五、拓展:更高级的时间序列预测模型


一、时间序列分析

1.1时间序列数据

时间序列数据:对同一对象在不同时间连续观察所取得的数据。
例如:
(1)从出生到现在,你的体重的数据(每年生日称一次)。
(2)中国历年来GDP的数据。
(3)在某地方每隔一小时测得的温度数据。

1.2时间序列的基本概念

       时间序列也称动态序列,是指将某种现象的指标数值按照时间顺序排列而成的数值序列。
时间序列由两个组成要素构成:
1、第一个要素是时间要素;年、季度、月、周、日、小时、分钟、秒
2、第二个要素是数值要素
时间序列根据时间和数值性质的不同,可以分为时期时间序列和时点时间序列。
时期序列中,数值要素反映现象在一定时期内发展的结果;
时点序列中,数值要素反映现象在一定时点上的瞬间水平。

1.3区分时期和时点时间序列

例如:
(1)从出生到现在,你的体重的数据(每年生日称一次)。
(2)中国历年来GDP的数据。
(3)在某地方每隔一小时测得的温度数据。
(1)和(3)是时点时间序列;(2)是时期时间序列
时期序列可加,时点序列不可加。
       时期序列中的观测值反映现象在一段时期内发展过程的总量,不同时期的观测值可以相加,相加结果表明现象在更长一段时间内的活动总量; 而时点序列中的观测值反映现象在某一瞬间上所达到的水平,不同时期的观测值不能相加,相加结果没有实际意义。(灰色预测模型里面有一个累加的过程)

1.4时间序列分解

       因为时间序列是某个指标数值长期变化的数值表现,所以时间序列数值变化背后必然蕴含着数值变换的规律性,这些规律性就是时间序列分析的切入点。

1.4.1长期趋势:T

       长期趋势(Secular trend,T)指的是统计指标在相当长的一段时间内,受到长期趋势影响因素的影响,表现出持续上升或持续下降的趋势,通常用字母T表示。例如,随着国家经济的发展,人均收入将逐渐提升;随着医学水平的提高,新生儿死亡率在不断下降。

1.4.2季节趋势:S

       季节趋势(Seasonal Variation,S)是指由于季节的转变使得指标数值发生周期性变动。这里的季节是广义的,一般以月、季、周为时间单位,不能以年作单位。例如雪糕和棉衣的销量都会随着季节气温的变化而周期变化;每年的长假(五一、十一、春节)都会引起出行人数的大量增加。

 百度指数:http://index.baidu.com/v2/index.html#/

1.4.3循环变动:C

       循环变动(Cyclical Variation,C)与季节变动的周期不同,循环变动通常以若干年为周期,在曲线图上表现为波浪式的周期变动。这种周期变动的特征表现为增加和减少交替出现,但是并不具严格规则的周期性连续变动。最典型的周期案例就是市场经济的商业周期和的整个国家的经济周期。

1.4.4不规则变动:I

       不规则变动(Irregular Variation,I)是由某些随机因素导致的数值变化,这些因素的作用是不可预知和没有规律性的,可以视为由于众多偶然因素对时间序列造成的影响(在回归中又被称为扰动项)。

       以上四种变动就是时间序列数值变化的分解结果。有时这些变动会同时出现在一个时间序列里面,有时也可能只出现一种或几种,这是由引起各种变动的影响因素决定的。正是由于变动组合的不确定性,时间序列的数值变化才那么千变万化。
       四种变动与指标数值最终变动的关系可能是叠加关系,也可能是乘积关系。

1.5叠加模型和乘积模型

例子:

1.6Spss处理时间序列中的缺失值

缺失值发生在时间序列的开头或者尾部,可采用直接删除的方法;
缺失值发生在序列的中间位置,则不能删除(删除后原有的时间序列会错位),可采用替换缺失值的方法。

 第五讲:相关性模型——相关系数

1.7替换缺失值的五种方法

1.8Spss操作步骤

1.8.1定义时间变量

1.8.2画时间序列图(时序图)

1.8.3季节性分解

1.8.4结果解读

1.8.5画出分解后的时序图

1.9总结

1.9.1分析

1.9.2步骤

(1)作时间序列图;
(2)判断时间序列包含的变动成分;
(3)时间序列分解(有周期性且包含长期趋势、季节变动或循环变动);
(4)建立时间序列分析模型;
(5)预测未来的指标数。

二、建立时间序列分析模型 

2.1专家建模器

Spss官方文档的“翻译”:
(1)给我一个时间序列,我就能自动帮你找到适合的拟合模型;
(2)我提供模型有两类,一类是指数平滑模型,另外一类是ARIMA模型;
(3)我可以识别你数据中的异常值,当然需要你来手动指定。

2.2指数平滑模型 

Spss官方文档:

2.2.1Simple模型 

关于平滑系数𝛼𝛼的选取原则:
1、如果时间序列具有不规则的起伏变化,但长期趋势接近一个稳定常数,α值一般较小(取0.05-0. 2之间)
2、如果时间序列具有迅速明显的变化倾向,则α应该取较大值(取0.3-0.5)
3、如果时间序列变化缓慢,亦应选较小的值(一般在0.1-0.4之间)
实际上,Spss的专家建模如果选择了Simple模型用来估计,那么软件会帮我们自动选取一个适合的平滑系数使得预测误差最小。

2.2.2简单指数平滑法预测 

2.2.3线性趋势模型(linear trend)  

参考:https://otexts.com/fpp2/holt.html 

2.2.4阻尼趋势模型(Damped trend)

2.2.5霍特趋势和阻尼趋势预测 

参考:https://otexts.com/fpp2/holt.html  

2.2.6简单季节性(Simple seasonal) 

参考:https://otexts.com/fpp2/taxonomy.html 

2.2.7温特加法模型(Winters' additive) 

参考:https://otexts.com/fpp2/holt-winters.html 

2.2.8温特乘法模型(Winters' multiplicative) 

参考:https://otexts.com/fpp2/holt-winters.html

2.2.9温特加法和乘法预测 

参考:https://otexts.com/fpp2/holt-winters.html 

 三、一元时间序列分析的模型

       下面的这些概念只介绍一个大概,要完全弄懂还需要大家课后自己努力。如果实在学习这小部分有困难,大家可以选择放弃理论部分,不用细究每一个细节和概念,我们的重心可以放在运用上。

3.1平稳时间序列和白噪声序列

3.1.1时间序列的平稳性(stationary series)

注:严格平稳要求太高,因此在时间序列中提到的平稳没有特殊说明默认为弱平稳。 

3.1.2白噪声序列 

3.1.3一些时间序列的图形 

明显的季节性排除了(d)、(h)和(i)系列。趋势和变化水平排除了(a)、(c)、(e)、(f)和(i)系列。方差的增加也排除了(i)。这只剩下 (b) 和(g) 作为固定系列。 

3.2差分方程和滞后算子

3.2.1差分方程

将某个时间序列变量表示为该变量的滞后项、时间和其他变量的函数,这样的一个函数方程被称为差分方程

差分方程的齐次部分:只包含该变量自身和它的滞后项的式子。 

3.2.2差分方程的特征方程

差分方程的齐次部分:只包含该变量自身和它的滞后项的式子。

3.2.3滞后算子

3.3AR模型

3.3.1模型概念

回归模型的扰动项:
• 异方差(横截面数据)
• 自相关(时间序列)
自回归只能适用于预测与自身前期相关的经济现象,即受自身历史因素影响较大的经济现象,如矿的开采量,各种自然资源产量等。对于受社会因素影响较大的经济现象,不宜采用自回归,而应使用可纳入其他变量的向量自回归模型(多元时间序列)。

注意: 我们讨论的AR(p)模型一定是平稳的时间序列模型,如果原数据不平稳也要先转换为平稳的数据才能再进行建模。

3.3.2平稳条件

3.3.3例子

 

3.4MA模型

3.4.1模型概念

3.4.2MA模型和AR模型的关系

       从上面的计算步骤可以看出:我们可以将1阶移动平均模型转换为无穷阶的自回归模型,这一性质称为移动平均模型的可逆性;类似的,我们在某些条件下(可逆性条件)也可以将MA(q)模型也转换为无穷阶的自回归过程。
       一般地,任何经济变量的时间序列都可以自回归过程来描述。但在模型分析的实践中,为简化估计参数的工作量,我们当然希望模型当中的参数尽可能地少。于是便有了引进移动平均过程MA(q)的必要。

3.4.3平稳条件

只要q是常数,那么MA(q)模型一定是平稳的。 

3.5ARMA模型

3.5.1模型概念

自回归移动平均模型(Autoregressive Moving Average,ARMA),就是设法将自回归过程AR和移动平均过程MA结合起来,共同模拟产生既有时间序列样本数据的那个随机过程的模型。

 

3.5.2平稳条件 

       一般,我们可以通过观察时序图来判断时间序列是否平稳,当然,也有相应的假设检验方法能帮助我们对数据的平稳性进行检验(由于第三种情况几乎不会发生,因此我们只需要检验时间序列是单位根还是平稳的即可)。
       例如:Augmented Dickey-Fuller单位根检验(ADF 检验)、KPSS检验、PP检验。
     (参见:陈强《高级计量经济学》第二版 P414)

3.6ACF和PACF

3.6.1ACF自相关系数

注意:ACF和接下来要介绍的PACF使用的前提是数据为平稳序列。 

3.6.2PACF偏自相关函数 

3.6.3例子 

3.6.3.1AR(1)模型(系数符号相反)

AR(1) 模型 : ACF 逐渐衰减,即拖尾; PACF 一阶后截尾

3.6.3.2MA(1)和AR(2)模型

MA(1) 模型 : ACF 一阶后截尾; PACF 逐渐衰减,即拖尾

AR(2) 模型 : ACF 逐渐衰减,即拖尾; PACF 二阶后截尾

3.6.3.3ARMA(1,1)模型和总结表格 

ARMA(1,1) 模型 : ACF 和 PACF 均拖尾

3.7ARMA模型的估计

3.7.1ARMA模型的识别

3.7.1.1R语言生成随机序列: x <- arima.sim(n=100, model=list(ar=c(0.5, -0.25, 0.4)))

1 和图 2 上均有两条蓝色的线,其表示假设检验对应的上下临界值,如果自相关系数或偏自相关系数位于这两条线内,则认为它们与0 没有显著的差异

 

分析:
序列 x 的样本自相关系数在第 1,3,5,14 阶显著的异于 0 ,且从图形上来看表现出拖尾的特性;而样本偏自相关系数只有第1,3 两阶显著的异于 0 ,超过 3 阶后均和 0 没有显著的差异,这说明序列x 的偏自相关函数在 3 阶后截尾;综上,我们认为序列x 可由 AR(3) 生成。
3.7.1.2R语言生成随机序列: x <- arima.sim(n=100, model=list(ma=c(0.2, 0.4)))

1 和图 2 上均有两条蓝色的线,其表示假设检验对应的上下临界值,如果自相关系数或偏自相关系数位于这两条线内,则认为它们与0 没有显著的差异

 

分析:
序列 x 的样本偏自相关系数在第 1,2,7,9,16 阶显著的异于0,且从图形上来看表现出拖尾的特性;而样本自相关系数只有第1,2 两阶显著的异于 0 ,超过 2 阶后均和 0 没有显著的差异,这说明序列x 的自相关函数在 2 阶后截尾;综上,我们认为序列x 可由 MA(2) 生成。
3.7.1.3x <- arima.sim(n=100, model=list(ar=c(0.5),ma=c(0.2, 0.4))) 

3.7.1.4x <- arima.sim(n=100, model=list(ar=c(0.5, 0.2),ma=c(0.4)))

x <- arima.sim(n=100, model=list(ar=c(0.5, 0.2),ma=c(0.4)))
运行四次得到的 PACF 结果各不相同 :

正确识别ARMA模型的阶数难度较大,所以引入极大似然估计估计模型。 

3.7.2ARMA模型的估计

ARMA模型的极大似然估计:https://wenku.baidu.com/view/34b3c968011ca300a6c39087.html 

3.7.3检验模型是否识别完全

估计完成时间序列模型后,我们需要对残差进行白噪声检验,如果残差是白噪声,则说明我们选取的模型能完全识别出时间序列数据的规律,即模型可接受;如果残差不是白噪声,则说明还有部分信息没有被模型所识别,我们需要修正模型来识别这一部分的信息。

Ljung and Box 1978年提出的Q检验能帮助我们检验残差是否为白噪声: 

 

3.8模型选择-AIC和BIC准则(选小原则)

过拟合问题:加入的参数个数越多,模型拟合的效果越好,但这却是以提高模型复杂度为代价的。因此,模型选择要在模型复杂度与模型对数据的解释能力之间寻求最佳平衡。
模型容易出现过拟合问题,所以模型选择遵从两个原则:AIC 和 BIC
AIC BIC 是选小原则,我们要选择使得 AIC BIC 最小的模型。
BIC 对于模型的复杂程度的惩罚系数更大,因此 BIC 往往比 AIC 选择的模型更简洁)

3.8.1AIC

模型中参数的个数n: 反映模型的复杂程度;
模型的极大似然函数值: 反映模型对于数据解释(拟合)程度。

3.8.2BIC

样本个数用T表示
模型中参数的个数n: 反映模型的复杂程度;
模型的极大似然函数值: 反映模型对于数据解释(拟合)程度。

3.9ARIMA模型

3.9.1模型概念

差分自回归移动平均模型 (Autoregressive Integrated Moving Average Model

3.9.2时间序列图 

3.9.2.1ARIMA(1,1,1)

x <- arima.sim(list(order = c(1,1,1), ar = 0.6, ma=-0.5), n = 100)

3.9.2.2ARIMA(1,2,1)
x <- arima.sim(list(order = c(1,2,1), ar = 0.6, ma=-0.5), n = 100)

 

3.10SARIMA模型

到目前为止,我们只关注非季节性数据和非季节性 ARIMA 模型。然而, ARIMA模型也能够对广泛的季节数据进行建模。
季节性 ARIMA 模型是通过在 ARIMA 模型中包含额外的季节性项而生成的,其形式如下:

 

四、SPSS时间序列建模 

4.1解题步骤

下面的步骤是自己在思考建模的过程哦,不是写在论文中的:
1 )处理数据的缺失值问题、生成时间变量并画出时间序列图;
2 )数据是否为季度数据或者月份数据(至少有两个完整的周期,即两年),如果是的话则要观察图形中是否存在季节性波动。
3 )根据时间序列图大致判断数据是否为平稳序列(数据围绕着均值上下波动,无趋势和季节性)
4 )打开 Spss ,分析 -- 时间序列预测 创建传统模型(高版本的 Spss 可能才有这个功能哦,我用的是24 版本,安装包可以在第 5 讲的课件压缩包里面下载),看看Spss专家建模器得出的最优的模型类型。
5 )如果最后的结果是 ARIMA(p,0,q) 模型,那么我们就可以画出时间序列的样本ACF和 PACF 图形进行分析;如果得到的是 ARIMA(p,1,q) 模型,我们可以先对数据进行1阶差分后再用 ACF PACF 图形分析;如果得到的结果与季节性相关,那么我们可以考虑使用时间序列分解。

4.2例题1:销量数据预测

4.2.1前期准备工作

下面的步骤是自己在思考建模的过程哦, 不是写在论文中的:
1 )数据为季度数据(有四个周期),从图中看出也有季节性波动,即第二季度的销量较高,第四季度较低;
2 )根据时间序列图可知数据不平稳,有向上的趋势;
3 Spss 的专家建模给出的最合适的模型是温特加法模型;
4 )温特加法模型意味着原时间序列数据含有线性趋势和稳定的季节成分,我们可以使用加法时间序列分解;
5 )利用 Spss 我们可以对未来两年的销售数据进行预测。

 

4.2.2 Spss时间序列建模器

 默认在所有的指数平滑模型和ARIMA模型中选择合适的模型。

4.2.3自动检测异常值的方法 

注:来自Spss官方文档

4.2.4SPSS操作步骤

4.2.4.1SPSS时间序列建模器设置

:
1 )预测值和拟合值是不相同的,预测值是将样本外年份的数据带入模型计算得到的,而拟合值是将样本的年份重新带入模型计算得到的。
2 )这里保留残差的 ACF PACF 图形可以帮助我们判断残差是否为白噪声,即该时间序列是否能被模型识别完全。

 

4.2.4.2常用的评价指标 

注:
(1) 一般比较两个模型的好坏,我们可以使用平稳的 R 方(文档上翻译成了固定的 R 方)或者标准化BIC( BIC 准则),这两个指标既考虑了拟合的好坏,又考虑了模型的复杂度;
(2)R 方可用来反映线性模型拟合的好坏,越接近于 1 拟合的越准确。
4.2.4.3参数估计值表格 

4.2.4.4白噪声进行残差检验 

从残差的 ACF PACF 图形中可以看出,所有滞后阶数的自相关系数和偏自相关系数均和0 没有显著的差异;另外从下表可以看出,对残差进行Q 检验得到的 p 值为0.741 ,即我们无法拒绝原假设,认为残差就是白噪声序列,因此温特加法模型能够很好的识别本例中的销量数据。
4.2.4.5预测的结果和效果图 

4.3例题2:人口数据预测 

4.3.1预测结果

4.3.2残差的白噪声检验

4.3.3预测效果图形

4.4例题3:上证指数预测 

4.4.1直接进行专家建模的结果

 

4.4.2剔除异常值后重新建模

4.4.3预测效果

4.5例题4:GDP增速预测 

真正的预测要结合背景,而不是直接套用模型,我们来看下面这个例子~

4.5.1用所有数据进行预测(剔除异常值)

拟合和预测的效果很差

4.5.2出错的原因

预测两要:
一要结合背景;
二要合理假设。
预测两不要
不要硬套模型;
不要不做解释.

五、拓展:更高级的时间序列预测模型

基于 LSTM 深度学习网络预测时间序列
清风老师在 MATLAB 中开发的工具箱,使用教程和下载方法可以看下面的 b 站视频

https://www.bilibili.com/video/BV16V4y1r7jo/ 

 

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值