【问题标题】:using forecast accuracy function使用预测精度函数
【发布时间】:2014-03-02 20:28:17
【问题描述】:

我在我的时间序列上使用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

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

【问题讨论】:

    标签: r time-series forecasting


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

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

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

    【讨论】:

    • 您的回答对我帮助很大。但是,根据您的回答,准确性是为了测试对同一数据集的真实未来数据的预测。我的目标是在来自相同传感器和不同传感器的不同数据集上测试我的训练模型,并根据它们的准确性结果区分它们。这不是你建议的方式吗?有没有更好的方法来使用预测包来做到这一点?
    猜你喜欢
    • 2015-11-26
    • 2017-09-05
    • 2020-06-01
    • 2020-09-29
    • 2017-02-26
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 2019-07-22
    相关资源
    最近更新 更多