R导入ARIMA模型输出以用于预测

R导入ARIMA模型输出以用于预测,r,arima,forecast,R,Arima,Forecast,我使用auto.ARIMA函数为91个模型进行了ARIMA建模。输出位于一个列表列表中 一个模型的输出结构如下所示: List of 19 $ coef : Named num [1:8] -3.17e-01 -3.78e-01 -8.02e-01 -5.39e+04 -1.33e+05 ... ..- attr(*, "names")= chr [1:8] "ar1" "ar2" "ma1" "Price.Diff" ... $ sigma2

我使用auto.ARIMA函数为91个模型进行了ARIMA建模。输出位于一个列表列表中

一个模型的输出结构如下所示:

    List of 19
      $ coef     : Named num [1:8] -3.17e-01 -3.78e-01 -8.02e-01 -5.39e+04 -1.33e+05 ...
      ..- attr(*, "names")= chr [1:8] "ar1" "ar2" "ma1" "Price.Diff" ...
      $ sigma2   : num 6.37e+10
      $ var.coef : num [1:8, 1:8] 1.84e-02 8.90e-03 -7.69e-03 -8.80e+02 2.83e+03 ...
      ..- attr(*, "dimnames")=List of 2
      .. ..$ : chr [1:8] "ar1" "ar2" "ma1" "Price.Diff" ...
      .. ..$ : chr [1:8] "ar1" "ar2" "ma1" "Price.Diff" ...
      $ mask     : logi [1:8] TRUE TRUE TRUE TRUE TRUE TRUE ...
      $ loglik   : num -1189
      $ aic      : num 2395
      $ arma     : int [1:7] 2 1 0 0 1 1 0
      $ residuals: Time-Series [1:87] from 1 to 87: 1810 -59503 263294 240970 94842 ...
      $ call     : language auto.arima(y = x[, 2], stepwise = FALSE, approximation = FALSE, xreg = x[, 3:ncol(x)], x = list(x = c(1856264.57,| __truncated__ ...
      $ series   : chr "x[, 2]"
      $ code     : int 0
      $ n.cond   : int 0
      $ nobs     : int 86
      $ model    :List of 10
      ..$ phi  : num [1:2] -0.317 -0.378
      ..$ theta: num -0.802
      ..$ Delta: num 1
      ..$ Z    : num [1:3] 1 0 1
      ..$ a    : num [1:3] -599787 284456 1887763
      ..$ P    : num [1:3, 1:3] 0.00 0.00 -4.47e-23 0.00 3.33e-16 ...
      ..$ T    : num [1:3, 1:3] -0.317 -0.378 1 1 0 ...
      ..$ V    : num [1:3, 1:3] 1 -0.802 0 -0.802 0.643 ...
      ..$ h    : num 0
      ..$ Pn   : num [1:3, 1:3] 1.00 -8.02e-01 -1.83e-23 -8.02e-01 6.43e-01 ...
      $ bic      : num 2417
      $ aicc     : num 2398
      $ xreg     : Time-Series [1:87, 1:5] from 1 to 87: -0.866 -0.466 -1.383 -0.999 -0.383 ...
      ..- attr(*, "dimnames")=List of 2
      .. ..$ : NULL
      .. ..$ : chr [1:5] "Price.Diff" "Easter" "Christmas" "High.Week" ...
      $ x        : Time-Series [1:87] from 1 to 87: 1856265 1393925 2200962 2209996 2161707 ...
      $ fitted   : Time-Series [1:87] from 1 to 87: 1854455 1453429 1937668 1969026 2066864 ...
      - attr(*, "class")= chr [1:3] "ARIMA" "forecast_ARIMA" "Arima"
打印时,输出如下所示:

Series: x[, 2] 
Regression with ARIMA(2,1,1) errors 

Coefficients:
          ar1      ar2      ma1      Price.Diff      Easter      Christmas      High.Week      Low.Week
         -0.3170  -0.3777  -0.8017  -53931.11       -133187.55  -53541.62      -347146.59     216202.71
s.e.      0.1356   0.1319   0.1069   28195.33        68789.25    23396.62      -74115.78      66881.15

sigma^2 estimated as 6.374e+10:  log likelihood=-1188.69
AIC=2395.38   AICc=2397.75   BIC=2417.47
为了将模型导出为文本文件格式,我编写了以下内容:

# export model outputs to newly created folder
for(i in 1:length(ts_outputs)){
 sink(paste0(names(ts_outputs[i]), ".txt"))
 print(ts_outputs[i])
 sink()
}
这是可行的,可以查看模型输出本身,但是我需要能够将模型输出导入到R中,以使用它们来预测我的时间序列的未来

我假设在重新导入后需要将它们放回原始结构中

是否有一个特定的包已经编写完成了这项工作

文本文件是原始导出的方式吗

我相信下面是forecast包的源代码,它编写了输出():

if(长度(x$coef)>0){
类别(“\n效率:\n”)

coef是否要存储它们以避免再次运行估算?在这种情况下,将其保存为.RData文件如何?
save(ts_outputs,file=“ts_outputs.RData”)
@YalDan最终目标是两个vba宏调用两个单独的R脚本,一个用于估算,一个用于预测。所有计算都不会在R中执行。我将尝试您推荐的保存/加载功能。感谢您的支持help@YalDan工作起来很有魅力!感谢你的帮助你想把它们储存起来,这样你就不会是否需要再次运行估算?在这种情况下,将其保存为.RData文件如何?
save(ts_outputs,file=“ts_outputs.RData”)
@YalDan最终目标是两个vba宏调用两个单独的R脚本,一个用于估算,一个用于预测。所有计算都不会在R中执行。我将尝试您推荐的保存/加载功能。感谢您的支持help@YalDan很有魅力!感谢你的帮助
        if (length(x$coef) > 0) {
                cat("\nCoefficients:\n")
                coef <- round(x$coef, digits=digits)
                if (se && nrow(x$var.coef)) {
                    ses <- rep(0, length(coef))
                    ses[x$mask] <- round(sqrt(diag(x$var.coef)), digits=digits)
                    coef <- matrix(coef, 1, dimnames=list(NULL, names(coef)))
                    coef <- rbind(coef, s.e.=ses)
                }
                print.default(coef, print.gap=2)
            }
            cm <- x$call$method
            if (is.null(cm) || cm != "CSS")
            {
                cat("\nsigma^2 estimated as ", format(x$sigma2, digits=digits),
                    ":  log likelihood=", format(round(x$loglik, 2)),"\n",sep="")
                npar <- length(x$coef) + 1
                nstar <- length(x$residuals) - x$arma[6] - x$arma[7]*x$arma[5]
                bic <- x$aic + npar*(log(nstar) - 2)
                aicc <- x$aic + 2*npar*(nstar/(nstar-npar-1) - 1)
                cat("AIC=", format(round(x$aic, 2)), sep="")
                cat("   AICc=", format(round(aicc, 2)), sep="")
                cat("   BIC=", format(round(bic, 2)), "\n",sep="")
            }
            else cat("\nsigma^2 estimated as ", format(x$sigma2, digits=digits),
                ":  part log likelihood=", format(round(x$loglik, 2)),
                "\n", sep="")
            invisible(x)
        }