时间序列分析教程(二):移动平均与指数平滑

之前介绍了时间序列的基本概念和性质,现在就正式介绍一些处理时间序列的模型方法,第一个是移动平均法。

移动平均法很简单,就是用最近的数据预测未来短时间内的数据。有简单移动平均法,真的很简单,就是用最近的一组数据,去平均,作为下一时刻的预测:
$$S_i = (x_{i-1} + x_{i-2} + ...+ x_{i-n})/n$$
简单移动平均最大的优点就是通过计算平均可以减小随机波动的影响,当时序数据受到周期变动和随机波动的影响而起伏较大时,通过移动平均就能消除这种影响,进一步分析出它的发展方向与趋势。

简单移动平均的升级版就是加权移动平均,其实就是在各个时刻的数据加上一个权重,考虑了不同时刻的数据对未来的预测的作用的不同,不同于机器学习的模型,这里的权重更多是根据经验法和试算法确定的,个人觉得没有太大研究价值,不再深入讨论。

第二个要介绍的模型是指数平滑模型,它包括一次指数平滑、二次指数平滑、三次指数平滑,当时间序列没有明显趋势变化时,可以使用一次指数平滑进行预测,一次指数平滑的基本公式就是:
$$S_i = \alpha * x_i + (1-\alpha)S_{i-1}$$
其中S_i是时刻t的预测值,x_i是时刻t的真实值,S_i-1是时刻t-1的预测值,a是平滑常数。一次指数平滑的预测公式是:
$$x_{i+k} = s_i$$
一次指数平滑可以看成通过结合过去信息和当前信息进行预测,结合的方式就是通过合适的权重进行加权求和,得到的结果是一条直线,所以在序列没有明显趋势的时候才适用(即具有平稳性)。

如果序列具有线性趋势变化,就可以使用二次指数平滑,二次指数平滑的基本公式是:
$$S_i= \alpha *x_i + (1-\alpha)(S_{i-1} + t_{i-1})$$
$$t_i = \beta * (s_i - s_{i-1}) + (1-\beta)t_{i-1}$$
可以看出,二次指数平滑和一次指数平滑相比,加多了一项t_i用于表示趋势,在每个时刻对趋势进行分析,再加入到一次指数平滑中。预测公式是:
$$x_{i+h} = s_i + h*t_i$$
还记得之前提到过,一般的时间序列可表示为:
$$Z_t = T_t + S_t + X_t$$
其中包含了平稳的序列,趋势变化以及季节性变化,在二次指数平滑的预测公式中,我们看到预测值的等于一次指数平滑的预测值加上表示趋势变化的t_i,如果再继续引入季节性变化呢,就得到三次指数平滑了:
$$S_i = \alpha *(x_i-p_{i-k}) + (1-\alpha)(S_{i-1} + t_{i-1})$$
$$t_i = \beta * (s_i - s_{i-1}) + (1-\beta)t_{i-1}$$
$$p_i = \gamma * (x_i - s_i ) + (1-\gamma)p_{i-k}$$
预测公式为:
$$x_{i+h} = s_i + h*t_i + p_{i-k+h}$$
总的来说,指数平滑的实质就是对现在的数据进行加权线性变换,不论是一次二次还是三次,即使是加入趋势和季节变化信息,也是用基本公式表示这些信息,然后汇总起来。