当使用 auto.arima 时,我们得到最好的 pd 和 q 值。有没有办法将这些值动态发送到 arima() 函数中?

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?

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() 函数,而无需像上面那样明确输入。

你应该这样做:

下面是一个小例子。

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

有了这个你就可以从你的 auto.arima 中分离出 p q 和 d 的值。

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

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

这似乎有效。

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 部分中的特殊参数。