Errores en optim al ajustar el modelo arima en R

8

Estoy usando el método arima del paquete de estadísticas de R con mi serie temporal de 17376 elementos. Mi objetivo es obtener el valor del criterio AIC, he observado en mi primera prueba esto:

 ts <- arima(serie[,1], order = c(2,1,1), seasonal = list(order=c(2,0,1),period = 24), 
         method = "CSS", optim.method = "BFGS",)
> ts$coef
           ar1        ar2        ma1       sar1       sar2       sma1 
     0.8883730 -0.0906352 -0.9697230  1.2047580 -0.2154847 -0.7744656 
    > ts$aic
[1] NA

Como puede ver, AIC no está definido. Sobre AIC, "Ayuda" en R dice que solo se puede usar con "ML". Sin embargo, sucede:

> ts <- arima(serie[,1], order = c(2,1,1), seasonal = list(order=c(2,0,1),period = 24), 
          method = "ML", optim.method = "BFGS",)

Error en optim(init[mask], armafn, method = optim.method, hessian = TRUE,  : 
  non-finite finite-difference value [1]

Plus: warning messages lost
In log(s2) : There have been NaNs

No entiendo lo que está pasando. También me gustaría saber más sobre el parámetro "método de ajuste".

Cyberguille
fuente
1
¿Puedes incluir la representación gráfica de tus datos?
mpiktas
3
Extraer los parámetros de la solución CSS y pasarlos como valores iniciales al solucionador de ML (a través del optim.controlargumento) tendría una buena oportunidad de evitar este problema. No he probado esto porque no proporciona un ejemplo reproducible de la dificultad.
whuber
@whuber esta es la dirección correcta. En algunos libros de econometría se dice que toman primero los valores de los parámetros de la solución CSS como valores iniciales para la función objetivo de ML completa.
Analista

Respuestas:

3

Ajustar el modelo ARIMA con máxima verosimilitud (método = "ML") requiere optimizar (minimizar) la probabilidad logarítmica negativa del modelo ARIMA sobre los parámetros. Esto resulta ser un problema de optimización restringido ya que los parámetros deben dar como resultado un modelo estacionario. Esta restricción no lineal se explica con la probabilidad de registro negativa que devuelve Inf (infinito) si la restricción no se cumple. Si el MLE está cerca del límite de la evaluación de restricción de la probabilidad logarítmica negativa cerca del MLE podría devolver el infinito. Como el hessian se obtiene con diferenciación numérica mediante la evaluación de la probabilidad logarítmica negativa cerca del MLE, esto puede dar como resultado el error de diferencia finita no finita que obtuvo. Entonces, si no se requiere el hessian, ponga hessian = FALSE. De otra manera,

edwardsm88
fuente
2

Editado: si votas en contra, ¿puedes explicar por qué? Soy nuevo aqui.

Tengo el mismo problema Miré en línea y encontré una solución sugerida en otro lugar en Cross Validated. Pensé que compartiría aquí en caso de que alguien lo quisiera.

Acabo de agregar un "método =" CSS "" a mi modelo y funcionó. Por ejemplo:

model = Arima(x, order=c(1,1,1), seasonal=list(order=c(1,1,1), period=12), xreg=xreg, 
              method="CSS") 

Aquí está la referencia:
auto.arima y Arima (paquete de pronóstico)

chriseshleman
fuente
Ahora veo su respuesta y tal vez para sus datos. Funciona, pero para mis datos no, mi objetivo principal era saber por qué ocurrió el error de mi pregunta y por qué el método ML no funciona en mi caso o en otro
Cyberguille
3
Veo que esto resuelve el problema, pero ¿cómo va a usar los valores AIC para comparar diferentes modelos, por ejemplo, ARIMA (1,1,2) a menos que use el método ML o CSS-ML? "La teoría de AIC requiere que se haya maximizado la probabilidad logarítmica: mientras que AIC se puede calcular para modelos no ajustados por la máxima verosimilitud, sus valores de AIC no se deben comparar". stat.ethz.ch/R-manual/R-devel/library/stats/html/AIC.html El OP requiere el valor AIC.
Mumbo.Jumbo
0

Parece que tienes problemas con la convergencia de algoritmos. Esto sucede a veces con la optimización numérica.

Aquí hay un enlace al artículo de Wikipedia sobre este método de optimización en particular:

http://en.wikipedia.org/wiki/Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm

Analista
fuente
3
Sí, sé que esto sucede a veces, pero por qué funciona con el método de ajuste con CSS y con ml no, y por qué CSS no hace AIC
Cyberguille
1
@GuillermoAyranTorresLores CSS se basa en la probabilidad condicional y no produce el mismo valor de probabilidad que la función de probabilidad incondicional produce cuando se optimiza para los mismos parámetros.
Analista
1
@GuillermoAyranTorresLores intente cambiar su problema de optimización de una manera que primero tome los valores de los parámetros de la solución CSS como valores iniciales para la función de objetivo ML completo.
Analista