【问题标题】:While using auto.arima, we get the best p d and q values. Is there a way to dynamically send those values into arima() function?在使用 auto.arima 时,我们得到了最好的 p d 和 q 值。有没有办法将这些值动态发送到 arima() 函数?
【发布时间】:2020-05-21 05:50:26
【问题描述】:
library(forecast)
fit_m <- auto.arima(dataset1, p=0, d=1, max.d =2, max.p=2, max.q=2, 
                    max.P=2, max.Q=2, max.D=2, start.p =0, start.q=0, 
                    start.P=0, start.Q=0, stepwise=TRUE, trace=TRUE)

fit_m_final <- arima(dataset1, c(0, 1, 0), seasonal=list(order=c(0, 1, 0), 
                                                         period=12))

最好的值应该进入arima()函数而不像上面那样显式输入。

【问题讨论】:

    标签: r arima


    【解决方案1】:

    你应该这样做:

    下面是一个小例子。

    library(forecast)
    x<-auto.arima(gas)
    print(x)
    Series: gas 
    ARIMA(2,1,1)(0,1,1)[12] 
    
    Coefficients:
             ar1     ar2      ma1     sma1
          0.3756  0.1457  -0.8620  -0.6216
    s.e.  0.0780  0.0621   0.0571   0.0376
    
    sigma^2 estimated as 2587081:  log likelihood=-4076.58
    AIC=8163.16   AICc=8163.29   BIC=8183.85
    

    这样您就可以将 p q 和 d 的值与您的 auto.arima 隔离开来。

    x$arma
    [1]  2  1  0  1 12  1  1
    

    我建议您查看 Rob J Hyndman 教授和 George Athanasopoulos 教授(是预测包的作者)所写的免费 book。

    【讨论】:

      【解决方案2】:

      这似乎有效。

      library(forecast)
      

      示例 1

      auto.arima(wineind)
      # Series: wineind 
      # ARIMA(1,1,2)(0,1,1)[12] 
      # 
      # Coefficients:
      #          ar1      ma1     ma2     sma1
      #       0.4299  -1.4673  0.5339  -0.6600
      # s.e.  0.2984   0.2658  0.2340   0.0799
      # 
      # sigma^2 estimated as 5399312:  log likelihood=-1497.05
      # AIC=3004.1   AICc=3004.48   BIC=3019.57
      
      arima(wineind, 
            order=auto.arima(wineind)$arma[c(1, 6, 2)],
            seasonal=list(order=auto.arima(wineind)$arma[c(3, 7, 4)],
                          period=auto.arima(wineind)$arma[5]))
      # Call:
      #   arima(x = wineind, order = auto.arima(wineind)$arma[c(1, 6, 2)], 
      #         seasonal = list(order = auto.arima(wineind)$arma[c(3, 7, 4)], 
      #         period = auto.arima(wineind)$arma[5]))
      # 
      # Coefficients:
      #          ar1      ma1     ma2     sma1
      #       0.4299  -1.4673  0.5339  -0.6600
      # s.e.  0.2984   0.2658  0.2340   0.0799
      # 
      # sigma^2 estimated as 5266773:  log likelihood = -1497.05,  aic = 3004.1
      

      示例 2

      auto.arima(woolyrnq)
      # Series: woolyrnq
      # ARIMA(1,0,0)(0,1,1)[4]
      # 
      # Coefficients:
      #          ar1     sma1
      #       0.8077  -0.6669
      # s.e.  0.0629   0.0944
      # 
      # sigma^2 estimated as 175880:  log likelihood=-858
      # AIC=1722   AICc=1722.21   BIC=1730.23
      
      arima(woolyrnq, 
            order=auto.arima(woolyrnq)$arma[c(1, 6, 2)],
            seasonal=list(order=auto.arima(woolyrnq)$arma[c(3, 7, 4)],
                          period=auto.arima(woolyrnq)$arma[5]))
      # Call:
      #   arima(x = woolyrnq, order = auto.arima(woolyrnq)$arma[c(1, 6, 2)], 
      #         seasonal = list(order = auto.arima(woolyrnq)$arma[c(3, 7, 4)], 
      #                         period = auto.arima(woolyrnq)$arma[5]))
      # 
      # Coefficients:
      #          ar1     sma1
      #       0.8077  -0.6669
      # s.e.  0.0629   0.0944
      # 
      # sigma^2 estimated as 172819:  log likelihood = -858,  aic = 1722
      

      只需根据您的需要调整 auto.arima 部分中的特殊参数即可。

      【讨论】:

        猜你喜欢
        • 2020-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-09
        • 1970-01-01
        • 2021-09-29
        • 2022-11-12
        • 1970-01-01
        相关资源
        最近更新 更多