12.5 总和的区间预测

一个常见的问题是使用一个适合个体数据预测的模型来对若干时间段的总和进行预测。例如,你可能有每月的数据,但希望预测下一年的总和。或者你可能有每周的数据,并且想要预测未来四周的总和。

如果点预测是均值,那么把它们加起来就能很好地估计总和。但是由于预测误差之间存在相关性,想要得到预测区间会更加复杂。

一个通用的解决方案是使用模拟数据。这里有一个将 ETS 模型应用于澳大利亚月度天然气生产数据的例子,假设我们希望预测未来6个月的天然气总需求。

# First fit a model to the data
fit <- ets(gas/1000)
# Forecast six months ahead
fc <- forecast(fit, h=6)
# Simulate 10000 future sample paths
nsim <- 10000
h <- 6 
sim <- numeric(nsim)
for(i in seq_len(nsim))
  sim[i] <- sum(simulate(fit, future=TRUE, nsim=h))
meanagg <- mean(sim)

模拟数据预测结果的平均值非常接近个体预测值的总和:

sum(fc[["mean"]][1:6])
#> [1] 281.8
meanagg
#> [1] 281.7

预测区间也很容易得到:

#80% interval:
quantile(sim, prob=c(0.1, 0.9))
#> 10% 90% 
#> 263 301
#95% interval:
quantile(sim, prob=c(0.025, 0.975))
#>  2.5% 97.5% 
#> 254.1 311.4