3.1 一些简单的预测方法

一些预测方法虽然简单但非常有效。本书将以下面的四种预测方法作为基准方法。

均值法

此方法中,所有未来值的预测值等于历史数据的平均值。我们把历史数据记作\(y_{1},\dots,y_{T}\),预测值就可以表示为: \[ \hat{y}_{T+h|T} = \bar{y} = (y_{1}+\dots+y_{T})/T. \]

\(\hat{y}_{T+h|T}\) 代表基于 \(y_1,\dots,y_T\)\(y_{T+h}\) 的估计值。

meanf(y, h)
# y 历史数据时间序列
# h 预测期数

Naïve 方法

在 naïve 预测方法中,我们简单地将所有预测值设为最后一次的观测值,即: \[ \hat{y}_{T+h|T} = y_{T}. \] 这种方法在很多经济和金融时间序列预测中表现得非常好。

naive(y, h)
rwf(y, h) # 二者等价

当数据服从随机游动过程时 Naïve 预测是最优的,(见 @ref(stationarity 节)),因此Naïve 方法也被称为“随机游动预测”。

季节性 Naïve 方法

季节性 Naïve 方法与 Naïve 方法类似,它适用于季节性变化剧烈的数据。我们将每个预测值设为同一季节的前一期观测值(例如:去年的同一个月)。那么,\(T+h\) 时刻的预测值可以记作: \[ \hat{y}_{T+h|T} = y_{T+h-km}, \] 等式中 \(m\) 为周期长度, \(k\)\((h-1)/m\) 的整数部分(也就是在 \(T + h\) 时刻前预测期所包含的整年数)。这个等式并没有看起来那么复杂,例如,对于月度数据,未来所有二月的预测值都等于前一年二月的观测值。对于季度数据,未来所有第二季度的预测值都等于前一年第二季度的观测值。相似的规则适用于其他的月份、季度和其他周期长度。

snaive(y, h)

漂移法

相对于 Naïve 方法,趋势法(漂移法)允许预测值随着时间的推移增大或减小,并且我们假定单位时间改变量(称作 “漂移”)等于历史数据的平均改变量,因此 \(T+h\) 时刻的预测值可以表示为: \[ \hat{y}_{T+h|T} = y_{T} + \frac{h}{T-1}\sum_{t=2}^T (y_{t}-y_{t-1}) = y_{T} + h \left( \frac{y_{T} -y_{1}}{T-1}\right). \] 这相当于把第一个观测点和最后一个观测点连成一条直线并延伸到未来预测点。

rwf(y, h, drift=TRUE)

例子

3.1 展示了将前三种方法应用于啤酒季度销售数据的预测结果。

# 设定1992年至2007年为训练数据
beer2 <- window(ausbeer,start=1992,end=c(2007,4))
# 画出预测图
autoplot(beer2) +
  autolayer(meanf(beer2, h=11)$mean, series="均值") +
  autolayer(naive(beer2, h=11)$mean, series="Naïve") +
  autolayer(snaive(beer2, h=11)$mean, series="季节性 naïve") +
  ggtitle("啤酒季度销量的预测") +
  xlab("年份") + ylab("百万升") +
  guides(colour=guide_legend(title="预测")) +
  theme(text=element_text(family="STHeiti"))+
  theme(plot.title = element_text(hjust = 0.5))
澳大利亚啤酒季度销量预测。

图 3.1: 澳大利亚啤酒季度销量预测。

3.2是基于谷歌公司200天的每日股票收盘价运用非周期方法得出的预测结果。

# 画出预测图
autoplot(goog200) +
  autolayer(meanf(goog200, h=40), PI=FALSE, series="均值") +
  autolayer(rwf(goog200, h=40), PI=FALSE, series="Naïve") +
  autolayer(rwf(goog200, drift=TRUE, h=40), PI=FALSE, series="漂移") +
  ggtitle("每日谷歌股票收盘价(截止到2013年12月6日)的预测") +
  xlab("天") + ylab("收盘价 (美元)") +
  guides(colour=guide_legend(title="预测")) +
  theme(text=element_text(family="STHeiti"))+
  theme(plot.title = element_text(hjust = 0.5))
基于谷歌公司200天的每日股票收盘价预测。

图 3.2: 基于谷歌公司200天的每日股票收盘价预测。

有时候这些最简单的方法可能会是最好的预测方法,但是在很多情况下,这些方法只是作为基准方法而不是被直接运用。也就是说,我们提出的任何预测方法都会和这些简单方法比较,以保证其预测结果优于这些简单方法,否则,新的方法就不值得考虑。