使用预测准确度函数

时间:2014-03-02 20:28:18

标签: r time-series forecasting

我在时间序列中使用forecast命令。

使用accuracy函数时,我会收到奇怪的错误和我不理解的结果。

例如,当我执行以下操作时:

sinData <- ts(sin(2*pi*seq(from=0.01, to=10, by=0.01)), frequency=100)
fcast <- forecast(sinData)
accuracy(fcast, sinData)

我收到错误:

Error in window.default(x, ...) : 'start' cannot be after 'end'

我的第一个问题是为什么会出现此错误?

当我执行以下操作时:

sinData <- ts(sin(2*pi*seq(from=0.01, to=10, by=0.01)), frequency=100)
fcast <- forecast(sinData)
sinData <- ts(sin(2*pi*seq(from=0.01, to=10, by=0.01)))
accuracy(fcast, sinData)

我明白了:

                                ME           RMSE             MAE        MPE      MAPE         MASE ACF1 Theil's U
Training set         -7.570495e-18   1.080575e-15   6.783189e-16  -0.1144996  1.493135 1.065851e-15   NA        NA
Test set              5.669237e-01   5.669761e-01   5.669237e-01  85.9202023 85.920202 7.316031e+14 -0.5  11.86708

我的第二个主要问题是为什么在“训练集”和“测试集”之间出现完全不同的错误,而显然我使用完全相同的数据。

1 个答案:

答案 0 :(得分:2)

  1. accuracy中的第二个参数应该是与预测同期的未来数据。将历史数据放在那里会导致错误,因为它来自预测期之前。

  2. 在第二个示例中,您尝试通过更改频率属性来欺骗accuracyaccuracy将尝试在预测与您在第二个参数中传递的“未来”数据之间找到重叠的观察窗口。在这种情况下,由于频率属性不同,仅使用了一部分数据。

  3. accuracy()帮助文件中的示例显示了如何正确使用该功能。