Cómo interpretar y hacer pronósticos usando el paquete tsoutliers y auto.arima

9

Tengo datos mensuales de 1993 a 2015 y me gustaría hacer pronósticos sobre estos datos. Utilicé el paquete tsoutliers para detectar los valores atípicos, pero no sé cómo continúo pronosticando con mi conjunto de datos.

Este es mi código:

product.outlier<-tso(product,types=c("AO","LS","TC"))
plot(product.outlier)

Esta es mi salida del paquete tsoutliers

ARIMA(0,1,0)(0,0,1)[12]                    

Coefficients:
        sma1    LS46    LS51    LS61    TC133   LS181   AO183   AO184   LS185   TC186    TC193    TC200
      0.1700  0.4316  0.6166  0.5793  -0.5127  0.5422  0.5138  0.9264  3.0762  0.5688  -0.4775  -0.4386
s.e.  0.0768  0.1109  0.1105  0.1106   0.1021  0.1120  0.1119  0.1567  0.1918  0.1037   0.1033   0.1040
       LS207    AO237    TC248    AO260    AO266
      0.4228  -0.3815  -0.4082  -0.4830  -0.5183
s.e.  0.1129   0.0782   0.1030   0.0801   0.0805

sigma^2 estimated as 0.01258:  log likelihood=205.91
AIC=-375.83   AICc=-373.08   BIC=-311.19

 Outliers:
    type ind    time coefhat  tstat
1    LS  46 1996:10  0.4316  3.891
2    LS  51 1997:03  0.6166  5.579
3    LS  61 1998:01  0.5793  5.236
4    TC 133 2004:01 -0.5127 -5.019
5    LS 181 2008:01  0.5422  4.841 
6    AO 183 2008:03  0.5138  4.592
7    AO 184 2008:04  0.9264  5.911
8    LS 185 2008:05  3.0762 16.038
9    TC 186 2008:06  0.5688  5.483
10   TC 193 2009:01 -0.4775 -4.624
11   TC 200 2009:08 -0.4386 -4.217
12   LS 207 2010:03  0.4228  3.746
13   AO 237 2012:09 -0.3815 -4.877
14   TC 248 2013:08 -0.4082 -3.965
15   AO 260 2014:08 -0.4830 -6.027
16   AO 266 2015:02 -0.5183 -6.442

Esta es mi trama

Tengo estos mensajes de advertencia también.

