在时间序列中,最简单的两种算法就是移动平均和指数平滑。
本篇先介绍移动平均。
基本原理
移动平均(Moving Average),就是使用前N期的历史数据进行序列的预测, 即把前N期的历史数据的平均值作为下一期的预测值。
移动平均和指数平滑的实质是一种平滑技术,其基本原理,是通过消除时间序列中的周期变动和不规则波动的影响,以便呈现出时间序列的总体发展趋势(即趋势线),然后根据趋势线分析序列的长期趋势。
比如,当产品的需求既不快速增长也不快速下降,且不存在季节性因素时,移动平均法能够有效地消除预测中的随机波动,非常有用。
移动平均的种类
常见的移动平均法,可以有如下几种形式:
一次移动平均(Simple Moving Average,SMA)。
二次移动平均(Double Moving Average,DMA)。
加权移动平均(Weighted Moving Average,WMA)。
移动平均比率法,适用于季节性变化的序列。
下面先介绍一次移动平均。
一次移动平均
一次移动平均,也叫简单移动平均,计算前N期的算术平均值作为下一时期的预测值,即前几期数据的权重都相等(均为1/n)。
计算公式
一次移动平均的计算公式如下:
![](http://images.blogchina.com/artpic_upload_v5/5b015eb08932e.jpg!m1024)
即,预测值等于前N期数据的平均值。
如下图所示,假定已经收集到前5个月的产品销量,现要预测第6个月的产品销量。假定取期数N=3,则计算前3期的平均值作为第6个序列值的预测值。
![](http://images.blogchina.com/artpic_upload_v5/5b015ece12558.jpg!m1024)
适用场景
因此,简单移动平均只能适用于呈水平趋势(有的书上叫无趋势)的序列。当序列的变化不大(即方差比较小),没有明显的升降趋势和循环变动,就可以使用一次移动平均。
如果事物呈现某种上升或下降的趋势,不宜采用这种方法(参考移动平均的缺点)。
一次移动平均一般只能够预测下一期的序列值,更多期的预测将会产生更大的误差。
另外,移动平均经常用来修匀(或平滑)序列的波动。如下图所示,当使用移动平均后,序列就变得更加平滑,期数N越大,平滑效果就越好。当对序列进行平滑后,就容易看出序列的整体变化趋势,方便进一步采用其它合适的方法来拟合序列的长期趋势线。
![](http://images.blogchina.com/artpic_upload_v5/5b015f1c5f189.png!m1024)
期数N的选择
在移动平均中,关键在于期数N的选择。不同的期数N,其预测效果也不一样。
期数大小的影响
一般情况,N越大,则平滑效果越好,但会对序列的变动不敏感;N越小,越能够反映序列的波动,但无法有效呈现长期的变化趋势。所以,期数N的选择要适当。
当N为奇数时,只需要一次移动平均,就可以作为中间一期的趋势代表值。如下所示,当N=2k+1时,移动平均后的序列值就能够对齐时期K。所以,在大多数应用中,我们都选取N为奇数进行移动平均。
![](http://images.blogchina.com/artpic_upload_v5/5b015f2d0a9ba.png!m1024)
![](http://images.blogchina.com/artpic_upload_v5/5b015f37298c6.png!m1024)
移正平均
但如果N为偶数的话,则移动平均值代表的是这偶数项的中间位置的水平,无法对正到具体的某一时期。如下所示,MA(4)的前两项分别对应的时期数为2.5和3.5,要对齐时期数,则必须要进行再次移动平均MA(2),就可以对齐到时期数3。这样经过两次移动平均,才能使平均值对正到某一时期,也叫做中心化的移动平均(Centered MA),有时简称移正平均。
![](http://images.blogchina.com/artpic_upload_v5/5b015f4266b7d.png!m1024)
所以,如果序列存在季节性变化,而且季节周期为偶数(比如一年4个季度和12个月份的周期),此时在移动平均时需要移正平均。即当序列包含季节变动时,则期数N应该与季节变动周期一致,才能消除其季节波动;
期数选择原则
在实际的应用中,要选择最合适的期数N,我们经常用平均误差率MAPE来作为选取最佳参数N的准则,即使得MAPE最小的N值,就是最佳的期数取值。
详情可参见实战小节。
操作实战
如下,某销售公司收集了每周的平板电脑的销售量数据,请预测一下第18周的销量。
操作步骤如下:
取N=2,3,4,分别在D、E、F列计算每期的预测值。
计算MA(2)值。在D7单元格输入公式”=Average(B5:B6)”,公式向下拉。
计算MA(3)值。在E8单元格输入公式”=Average(B5:B7)”,公式向下拉。
计算MA(4)值。在F9单元格输入公式“=Average(B5:B8)”,公式向下拉。
计算每期的误差率。在H7单元格输入“=abs(D7-B7)/B7”,并设置为百分比的数字格式;其余I、J列类似操作。
计算平均误差率MAPE。在H2单元格输入“=Average(H7:H21)”,其余类似。
判断各项的MAPE的大小,显然有〖MAPE〗_2<〖MAPE〗_3<〖MAPE〗_4,应该选择N=2为最佳期数值。
可以预测,第18周的平板电脑的销量为60.50(单位:K)。
预测值的准确度或误差率约为MAPE=23.63%。
![](http://images.blogchina.com/artpic_upload_v5/5b015f4d9a1ae.png!m1024)
移动平均的缺点
移动平均最大的缺点是滞后性,所以一般预测不太准确。
缺点一:反转滞后性
即当原有序列发生反转时,但移动平均趋势仍然不变。
下图画出平板电脑的真实销量和移动平均值的折线图,可以看得出移动平均的滞后性。如下所示,在第7周的时候,真实的销量已经开始反转下降,但预测值却仍然在上升。
![](http://images.blogchina.com/artpic_upload_v5/5b015f72e32eb.png!m1024)
图 4一次移动平均的反转滞后性
缺点二:滞后偏差
即,如果序列呈单调上升或下降时,一次移动平均的预测值会产生明显的滞后偏差,即预测值比实际值偏低(或偏高)。
![](http://images.blogchina.com/artpic_upload_v5/5b015f8683c4a.png!m1024)
图 5一次移动平均的滞后偏差
所以,如果事物呈现某种明显地上升或下降的趋势,不宜采用一次移动平均。
为了解决滞后偏差的问题,可以使用二次移动平均。
作者简介:
傅一航,大数据专家。
专注于大数据分析、大数据挖掘等应用技术,及大数据系统解决方案。致力于将大数据技术应用于政府、通信、金融、航空、电商、互联网等领域。
联系作者: 2509626286@qq.com。