从R?中拟合的ARIMA模型中提取p,d,q值。

use*_*699 2 r time-series forecasting

我正在使用的时间序列预测forecast::auto.arima,我是想看看是否有一种方法来提取分配给值pdq从拟合时间序列对象(以及季节性因素以及如适用)。例:

fit <- auto.arima(mydata)
Run Code Online (Sandbox Code Playgroud)

auto.arima()选了一个ARIMA(1,1,0)(0,1,1)[12]模特。有没有一种方法来提取的值pdq(和PDQ)从适合?最后,我希望有六个自动分配的变量,如下所示:

p=1, d=1, q=0, P=0, D=1, Q=1
Run Code Online (Sandbox Code Playgroud)

李哲源*_*李哲源 6

如果您看一下?auto.arima,就会知道它返回的对象与相同stats::arima。如果进一步查看?arima,您会发现可以从$model返回值中找到所需的信息。有关详细信息,请$model参阅?KalmanLike

phi, theta: numeric vectors of length >= 0 giving AR and MA parameters.

     Delta: vector of differencing coefficients, so an ARMA model is
            fitted to ‘y[t] - Delta[1]*y[t-1] - ...’.
Run Code Online (Sandbox Code Playgroud)

因此,您应该执行以下操作:

p <- length(fit$model$phi)
q <- length(fit$model$theta)
d <- fit$model$Delta
Run Code Online (Sandbox Code Playgroud)

来自的示例?auto.arima

library(forecast)
fit <- auto.arima(WWWusage)

length(fit$model$phi)  ## 1
length(fit$model$theta)  ## 1
fit$model$Delta  ## 1

fit$coef
#       ar1       ma1 
# 0.6503760 0.5255959 
Run Code Online (Sandbox Code Playgroud)

另外(实际上更好),您可以参考以下$arma值:

arma: A compact form of the specification, as a vector giving the
      number of AR, MA, seasonal AR and seasonal MA coefficients,
      plus the period and the number of non-seasonal and seasonal
      differences.
Run Code Online (Sandbox Code Playgroud)

但是您需要正确,仔细地匹配它们。对于上面的示例,有:

fit$arma
# [1] 1 1 0 0 1 1 0
Run Code Online (Sandbox Code Playgroud)

使用符号ARIMA(p,d,q)(P,D,Q)[m],我们可以添加name属性以实现清晰的呈现:

setNames(fit$arma, c("p", "q", "P", "Q", "m", "d", "D"))
# p q P Q m d D 
# 1 1 0 0 1 1 0 
Run Code Online (Sandbox Code Playgroud)