Warning messages:
1: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
2: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
3: In locate.outliers.oloop(y = y, fit = fit, types = types, cval = cval,  :
  stopped when maxit was reached
4: In arima(x, order = c(1, d, 0), xreg = xreg) :
  possible convergence problem: optim gave code = 1
5: In auto.arima(x = c(5.77, 5.79, 5.79, 5.79, 5.79, 5.79, 5.78, 5.78,  :
  Unable to fit final model using maximum likelihood. AIC value approximated

Dudas:

  1. Si no me equivoco, el paquete tsoutliers eliminará los valores atípicos que detecta y, mediante el uso del conjunto de datos con los valores atípicos eliminados, nos dará el mejor modelo de arima adecuado para el conjunto de datos, ¿es correcto?
  2. El conjunto de datos de la serie de ajuste se está desplazando mucho debido a la eliminación del cambio de nivel, etc. ¿No significa esto que si el pronóstico se realiza en la serie ajustada, la salida del pronóstico será muy imprecisa, ya que los datos más recientes ya son más de 12, mientras que los datos ajustados lo cambian a alrededor de 7-8.
  3. ¿Qué significan los mensajes de advertencia 4 y 5? ¿Significa que no puede hacer auto.arima usando la serie ajustada?
  4. ¿Qué significa [12] en ARIMA (0,1,0) (0,0,1) [12]? ¿Es solo mi frecuencia / periodicidad de mi conjunto de datos, que configuré mensualmente? ¿Y esto también significa que mi serie de datos también es estacional?
  5. ¿Cómo detecto la estacionalidad en mi conjunto de datos? A partir de la visualización de la trama de series de tiempo, no puedo ver ninguna tendencia obvia, y si uso la función de descomposición, ¿supondrá que hay una tendencia estacional? Entonces, ¿solo creo lo que me dicen los tsoutliers, donde hay una tendencia estacional, ya que hay un MA de orden 1?
  6. ¿Cómo continúo haciendo mi pronóstico con estos datos después de identificar estos valores atípicos?
  7. ¿Cómo incorporar estos valores atípicos a otros modelos de pronóstico: suavizado exponencial, ARIMA, modelo estructural, caminata aleatoria, theta? Estoy seguro de que no puedo eliminar los valores atípicos ya que hay un cambio de nivel, y si solo tomo datos de series ajustadas, los valores serán demasiado pequeños, entonces, ¿qué debo hacer?

¿Necesito agregar estos valores atípicos como regresores en el auto.arima para pronosticar? ¿Cómo funciona esto entonces?

Ted
fuente

Respuestas:

5

Estos comentarios son demasiado largos ... por lo tanto, una "RESPUESTA"

  1. Está equivocado, no se ajusta y luego identifica ARIMA (como lo hace AUTOBOX). Supuestamente no asume ningún ajuste de intervención y luego se apresura a identificar un modelo ARIMA potencialmente afectado por el no tratamiento de anomalías. A menudo, es necesario ajustar tanto la serie causal especificada por el usuario como la estructura determinista no especificada (valores atípicos / cambios de nivel, pulsos estacionales, tendencias de tiempo local) antes de identificar la estructura ARIMA. Vea este ejemplo de una pobre dignosis que comete el error de diferenciar innecesariamente la serie original, mientras que el estado verdadero / correcto de la naturaleza no necesita ninguna diferencia. La no estacionariedad no implica necesariamente la necesidad de diferenciar, pero a menudo puede sugerir una falta de significado, es decir, el ajuste por un cambio en el nivel / media

  2. El pronóstico correcto siempre se realiza a partir de la serie original, por lo tanto, el pronóstico debe ser creíble dada la historia.

  3. No tengo idea, ya que no utilizo activamente este procedimiento. Se lo recomendé porque solicitó soluciones gratuitas basadas en r NO porque pensé que era bueno o suficiente, ya que el modelado ARIMA es un proceso de autoverificación iterativo (de varias etapas).

  4. el modelo sugiere que cree que los datos tienen un componente estacional ma (12) PERO esto podría simplemente reflejar la necesidad de un pulso estacional.

  5. El concepto de tendencia estacional es, en el mejor de los casos, vago.

  6. Mi respuesta sería demasiado obvia y modesta

IrishStat
fuente
1
tu muchísimo @ricardo
IrishStat
4

El paquete 'tsoutliers' implementa el procedimiento descrito por Chen y Liu (1993) [1]. También se proporciona una descripción del paquete y el procedimiento en este documento .

Brevemente, el procedimiento consta de dos etapas principales:

  1. Detección de valores atípicos en un modelo ARIMA elegido.
  2. Elija y / o reajuste el modelo ARIMA, incluidos los valores atípicos detectados en el paso anterior y elimine aquellos valores atípicos que no son significativos en el nuevo ajuste.

Luego, la serie se ajusta para los valores atípicos detectados y las etapas (1) y (2) se repiten hasta que no se detecten más valores atípicos o hasta que se alcance un número máximo de iteraciones.


La primera etapa (detección de valores atípicos) también es un proceso iterativo. Al final de cada iteración, los residuos del modelo ARIMA se ajustan para los valores atípicos detectados en esta etapa. El proceso se repite hasta que no se encuentran más valores atípicos o hasta que se alcanza un número máximo de iteraciones (de manera predeterminada, 4 iteraciones). Las primeras tres advertencias que obtienes están relacionadas con este bucle interno, es decir, la etapa sale después de cuatro iteraciones.

Puede aumentar este número máximo de iteraciones a través del argumento maxit.iloopen la función tso. Es aconsejable no establecer un gran número de iteraciones en la primera etapa y dejar que el proceso pase a la segunda etapa donde el modelo ARIMA se reajusta o se elige de nuevo.


Las advertencias 4 y 5 están relacionadas con el proceso de ajuste del modelo ARIMA y el modelo elegido, respectivamente, para funciones stats::arimay forecast:auto.arima. El algoritmo que maximiza la función de probabilidad no siempre converge a una solución. Puede encontrar algunos detalles relacionados con estos problemas, por ejemplo, en esta publicación y en esta publicación


[1] Chung Chen y Lon-Mu Liu (1993) "Estimación conjunta de parámetros del modelo y efectos atípicos en series temporales", Journal of the American Statistical Association , 88 (421), págs. 284-297. DOI: 10.1080 / 01621459.1993.10594321 .

javlacalle
fuente
¿Cuánto tiempo llevará ejecutar tso ()?
Anoop Toffy
@AnoopToffy depende de la longitud de los datos, la periodicidad, etc. Para datos anuales, mensuales, trimestrales, un tamaño de muestra de alrededor de 120 observaciones y una dinámica que un modelo ARIMA puede capturar razonablemente, el algoritmo se ejecutará como máximo alrededor de 10 segundos (generalmente mucho menos).
javlacalle