开始使用免费开始使用

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

当数据频率高于年度时,如何创建训练集和测试集?如有需要,您可以在 window() 函数中为 start 和/或 end 使用形如 c(year, period) 的向量。您还必须确保在预测函数中使用合适的 h 值。回顾一下,h 应等于构成测试集的数据长度。

例如,如果您的数据跨度为 15 年,训练集包含前 10 年,并且您打算预测最后 5 年的数据,应使用 h = 12 * 5,而不是 h = 5,因为测试集包含 60 个按月观测值。若训练集包含前 9.5 年,而您要预测最后 5.5 年,则应使用 h = 66 以计入额外的 6 个月。

在本章的最后一个练习中,您将比较应用于季度水泥产量数据 qcement 的季节性 ARIMA 和 ETS 模型。由于该时间序列很长,您可以使用训练集和测试集,而不是时间序列交叉验证。这样要快得多。

qcement 数据已在您的工作区中可用。

本练习是课程的一部分

R 中的预测

查看课程

练习说明

  • 创建名为 train 的训练集,包含从 1988 年开始到 2007 年最后一季度为止的 qcement 数据,共 20 年;必须为 end 使用向量。剩余的数据作为测试集。
  • 将 ARIMA 和 ETS 模型分别拟合到训练数据上,并分别保存为 fit1fit2
  • 与先前练习相同,检查两个模型的残差是否为白噪声。
  • 分别为两种模型对剩余数据生成预测,保存为 fc1fc2。将 h 设为测试集中季度的总数。请注意——qcement 的最后一个观测值并不是该年的最后一季度!
  • 使用 accuracy() 函数,根据 RMSE 值找出更优的模型,并将其保存为 bettermodel

交互式实操练习

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

# Use 20 years of the qcement data beginning in 1988
train <- window(___, start = ___, end = ___)

# Fit an ARIMA and an ETS model to the training data
fit1 <- ___
fit2 <- ___

# Check that both models have white noise residuals
___
___

# Produce forecasts for each model
fc1 <- forecast(___, h = ___)
fc2 <- forecast(___, h = ___)

# Use accuracy() to find better model based on RMSE
accuracy(___, ___)
accuracy(___, ___)
bettermodel <- ___
编辑并运行代码