我在时间序列中使用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
我的第二个主要问题是为什么在“训练集”和“测试集”之间出现完全不同的错误,而显然我使用完全相同的数据。
答案 0 :(得分:2)
accuracy
中的第二个参数应该是与预测同期的未来数据。将历史数据放在那里会导致错误,因为它来自预测期之前。
在第二个示例中,您尝试通过更改频率属性来欺骗accuracy
。 accuracy
将尝试在预测与您在第二个参数中传递的“未来”数据之间找到重叠的观察窗口。在这种情况下,由于频率属性不同,仅使用了一部分数据。
accuracy()
帮助文件中的示例显示了如何正确使用该功能。