• 预测:方法与实践
  • 引言
  • 1 入门
    • 1.1 什么可以被预测?
    • 1.2 预测、计划和目标
    • 1.3 决定预测什么
    • 1.4 预测数据和方法
    • 1.5 案例
    • 1.6 预测过程的主要步骤
    • 1.7 统计预测观点
    • 1.8 练习
    • 1.9 扩展阅读
  • 2 时间序列图形
    • 2.1 ts 对象
    • 2.2 时间图
    • 2.3 时间序列模式
    • 2.4 季节图
    • 2.5 子系列季节图
    • 2.6 散点图
    • 2.7 滞后图
    • 2.8 自相关
    • 2.9 白噪声
    • 2.10 练习
    • 2.11 拓展阅读
  • 3 预测者的工具集
    • 3.1 一些简单的预测方法
    • 3.2 变换和调整
    • 3.3 残差诊断
    • 3.4 评估预测精度
    • 3.5 预测区间
    • 3.6 R中的预测包
    • 3.7 练习
    • 3.8 拓展阅读
  • 4 判断预测
    • 4.1 谨防局限性
    • 4.2 主要原则
    • 4.3 德尔菲法
    • 4.4 类比预测
    • 4.5 情景预测
    • 4.6 新产品预测
    • 4.7 判断性调整
    • 4.8 拓展阅读
  • 5 时间序列回归模型
    • 5.1 线性模型
    • 5.2 最小二乘估计
    • 5.3 回归模型的评估
    • 5.4 高效的预测变量
    • 5.5 预测变量的筛选
    • 5.6 回归预测
    • 5.7 矩阵方程
    • 5.8 非线性回归
    • 5.9 相关关系、因果关系和预测
    • 5.10 练习
    • 5.11 拓展阅读
  • 6 时间序列分解
    • 6.1 时间序列成分
    • 6.2 移动平均
    • 6.3 经典时间序列分解
    • 6.4 X11 分解法
    • 6.5 SEATS 分解法
    • 6.6 STL 分解法
    • 6.7 趋势性和季节性的程度测定
    • 6.8 分解法预测
    • 6.9 练习
    • 6.10 拓展阅读
  • 7 指数平滑
    • 7.1 简单的指数平滑
    • 7.2 趋势法
    • 7.3 Holt-Winters季节性方法
    • 7.4 指数平滑法的分类
    • 7.5 创新的指数平滑状态空间模型
    • 7.6 模型估计和选择
    • 7.7 使用ETS模型预测
    • 7.8 练习
    • 7.9 拓展阅读
  • 8 ARIMA 模型
    • 8.1 平稳性和差分
    • 8.2 延迟算子
    • 8.3 自回归模型
    • 8.4 移动平均模型
    • 8.5 非季节性ARIMA模型
    • 8.6 估计和阶数选择
    • 8.7 在R中建立ARIMA模型
    • 8.8 预测
    • 8.9 季节性ARIMA模型
    • 8.10 ARIMA vs ETS
    • 8.11 练习
    • 8.12 拓展阅读
  • 9 动态回归模型
    • 9.1 模型估计
    • 9.2 ARIMA 误差回归在 R 中的实现
    • 9.3 模型预测
    • 9.4 随机趋势和确定性趋势
    • 9.5 动态谐波回归
    • 9.6 滞后预测变量
    • 9.7 练习
    • 9.8 拓展阅读
  • 10 预测分层或分组时间序列
    • 10.1 分层时间序列
    • 10.2 分组时间序列
    • 10.3 自下而上的方法
    • 10.4 自上而下的方法
    • 10.5 中间突破方法
    • 10.6 映射矩阵
    • 10.7 最优调和方法
    • 10.8 练习
    • 10.9 拓展阅读
  • 11 高级预测方法
    • 11.1 复杂季节性
    • 11.2 向量自回归
    • 11.3 神经网络模型
    • 11.4 Bootstrapping 和 bagging
    • 11.5 练习
    • 11.6 拓展阅读
  • 12 实际预测问题
    • 12.1 周数据,日数据及日以下数据
    • 12.2 计数时间序列
    • 12.3 限定预测结果范围
    • 12.4 预测组合
    • 12.5 总和的区间预测
    • 12.6 向后预测
    • 12.7 长期和短期的时间序列
    • 12.8 训练集和测试集预测
    • 12.9 处理缺失值和离群值
    • 12.10 拓展阅读
  • 附录:使用 R
  • 关于作者
  • 关于译者
  • 参考文献
  • Published by OTexts™ with bookdown

预测: 方法与实践

9.4 随机趋势和确定性趋势

