使用教材:(很不错的书)
做数据分析时,很多的数据都会有时间的趋势,如销售,预测也是经常会有的工作,很多时候和时间有关的周期性变化(周,月,季度,季节性变化等)都会想到使用时间序列来做预测。
做时间序列分析,以前我自己是从网上找到别人的例子,跟着例子做,但是对其中的原理,模型的调整,得到结果的解读则不甚理解,迷迷糊糊就交差了。幸好没有被深究。
1. 时间序列的概念
时间序列模型:依时间序列排列起来的一系列观测值(观测值之间不独立),考虑的不是变量间的因果关系,而是重点考察变量在时间方面的发展变化规律,并为之建立数学模型。
另外一种理解:若我们对背后的规律探讨的十分清楚的话,本来我们是可以找到很多影响因素的,但是现在由于各种原因我们做不到这点,能做到的是用时间t代替各种因素的影响,然后去研究随着时间的变化因变量是如何变的。
使用前提:足够长的数据序列,数据序列的变动是稳定而规律的
方法分类:
时域:(Time domain) 将时间序列看成是过去一些点的函数,或者认为序列具有随时间系统变化的趋势,它可以用不多的参数来加以描述,或者说可以通过差分、周期等还原成随机序列。
频域:(Frequency domain)认为时间序列是由数个正弦波成份叠加而成,当序列的确来自一些周期函数集合时,该方法特别有用。
时间序列的构成:长期趋势+季节变化+循环变化+不规则变化
长期趋势:指一种长期的变化趋势。它采取一种全局的视角,不考虑序列局部的波动
季节变化(Season):反映一种周期性的变化一般在一年中完成
循环变化(Cyclic):指一种较长时间的周期变化。一般来说循环时间为2-15年。循环变化一般会出现波峰和波谷,呈现一种循环往复的现象。
不规则变化(error) :指时间序列中无法预计的部分,序列的随机波动 ,突发事件引起的 ,它是无法预测的 ,在分析中往往又将其称为白噪声
并不是每个序列都包含所有4种成分。比如以年为时间单位的序列就不会有季节变化;一些较短的序列也看不出循环变化。所以在分析的时候得具体情况具体分析。
时间序列分析面临的问题:
基础统计数据 :报表系统——质量,统计口径——不统一,范围变化、区域划分——变化
理论和技术培训 :
时间序列分析对长度的要求:
不同的序列分析方法:差分
历史数据越多,对预测的帮助越大
如果存在周期,一般需要4个周期以上(有人认为应当在20个周期以上)
2.使用SPSS做时间序列分析:
2.1 SPSS中涉及的功能
>分析模块:
指数平滑法(Exponential Smoothing)
自回归线性模型(Autoregressive model)
ARIMA模型
季节解构(Seasonal Decomposition)
>软件的基本趋势是越来越高度自动化:当然是以足够多的数据量为前提
从14版之后开始引入自动建模功能
2.2 基本分析思路
>平滑与季节分解:用移动平均的方式消除波动,反映出主要的趋势
是利用时间序列资料进行短期预测的一种方法。它的基本思想是:除去一些不规则变化后,时间序列将剩下一些基本的变化模式,而这种变化模式将延续到将来。
平滑的主要目的就是除去时间序列的不规则变化,把时间序列的基本变化模式突现出来,作为短期预测的基础。因此也有人把平滑称作“修匀”
平滑的方法很多。广义上说,可以认为回归也是一种平滑。因为拟合回归曲线可以把杂乱的观测数据修匀得到连续而光滑的曲线。
移动平均和移动中位数等这些不同的平滑技术又被称为平滑器。
平滑处理后,可以得到一些新的序列。不同的平滑器得到的新序列是不同的。选择合适的平滑器,寻求最佳的预测效果是平滑处理的关键。
>回归模型:根据历史数据建立相应的回归模型用于预测
>ARIMA:真正的时间序列模型建模分析方法
2.3 栗子:
NRC数据的建模预测
美国1947年1月到1969年12月住宅建筑的数据,分析目的是希望能过通过历史数据来预测1970年全年的情况。 Nrc.sav
整个建模包括下面两部分
2.3.1. 数据的完整性:缺失值填补,做时间序列要求数据没有缺失值
2.3.2. 时间变量的定义:这个动作不是简单的添加时间字段,而是进行特殊的设置,告诉spss这个数据是一个序列数据,从1947年1月开始,12个月作为周期
2.3.3. 时间序列做观测-平稳化
对原始数据进行观察:(分析-预测-序列图)
若去掉这些趋势后,这个序列是否会成为一个随机的白噪声序列,
对原始数据做一阶差分,得到新变量nrc_1, 然后对nrc_1做序列图,观察一阶差分后的数据的变化趋势。从序列图看到差分后的序列已经没有上升和下降趋势,是平的,但是随着时间的增加周期性是一直存在的,所以考虑做季节差分,去掉季节周期性。
去掉季节性差分:数据没有明显的增减趋势,没有明显的季节性趋势,整个序列看起来是平稳的。剩下的信息是不是白噪声呢,需要在继续判断。
以上的操作步骤在spss中有比较简单的操作:得到的是和上面一样的结果(做了那么多以后看到这个内心有点奔溃)
做了差分和季节性差分后整个序列看起来是平稳的,但实际上里面有没有自相关趋势,我们不能确认,需要用自相关图和偏相关图来确认表面上平稳的序列是不是真的白噪声序列。
自相关分析:分析-预测-自相关
自相关系数具有传递性,会使得原本没有相关性的点有相关性,因为引入偏相关系数,即是在屏蔽掉这种传递性效应后,剩余的这种关联是否存在。
为什么需要分析自相关系数和偏相关系数,得到两个相关指标的拖尾信息,是要指导最后的建模。
刚刚的数据是两边都拖尾,一般使用ARMA模型,spss有更方便的方法:专家建模器
2.3.4. 建模:预测-创建模型
结果的解读:
模型拟合:
R方:决定系数,即现有模型可以解释原变量的多少变异。
对于有趋势有周期波动的序列而言,R方往往有点过于乐观,因为只要把相应的趋势解释掉,可能就占了相当大的变异解释,比较客观的平稳的R方,指的是平稳后的序列,我们的建模可以解释多少信息。
RMSE:相当于回归里的残差剩余的离散程度,残差的均方
MAPE,MaxAPE:相当于相对误差和绝对误差,相对于原始数据,我们的误差有百分之多少,2.07%
MAE,MaxAE:平均的实测误差,最大的绝对误差
模型统计量:
sig(P值)告诉我们这个序列是不是白噪声,在这个例子中p值>0.05,h0剩下的是白噪声,没有被拒绝,即相应的信息已经被发掘出来,剩下的是白噪声
上面只是模型的应用,没有做预测及保存预测值?
保存选项可做模型预测设置,数据集会自动添加3列预测值,
预测效果的检验:
想要用这个模型预测未来12个月的数据?
用实测值与预测值做比较,检验预测效果。
1969年-1970年,预测效果后面差,数据不够多情况下,一般不适宜预测太长时间