R:让我了解一下时间序列预测包上的准确度函数



我打算为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

请帮我解决我做错了什么,让我明白我需要做些什么来纠正错误。

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

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包(v0.3.0(于2020-09-24创建

相关内容

  • 没有找到相关文章

最新更新