建模时,有两种不同的线性趋势建模方法。其中 确定性趋势 可通过以下回归模型获得: \[ y_t = \beta_0 + \beta_1 t + \eta_t, \] 其中 \(\eta_t\) 是ARMA过程。 随机趋势 可通过以下模型获得: \[ y_t = \beta_0 + \beta_1 t + \eta_t, \] 其中 \(\eta_t\) 为差分阶数为1的ARIMA过程。该模型也可写为: \[ y_t = y_{t-1} + \beta_1 + \eta_t'. \] 其中 \(\eta_t'\) 为ARMA过程。

这类似于8.1节中介绍的带漂移的随机游走过程,但是此处的误差为 ARMA 过程而不是简单的白噪声。

虽然这些模型看起来非常相似(它们只是 \(\eta_t\) 的差分阶数不同),但这些模型的预测方式却截然不同。

示例:澳大利亚的国际游客量

autoplot(austa) + xlab("年份") +
  ylab("人数(百万人)") +
  ggtitle("澳大利亚的年度国际游客量")+
  theme(text = element_text(family = "STHeiti"))+
  theme(plot.title = element_text(hjust = 0.5))
1980到2015年间澳大利亚的年度游客量。

图 9.7: 1980到2015年间澳大利亚的年度游客量。

图9.7为从1980年到2015年每年到澳大利亚的国际游客总数。我们分别采用确定性趋势模型和随机趋势模型拟合数据。

确定性趋势模型如下所示:

trend <- seq_along(austa)
(fit1 <- auto.arima(austa, d=0, xreg=trend))
#> Series: austa 
#> Regression with ARIMA(2,0,0) errors 
#> 
#> Coefficients:
#>         ar1     ar2  intercept   xreg
#>       1.113  -0.380      0.416  0.171
#> s.e.  0.160   0.158      0.190  0.009
#> 
#> sigma^2 = 0.0298:  log likelihood = 13.6
#> AIC=-17.2   AICc=-15.2   BIC=-9.28

因此,模型为 \[\begin{align*} y_t &= 0.42 + 0.17 t + \eta_t \\ \eta_t &= 1.11 n_{t-1} -0.38 n_{t-2} + \varepsilon_t\\ \varepsilon_t &\sim \text{NID}(0,0.0298). \end{align*}\]

模拟预测结果为每年增长0.17百万人次国际游客。

随机趋势模型估计结果如下所示:

(fit2 <- auto.arima(austa, d=1))
#> Series: austa 
#> ARIMA(0,1,1) with drift 
#> 
#> Coefficients:
#>         ma1  drift
#>       0.301  0.173
#> s.e.  0.165  0.039
#> 
#> sigma^2 = 0.0338:  log likelihood = 10.62
#> AIC=-15.24   AICc=-14.46   BIC=-10.57

该模型可表示为\[y_t-y_{t-1} = 0.17 + \eta'_t\]其等价于 \[\begin{align*} y_t &= y_0 + 0.17 t + \eta_t \\ \eta_t &= n_{t-1} + 0.30 \varepsilon_{t-1} + \varepsilon_{t}\\ \varepsilon_t &\sim \text{NID}(0,0.0338) \end{align*}\]

在本例中,随机趋势模型预测结果也是每年增长0.17百万人次国际游客。尽管两个模型的预测值相同,但是图9.8表明,两个模型的预测区间是不相同的。由于随机趋势模型中预测非平稳,因此随机误差模型的预测区间较大。

fc1 <- forecast(fit1,
  xreg = cbind(trend = length(austa) + 1:10))
#> Warning in forecast.forecast_ARIMA(fit1, xreg = cbind(trend
#> = length(austa) + : xreg contains different column names
#> from the xreg used in training. Please check that the
#> regressors are in the same order.
fc2 <- forecast(fit2, h=10)
autoplot(austa) +
  autolayer(fc2, series="随机趋势") +
  autolayer(fc1, series="确定性趋势") +
  ggtitle("确定性趋势模型和随机趋势模型的而预测结果") +
  xlab("年份") + ylab("澳大利亚的游客(百万)") +
  guides(colour=guide_legend(title="模型趋势"))+
  theme(text = element_text(family = "STHeiti"))+
  theme(plot.title = element_text(hjust = 0.5))
分别采用确定性趋势模型和随机趋势模型预测澳大利亚的年度国际游客。

图 9.8: 分别采用确定性趋势模型和随机趋势模型预测澳大利亚的年度国际游客。

在确定性趋势模型中,隐含的假设为趋势的斜率不随时间改变;而在随机趋势模型中,趋势的斜率会随着时间的变化而变化。在预测时,估计的增长假设为历史平均时期的平均增长而不是历史的增长率。因此,对于长期的预测范围,采用随机趋势模型的预测区间较大,因此采用随机趋势模型更加合理。