【问题标题】:Creating ARIMA model with a minimum value of forecast error in R在 R 中创建具有最小预测误差的 ARIMA 模型
【发布时间】:2020-01-26 12:04:50
【问题描述】:

我使用auto.arima()函数建立ARIMA模型,然后计算预测精度:

library(fpp2)

data("AirPassengers")

train <- window(AirPassengers, end = c(1959, 12))
test <- window(AirPassengers, start = 1960)

ARIMA <- auto.arima(train, lambda = 0, biasadj = TRUE)
ARIMAf <- forecast(ARIMA, h = 12)

accuracy(ARIMAf, test)
                     ME      RMSE       MAE        MPE     MAPE      MASE       ACF1 Theil's U
Training set   0.579486  9.907267  7.483159  0.1187348 2.880429 0.2457523 0.01227544        NA
Test set     -16.986385 23.931703 18.527682 -3.9334909 4.182395 0.6084625 0.04802038 0.5336134

auto.arima() 函数将AICAICcBIC 的值最小化,但我想在测试集上构建一个具有最小值(例如RMSE)的 ARIMA 模型。 例如,通过开发一组具有不同参数值的 ARIMA 模型,以便在测试集上找到具有最小 RMSE 的模型。 请帮助我了解如何做到这一点。

【问题讨论】:

    标签: r algorithm loops forecasting arima


    【解决方案1】:

    ARIMA 模型建立在训练数据之上,通常使用最小二乘法来最大化其对训练数据的拟合。它使用 AIC 或类似方法在候选模型之间做出决定,以防止过度拟合。

    最小化模型和测试数据之间的 RMSE 取决于两件事:模型和测试数据。除非模型也知道测试数据,否则您不能要求模型本身降低 RMSE。但是预测模型的全部意义在于你想问一个变量的未来值是什么,所以你当然不能将它包含在模型中。

    当您考虑它时,您要问的是“我如何让我的模型面向未来?”

    这并不是说您不能通过更改 arima.auto 的参数来降低测试数据的 RMSE,但您只能通过将输出与 test 数据进行比较来做到这一点。

    如果您想检查不同的参数并查看哪个模型最适合测试数据,您可以像这样自动拟合多个模型:

    test_seasons <- function(train, test)
    {
      seasonal = c("seas", "ocsb", "hegy", "ch")
      RMSE <- 1000
      for(i in 1:3)
      {
        latest_model <- auto.arima(train, lambda = 0,  biasadj = TRUE, seasonal.test = seasonal[i])
        latest_RMSE <- accuracy(forecast(latest_model, h = 12), test)[2, 2]
        if(latest_RMSE < RMSE)
        {
          RMSE <- latest_RMSE
          output <- latest_model
          best_season <- seasonal[i]
        }
      }
      cat("The optimal seasonal.test parameter was \"", best_season, "\" (RMSE ",
          RMSE, ")", sep = "")
    }
    

    所以你可以这样做

    test_seasons(train, test)
    # The optimal seasonal.test parameter was "seas" (RMSE 18.78836)
    

    但是,如果您想专注于最佳数值参数,这种方法将非常缓慢。

    从统计的角度来看,我也会谨慎选择要使用的模型,因为它预测一年的准确程度。如果您有额外一年的数据,使用它的最佳方法是将其包含在您的模型中,而不是手动调整参数。

    【讨论】:

    • 我想通过实现一种算法来自动创建具有不同参数的多个模型,然后确定测试集上具有最低 RMSE 的模型来获得最小 RMSE
    猜你喜欢
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 2020-09-09
    相关资源
    最近更新 更多