开始使用免费开始使用

在非季节性数据上比较 auto.arima() 与 ets()

AICc 统计量适用于在同一模型类别中进行选择。例如,您可以用它来选择一个 ETS 模型,或选择一个 ARIMA 模型。但是,不能用它来比较 ETS 与 ARIMA,因为它们属于不同的模型类别。

相反,您可以使用时间序列交叉验证,在 austa 数据上比较一个 ARIMA 模型与一个 ETS 模型。由于 tsCV() 需要返回预测对象的函数,您将先设置一些简单函数来拟合模型并返回预测。tsCV() 的参数是一个时间序列、预测函数,以及预测步长 h。请参考第二章中的这段代码:

e <- matrix(NA_real_, nrow = 1000, ncol = 8)
for (h in 1:8)
  e[, h] <- tsCV(goog, naive, h = h)
  ...

另外回顾一下,R 中的管道操作符会将左侧的值依次作为参数传递给右侧,从左到右逐步执行。下面是基于您在前一章看到的代码的一个示例:

# 使用 ets() 对 lynx 序列建模,并绘制 20 年的预测
lynx %>% ets() %>% forecast(h = 20) %>% autoplot()

在本练习中,您将比较两个应用于 austa 的预测函数的 MSE,并对生成最佳预测的函数进行预测与绘图。与之前一样,austa 已加载到您的工作区。

本练习是课程的一部分

R 中的预测

查看课程

练习说明

  • 完成 farima() 函数,使其对 auto.arima() 的结果进行预测。参照 fets() 中已写好的代码结构(其对 ets() 执行相同操作)。
  • 使用 tsCV()austa 的 ETS 模型计算一步预测误差,并将结果保存为 e1
  • 使用 tsCV()austa 的 ARIMA 模型计算一步预测误差,并将结果保存为 e2
  • 分别计算每个模型类别的交叉验证 MSE,并去除缺失值。若不记得如何计算 MSE,请参考上一章。
  • 使用表现最优的模型类别,对 austa 生成并绘制 10 年期的未来预测。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Set up forecast functions for ETS and ARIMA models
fets <- function(x, h) {
  forecast(ets(x), h = h)
}
farima <- function(x, h) {
  forecast(___, ___)
}

# Compute CV errors for ETS on austa as e1
e1 <- tsCV(austa, ___, ___)

# Compute CV errors for ARIMA on austa as e2
e2 <- tsCV(___, ___, ___)

# Find MSE of each model class
mean(___, ___)
mean(___, ___)

# Plot 10-year forecasts using the best model class
austa %>% ___ %>% ____
编辑并运行代码