En R (2.15.2) instalé una vez un ARIMA (3,1,3) en una serie de tiempo y una vez un ARMA (3,3) en la serie de tiempo una vez diferenciada. Los parámetros ajustados difieren, lo que atribuí al método de ajuste en ARIMA.
Además, ajustar un ARIMA (3,0,3) en los mismos datos que ARMA (3,3) no dará como resultado parámetros idénticos, sin importar el método de ajuste que use.
Estoy interesado en identificar de dónde viene la diferencia y con qué parámetros puedo (si es que puedo) ajustar el ARIMA para obtener los mismos coeficientes de ajuste que el ARMA.
Código de muestra para demostrar:
library(tseries)
set.seed(2)
#getting a time series manually
x<-c(1,2,1)
e<-c(0,0.3,-0.2)
n<-45
AR<-c(0.5,-0.4,-0.1)
MA<-c(0.4,0.3,-0.2)
for(i in 4:n){
tt<-rnorm(1)
t<-x[length(x)]+tt+x[i-1]*AR[1]+x[i-2]*AR[2]+x[i-3]*AR[3]+e[i-1]*MA[1]+e[i-2]*MA[2]+e[i-3]*MA[3]
x<-c(x,t)
e<-c(e,tt)
}
par(mfrow=c(2,1))
plot(x)
plot(diff(x,1))
#fitting different versions. What I would like to get is fit1 with ARIMA()
fit1<-arma(diff(x,1,lag=1),c(3,3),include.intercept=F)
fit2<-arima(x,c(3,1,3),include.mean=F)
fit3<-arima(diff(x,1),c(3,0,3),include.mean=F)
fit4<-arima(x,c(3,1,3),method="CSS",include.mean=F)
fit5<-arima(diff(x,1),c(3,0,3),method="CSS",include.mean=F)
cbind(fit1$coe,fit2$coe,fit3$coe,fit4$coe,fit5$coe)
Editar: el uso de la suma condicional de cuadrados se acerca bastante, pero no está del todo allí. Gracias por la pista para el fit1!
Edit2: no creo que esto sea un duplicado. Los puntos 2 y 3 abordan problemas diferentes a los míos, e incluso si anulo la inicialización mencionada en el punto 1 por
fit4<-arima(x,c(3,1,3),method="CSS",include.mean=F,init=fit1$coe)
Todavía obtengo diferentes coeficientes
fit1
tiene solo 1 parámetro MA y 1 AR: ¿quiso decirfit1<-arma(diff(x,1,lag=1),c(3,3),include.intercept=F)
?arima
mencionan unn.cond
argumento que da el número de observaciones al comienzo de la serie para ignorarlo al calcularlo, tal vez eso es todo. (¿Qué tiene de malo usar la máxima probabilidad de todos modos?)Respuestas:
Hay tres problemas menores en
tseries::arma
comparación con losstats::arima
que conducen a un resultado ligeramente diferente en el modelo ARMA para las series diferenciadas que usantseries::arma
y ARIMA enstats::arima
.Valores
stats::arima
iniciales de los coeficientes: establece los coeficientes iniciales AR y MA en cero, mientras quetseries::arma
utiliza el procedimiento descrito en Hannan y Rissanen (1982) para obtener los valores iniciales de los coeficientes.Escala de la función objetivo: la función objetivo en
tseries::arma
devuelve el valor de las sumas condicionales de cuadrados, RSS;stats::arima
vuelve0.5*log(RSS/(n-ncond))
.Algoritmo de optimización: de forma predeterminada, Nelder-Mead se utiliza en
tseries::arma
, mientras questats::arima
emplea el algoritmo BFGS.El último se puede cambiar a través del argumento
optim.method
enstats::arima
pero los otros requerirían modificar el código. A continuación, muestro una versión abreviada del código fuente (código mínimo para este modelo en particular)stats::arima
donde los tres problemas mencionados anteriormente se modifican para que sean los mismos que entseries::arma
. Después de abordar estos problemas,tseries::arma
se obtiene el mismo resultado que en .Versión mínima de
stats::arima
(con los cambios mencionados anteriormente):Ahora, compare ambos procedimientos y verifique que produzcan el mismo resultado (requiere la serie
x
generada por el OP en el cuerpo de la pregunta).Usando los valores iniciales elegidos en
tseries::arima
:Usando los valores iniciales elegidos en
stats::arima
(ceros):fuente
Por lo que puedo decir, la diferencia se debe completamente a los términos de MA. Es decir, cuando ajusto sus datos solo con términos AR, el ARMA de la serie diferenciada y ARIMA están de acuerdo.
fuente