使用 tsCV() 进行时间序列交叉验证
tsCV() 函数用于计算时间序列的交叉验证误差。它需要您指定时间序列、预测方法以及预测步长。下面是视频中使用的示例:
> e = tsCV(oil, forecastfunction = naive, h = 1)
在这里,您将使用 tsCV() 结合 naive() 方法对 goog 数据计算并绘制最多前进 8 步的 MSE 值。练习使用的是 ggplot2 作图,您可能还不熟悉,但我们已提供足够的代码片段,您可以据此补全剩余部分。
请务必参考讲解中关于 tsCV() 的幻灯片。goog 数据已加载到您的工作区。
本练习是课程的一部分
R 中的预测
练习说明
- 使用
goog数据并调用naive()进行预测,计算前进至多 8 步的交叉验证误差。将结果赋值给e。 - 计算每个预测步长对应的 MSE 值,并通过指定第二个参数来移除
e中的缺失值。我们已提供用于计算 MSE 的表达式。 - 将得到的 MSE 值(
y)与预测步长(x)作图。请回忆您对函数的理解:如果在函数参数列表中提供了MSE = mse,那么mse应该是函数外部工作区中已存在的对象,而MSE则是您在函数内部用来引用该对象的变量名。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Compute cross-validated errors for up to 8 steps ahead
e <- tsCV(___, forecastfunction = ___, h = ___)
# Compute the MSE values and remove missing values
mse <- colMeans(e^2, na.rm = ___)
# Plot the MSE values against the forecast horizon
data.frame(h = 1:8, MSE = mse) %>%
ggplot(aes(x = h, y = ___)) + geom_point()