评估非季节性方法的预测准确度
在数据科学中,训练集用于发现可能的关系,测试集用于检验这些潜在关系的强度。将数据集拆分为这两部分时,通常会为训练分配更多数据,而为测试分配较少数据。
可以用来创建训练集和测试集的一个函数是 subset()。该函数返回时间序列的一个子集,其中可选参数 start 和 end 使用索引值指定。
> # x 是数值向量或时间序列
> # 取第 101 到 500 个观测值
> train <- subset(x, start = 101, end = 500, ...)
> # 取前 500 个观测值
> train <- subset(x, end = 500, ...)
正如您在视频中所见,另一个函数 accuracy() 会在给定预测值和对应的实际观测值时,计算多种预测准确度指标。如果您提供的观测值多于被预测的那些,它也能智能地找到相关的观测值。
> # f 是 "forecast" 类的对象
> # x 是数值向量或时间序列
> accuracy(f, x, ...)
提供的准确度度量包括均方根误差(RMSE),即均方误差(MSE)的平方根。最小化 RMSE(对应提高准确度)与最小化 MSE 等价。
预加载的时间序列 gold 包含 1108 天的每日黄金价格。这里,您将使用前 1000 天作为训练集,并对剩余的 108 天进行预测。随后,将把这些预测与这 108 天的实际值进行比较。所用的简单预测函数包括您在本章前面使用过的 naive(),以及 meanf()(其预测等于所有观测的平均值)。两者都需要指定关键字参数 h(即您想要预测的数值个数)。
本练习是课程的一部分
R 中的预测
练习说明
- 使用
subset()为gold创建包含前 1000 个观测值的训练集,命名为train。 - 使用
naive()对包含其余数据的测试集进行预测,并将结果赋给naive_fc。相应设置h。 - 使用
meanf()对相同的测试集进行预测,并将结果赋给mean_fc。相应设置h。 - 使用
accuracy()函数比较两种方法的预测准确度指标。 - 根据上述结果,将准确度更高的预测存为
bestforecasts。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Create the training data as train
train <- subset(___, end = ___)
# Compute naive forecasts and save to naive_fc
naive_fc <- naive(___, h = ___)
# Compute mean forecasts and save to mean_fc
mean_fc <- meanf(___, h = ___)
# Use accuracy() to compute RMSE statistics
accuracy(___, gold)
___(___, gold)
# Assign one of the two forecasts as bestforecasts
bestforecasts <- ___