ETS模型
接下来说说ETS模型,在R的forecast库中有实现。
> library(fpp2)
Loading required package: forecast
Loading required package: fma
Loading required package: expsmooth
Loading required package: ggplot2
作者Rob Hyndman是个H-index 54,citation过两万的大牛。他故意用这三个字母来使这个模型的名字能顾名思义(reminiscent),既可以理解为Error, Trend and Seasonality,又可以解作ExponenTial Smoothing模型。前者揭示了模型的三个组成部分,后者则描述了模型的工作原理。准确的说,ETS实际上是一整个系列的算法,可以基于这三个组成部分任意组合,而Hyndman写的forecast库中可以用ets()方法自动选择三个component的组合。
之所以要从这个模型写起,是因为这个模型既足够强大,又足够简明。它可以预测以下几种时间序列:- 无趋势(trend),无季节性(seasonality) 比如我上个月跑了十次5公里,根据这十次时间估计我接下来一次要跑多久
- 有趋势,无季节性 比如我刚开始学打字,一开始打1000个词要4个小时,以后随着熟练程度递减,预测下一次时间
- 有趋势,有季节性 比如零售业的销售数据,趋势体现的可能是整个行业的冷暖,季节性则跟气温、假日有关
- 无趋势,有季节性 比如近十年某地气温的变化,十年这样的短周期里也许体现不出大的趋势变化,但季节性是显著的
不仅如此,由于它的error component既可以是additive的又可以是multiplicative的,它还能预测有季节性且在每个周期内幅度有变化的序列。比如电力供应,由于用的起空调之类制冷设备的家庭变多了,季节性的振幅可能是逐渐递增的。
最简单的ETS
最简单的ETS是ses模型,即simple exponential smoothing。这个模型只能解决没趋势也没季节性的时序。它的公式如下: