【问题标题】:Definition of ARIMA output in rr中ARIMA输出的定义
【发布时间】:2014-10-08 11:22:59
【问题描述】:

我被要求尝试从 ARIMA 模型中找到参数 (µ,Φ,θ) 我最初认为这只是 ARIMA 模型的顺序,例如 (1,0,1)(1,1, 0) 但我的经理说这不是他想要的。

运行 ARIMA 模型后,我查看了它的摘要,发现了 phi、theta 和 delta 的值,但值不止一个,我非常不确定我需要哪个值。

这是我找到值的方法:

M<-matrix(c("08Q1", "08Q2", "08Q3", "08Q4", "09Q1", "09Q2", "09Q3", "09Q4", "10Q1", "10Q2", "10Q3", "10Q4", "11Q1", "11Q2", "11Q3", "11Q4", "12Q1",  "12Q2", "12Q3", "12Q4", "13Q1", "13Q2", "13Q3", "13Q4", "14Q1", "14Q2", 79160.56,  91759.73, 91186.48, 106353.82,  70346.47,  80279.15,  82611.60, 131392.72, 93798.99, 105944.78, 103913.13, 154530.69, 110157.40, 117416.09, 127423.42, 156752.00,120097.81, 121307.75, 115021.12, 150657.83, 113711.53, 115353.14, 112701.98, 154319.18,116803.54, 118352.54),ncol=2,byrow=FALSE)
deltaT<-1/4
horiz<-4
startY<-c(8,1)
aslog<-"y"
Nu<-M[,length(M[1,])]
Nu<-as.numeric(Nu)
Nu<-ts(Nu,deltat=deltaT,start=startY)
Mdates<-as.character(M[,1])
if(aslog=="y")
  {N<-log(Nu)} else
    {N<-Nu}
library(forecast)  
library(tseries)
max.sdiff <- 3
arima.force.seasonality <- "n"
suppressWarnings(kpssW <- kpss.test(N, null="Level"))
suppressWarnings(ppW <- tryCatch({ppW <- pp.test(N, alternative = "stationary")},  error = function(ppW) {ppW <- list(error = "TRUE", p.value = 0.99)}))
suppressWarnings(adfW <- adf.test(N, alternative = "stationary", k = trunc((length(N)-1)^(1/3))))
if(kpssW$p.value < 0.05 | ppW$p.value > 0.05 | adfW$p.value > 0.05) {ndiffsW = 1} else {ndiffsW = 0}
aaw <- auto.arima(N, max.D= max.sdiff, d=ndiffsW, seasonal=TRUE, 
                  allowdrift=FALSE, stepwise=FALSE, trace=FALSE, seasonal.test="ch")
orderWA <- c(aaw$arma[1], aaw$arma[6] , aaw$arma[2])
orderWS <- c(aaw$arma[3], aaw$arma[7] , aaw$arma[4])
if(sum(aaw$arma[1:2])==0) {orderWA[1] <- 1} else {NULL}
if(arima.force.seasonality == "y") {if(sum(aaw$arma[3:4])==0) {orderWS[1] <- 1} else {NULL}} else {NULL}
ArimaW1 <- Arima(N, order= orderWA, seasonal=list(order=orderWS), method="ML")
ArimaW1$model

这显示了 5 个不同的 phi 值,4 个用于 theta,1 个用于 Delta。我怎么知道哪个是正确的参数值?或者我是否使用所有这些来显示参数,并在我的数据的截断版本上强制使用这些参数来测试拟合的准确性?

【问题讨论】:

    标签: r definition forecasting


    【解决方案1】:

    您可以使用coef 函数获得拟合系数:

    coef(ArimaW1)
        ar1       sar1       sma1 
    -0.1535883  0.9898988 -0.6517680 
    

    这些等于运行summary(ArimaW1) 或仅运行ArimaW1 时显示的系数。如果模型的形式为 ARIMA(p,d,q)(P,D,Q)[m],则:

    • p = ar 系数
    • q = ma 系数
    • P = sar 系数
    • Q = sma 系数

    作为summary(ArimaW1) 输出一部分的拟合精度可以使用forecast::accuracy 函数进行评估:

    accuracy(ArimaW1)
                          ME      RMSE        MAE        MPE      MAPE      MASE
    Training set 0.005871904 0.0812424 0.05851961 0.04856836 0.5022439 0.3297573
                       ACF1
    Training set 0.03194607 
    

    我认为(即猜测)您在ArimaW1$model 中找到的多个系数值是通过 MLE 拟合的剩余部分。如果您运行debugonce(Arima),您可以看到在拟合mod 中的系数(返回为fit$model)时会发生变化(但我认为只有一两次)。

    顺便说一句,如果您正在寻找使用 R 的季节性 ARIMA 模型的快速介绍,Forecasting: Principles And Practice 值得推荐。

    【讨论】:

      猜你喜欢
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 2015-06-01
      相关资源
      最近更新 更多