【问题标题】:Getting Error while forecasting on test dataset在测试数据集上进行预测时出错
【发布时间】:2019-12-25 00:20:04
【问题描述】:

这里是预测的新手。 我有日期从 01-2018 到 08-2019 的数据。数据集以每周为间隔。我将数据集拆分为训练数据集和测试数据集,然后尝试使用 accuracy 函数检查模型的准确性,但我在这里收到以下错误:

window.default(x, ...) 中的错误:“开始”不能在“结束”之后 另外:警告信息: 在 window.default(x, ...) : 'start' 值没有改变

任何帮助将不胜感激

数据集: Dataset

    library(forecast)
    tsCM=ts(df$value, start=c(2018,1,5),end=c(2019,8,2),frequency = 52 )
    traints=window(tsCM, start=c(2018,1), end=c(2018,12))
    testts=window(tsCM,start=c(2019,1),end=c(2019,8))

    mmean=meanf(traints, h=30)
    nnaive=naive(traints, h=30)
    seanaive=snaive(traints, h=30)

    accuracy(mmean, testts)

window.default(x, ...) 中的错误:“开始”不能在“结束”之后 另外:警告信息: 在 window.default(x, ...) : 'start' 值没有改变

【问题讨论】:

    标签: r time-series forecasting


    【解决方案1】:

    ts() 中的 startend 参数可以采用长度为 1 或 2,而不是 3 的数字向量。此处忽略第三个参数,因此您的 tsCM 开始于 c(2018,1) 或第 1 周2018. end 参数类似地解释为 c(2019,8),因此您的时间序列长度只有 60 个观察值。其余的观察被忽略。

    traints 对象包含 12 个观测值,您预测提前 30 步,即到 2018 年的第 42 周。因此,当您与 testts 进行比较时,没有重叠的观测值。

    【讨论】:

    • 感谢您在这里清除我的概念 Rob!。我有一个后续问题。所以我的时间序列是每周间隔。 c() 是否取决于频率?因此,如果我的频率为 12,那么 c(2018,1) 将意味着 2018 年的第 1 个月?如果我的频率是小数会怎样?每周频率不应该是365/7
    • 是的,365/7 会比 52 更准确。您可以考虑使用我们的新软件包集,它们更适合处理每周和更高频率的数据。参见 tidyverts.org
    猜你喜欢
    • 1970-01-01
    • 2018-05-04
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 2020-11-07
    • 2019-05-08
    相关资源
    最近更新 更多