【问题标题】:R: Put me through on the accuracy function on forecast package for time seriesR:让我了解时间序列预测包的准确性功能
【发布时间】:2021-01-09 21:14:08
【问题描述】:

我打算为我模拟其数据的ARIMA 预测方法找到均方根误差。我的方法是使用R 完成的,因为我遵循Rob J. Hyndman 方法:

  1. 将时间序列数据分为traintest 集。
  2. 通过auto.arima()函数获取最佳模型
  3. 对未来的训练数据集进行预测,直至测试集的长度。
  4. 计算预测的RMSE

MWE

library(forecast)
n=50
phi <- 0.6
set.seed(106100125)
ar1 <- arima.sim(n, model = list(ar=phi, order = c(1, 0, 0)), sd = 1)

train <- head(ar1, round(length(ar1) * 0.8)) # Train set

test <- tail(ar1, length(ar1) - length(train)) # Test set

nfuture <- forecast(train, model = auto.arima(train), h = length(test))      # makes the `forecast of test set to the future up to length of test set

RMSE <- accuracy(test, nfuture)      # RETURN RMSE

当我在 MWE 中使用 RMSE 时,我得到了 0。但是当我打电话给testnfuture 时,我得到了

#[1]  1.0470537  0.3984545  0.5811056  2.2703350 -1.0060028 -1.6126040 -0.4329466  2.1523534  1.2588265  0.7308986

#[1] 0.55281252 0.42374990 0.32481894 0.24898494 0.19085556 0.14629738 0.11214200 0.08596072 0.06589186 0.05050839

分别表明两者不相似,因此RMSE不能是0

请帮助我解决我做错了什么,并让我完成我需要做的事情来纠正它。

【问题讨论】:

    标签: r time-series forecast


    【解决方案1】:

    使用您的代码,会产生以下错误:

    RMSE <- accuracy(test, nfuture)
    #> Error in xx - ff[1:n]: non-numeric argument to binary operator
    

    您已切换参数的顺序。如果你解决了这个问题,你会得到以下结果

    accuracy(nfuture, test)
    #>                     ME      RMSE       MAE       MPE     MAPE      MASE
    #> Training set 0.1068326 0.7035255 0.5543322 146.47245 194.2587 0.9426693
    #> Test set     0.3185452 1.2399912 1.0237739  81.17983  82.4495 1.7409780
    #>                   ACF1 Theil's U
    #> Training set 0.1696878        NA
    #> Test set     0.1777069 0.9050431
    

    reprex package (v0.3.0) 于 2020 年 9 月 24 日创建

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      相关资源
      最近更新 更多