auto.arima advierte NaNs producidos en error estándar


9

Mis datos son una serie temporal de población ocupada, L, y el lapso de tiempo, año.

n.auto=auto.arima(log(L),xreg=year)
summary(n.auto)
Series: log(L) 
ARIMA(2,0,2) with non-zero mean 

Coefficients:
         ar1      ar2      ma1     ma2  intercept    year
      1.9122  -0.9567  -0.3082  0.0254    -3.5904  0.0074
s.e.     NaN      NaN      NaN     NaN     1.6058  0.0008

sigma^2 estimated as 1.503e-06:  log likelihood=107.55
AIC=-201.1   AICc=-192.49   BIC=-193.79

In-sample error measures:
           ME          RMSE           MAE           MPE          MAPE 
-7.285102e-06  1.225907e-03  9.234378e-04 -6.836173e-05  8.277295e-03 
         MASE 
 1.142899e-01 
Warning message:
In sqrt(diag(x$var.coef)) : NaNs produced

¿Por qué pasó esto? ¿Por qué auto.arima selecciona el mejor modelo con error estándar de estos coeficientes ar * ma * Not a Number? ¿Es este modelo seleccionado válido después de todo?

Mi objetivo es estimar el parámetro n en el modelo L = L_0 * exp (n * año). ¿Alguna sugerencia de un mejor enfoque?

TIA

datos:

L <- structure(c(64749, 65491, 66152, 66808, 67455, 68065, 68950, 
69820, 70637, 71394, 72085, 72797, 73280, 73736, 74264, 74647, 
74978, 75321, 75564, 75828, 76105), .Tsp = c(1990, 2010, 1), class = "ts")
year <- structure(1990:2010, .Tsp = c(1990, 2010, 1), class = "ts")
L
Time Series:
Start = 1990 
End = 2010 
Frequency = 1 
 [1] 64749 65491 66152 66808 67455 68065 68950 69820 70637 71394 72085 72797
[13] 73280 73736 74264 74647 74978 75321 75564 75828 76105

¿Puedes publicar algunos datos para que podamos replicar el problema?
Rob Hyndman

@RobHyndman datos actualizados
Ivy Lee

Por favor, escriba dput(L)y pegue la salida. Esto hace que la replicación sea muy fácil.
Zach

Respuestas:


11

L0 0

auto.arima()toma algunos atajos para acelerar el cálculo, y cuando da un modelo que parece sospechoso, es una buena idea desactivar esos atajos y ver qué obtienes. En este caso:

> n.auto <- auto.arima(log(L),xreg=year,stepwise=FALSE,approx=FALSE)
> 
> n.auto
Series: log(L) 
ARIMA(2,0,0) with non-zero mean 

Coefficients:
         ar1      ar2  intercept    year
      1.8544  -0.9061    11.0776  0.0081
s.e.  0.0721   0.0714     0.0102  0.0008

sigma^2 estimated as 1.594e-06:  log likelihood=107.19
AIC=-204.38   AICc=-200.38   BIC=-199.15

Este modelo es un poco mejor (un AIC más pequeño, por ejemplo).


1
¿Qué pasa si los errores estándar no se pueden calcular y el modelo debe usarse para pronosticar? ¿Causará eso intervalos de confianza inválidos, irrealmente pequeños en un pronóstico? En mi caso (una serie temporal de longitud 35), uso approximation=FALSEy stepwise=FALSEtodavía produce NaN para SE de coeficientes.
Mihael

4

Su problema surge de una sobreespecificación. Un modelo simple de primera diferencia con un AR (1) es bastante suficiente. No se requiere estructura MA ni transformación de potencia. También podría simplemente modelar esto como un segundo modelo de diferencia ya que el coeficiente ar (1) está cerca de 1.0. ¡Una gráfica de Real / ajuste / pronóstico es ingrese la descripción de la imagen aquíy una gráfica residual  posibles valores atípicos / entrantes en el período de tiempo 7con ecuación! ingrese la descripción de la imagen aquíingrese la descripción de la imagen aquíEn resumen, la estimación está sujeta a la especificación del modelo, que en este caso se encuentra queriendo ["mene mene tekel upharsin"]. En serio, sugiero que se familiarice con las estrategias de identificación del modelo y no intente hundir sus modelos en la cocina con una estructura injustificada. A veces menos es más ! La parsimonia es un objetivo! Espero que esto ayude ! Para responder más a sus preguntas "¿Por qué auto.arima selecciona el mejor modelo con error estándar de estos coeficientes ar * ma * No es un número? La respuesta probable es que la solución de espacio de estado no es todo lo que podría ser debido a la modelos supuestos que intenta. Pero eso es solo mi suposición. La verdadera causa de la falla podría ser su suposición de un log xform. Las transformaciones son como las drogas ... algunas son buenas para usted y otras no son buenas para usted. Las transformaciones de potencia SOLO deberían usarse para desacoplar el valor esperado de la desviación estándar de los residuos. Si hay un enlace, entonces una transformación Box-Cox (que incluye registros) podría ser apropiada. Hacer una transformación desde detrás de las orejas puede no ser una buena idea.

¿Es este modelo seleccionado válido después de todo? Definitivamente no !


0

Me he enfrentado a problemas similares. Por favor, intente jugar con optim.control y optim.method. Estos NaN son sqrt de valores negativos de elementos diagonales de la matriz de Hesse. El ajuste de ARIMA (2,0,2) es un problema no lineal y la optimización parecía converger en un punto de silla de montar (donde el gradiente es cero, pero la matriz de Hesse no está definida positivamente) en lugar del máximo de probabilidad.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.