12 votos

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

Tengo datos mensuales desde 1993 hasta 2015 y me gustaría hacer una previsión sobre estos datos. Utilicé el paquete tsoutliers para detectar los valores atípicos, pero no sé cómo seguir haciendo pronósticos 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 de 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

This is my plot

También tengo estos mensajes de advertencia.

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 de valores atípicos eliminará los valores atípicos que detecte y mediante el uso del conjunto de datos con valores atípicos eliminados, se nos dará el mejor modelo de Arima adecuado para el conjunto de datos, es decir ¿correcto?
  2. El conjunto de datos de las series de ajuste se está desplazando mucho hacia abajo debido a la eliminación del desplazamiento de nivel, etc. Esto no significa que si el pronóstico se hace sobre la serie ajustada, el resultado del pronóstico será muy inexacto, ya que los datos más recientes ya son más de 12, mientras que los datos ajustados lo desplazan a alrededor de 7-8.
  3. ¿Qué significa el mensaje de advertencia 4 y 5? ¿Significa que no puede hacer auto.arima usando la serie ajustada?
  4. ¿Qué significa el [12] en ARIMA(0,1,0)(0,0,1)[12]? ¿Es sólo la frecuencia/periodicidad de mi conjunto de datos, a la que lo configuro mensualmente? ¿Y esto también significa que mi serie de datos es también estacional?
  5. ¿Cómo detecto la estacionalidad en mi conjunto de datos? A partir de la visualización del gráfico de la serie de tiempo, no puedo ver ninguna tendencia obvia, y si utilizo la función de descomposición, se asumirá que hay una tendencia estacional? ¿Entonces sólo creo lo que me dicen los tsoutliers, donde hay una tendencia estacional, ya que hay MA de orden 1?
  6. ¿Cómo sigo haciendo mis previsiones con estos datos después de identificar estos valores atípicos?
  7. ¿Cómo incorporar estos valores atípicos a otros modelos de previsión - Suavizado exponencial, ARIMA, Modelo estrutural, Paseo aleatorio, theta? Estoy seguro de que no puedo eliminar los valores atípicos ya que hay un cambio de nivel, y si sólo tomo los datos de las series ajustadas, los valores serán demasiado pequeños, así que ¿qué hago?

¿Necesito añadir estos valores atípicos como regresores en el auto.arima para el pronóstico? ¿Cómo funciona esto entonces?

5voto

Owen Fraser-Green Puntos 642

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

  1. Se equivoca, no ajusta y luego identifica ARIMA (como hace AUTOBOX). Presume que no hay ajuste de intervención y luego se apresura a identificar un modelo ARIMA potencialmente impactado por el no tratamiento de anomalías. A menudo es necesario ajustar tanto las series causales especificadas por el usuario como la estructura determinista no especificada (valores atípicos/cambios de nivel, impulsos estacionales, tendencias temporales locales, etc.) antes de identificar el modelo ARIMA. tendencias locales) antes de identificar la estructura ARIMA. Véase este ejemplo de mala dignosis que comete el error de diferenciar innecesariamente la serie original, mientras que el estado natural verdadero/correcto no necesita diferenciación alguna. La no estacionariedad no implica necesariamente la necesidad de diferenciar, pero a menudo puede sugerir la desestacionalización, es decir, el ajuste por un cambio de nivel/media.

  2. Una previsión correcta se realiza siempre a partir de la serie original, por lo que la previsión debe ser creíble teniendo en cuenta el historial.

  3. No tengo ni idea, ya que no utilizo activamente este procedimiento. Te lo recomendé porque pediste soluciones gratuitas basadas en r NO porque pensara que era bueno o suficiente ya que la modelización ARIMA es un proceso iterativo (multietapa) de autocomprobación.

  4. el modelo sugiere que cree que los datos tienen un componente estacional ma(12) PERO esto podría ser 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 autocomplaciente

1 votos

Tu very much @ricardo

5voto

einverne Puntos 126

El paquete 'tsoutliers' implementa el procedimiento descrito en by Chen y Liu (1993) [1]. También se ofrece una descripción del paquete y del 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 vuelva a ajustar el modelo ARIMA incluyendo los valores atípicos detectados en el paso anterior y elimine los valores atípicos que no sean significativos en el nuevo ajuste.

A continuación, la serie se ajusta en función de los valores atípicos detectados y las etapas (1) y (2) se repiten hasta que no se detectan más valores atípicos o hasta que se alcanza 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 en función de la variable los valores atípicos detectados en esta etapa. El proceso se repite hasta que no se detectan más valores atípicos o hasta que se alcanza un número máximo de iteraciones (por defecto 4 iteraciones). Las tres primeras advertencias que se obtienen están relacionadas con este bucle interno, es decir, se sale de la etapa después de cuatro iteraciones.

Puede aumentar este número máximo de iteraciones mediante el argumento maxit.iloop en función tso . Es aconsejable no fijar un número elevado de iteraciones en la primera etapa y dejar que el proceso pase a la segunda etapa, en la que se vuelve a ajustar o elegir el modelo ARIMA.


Las advertencias 4 y 5 están relacionadas con el proceso de ajuste del modelo ARIMA y la elección del modelo, respectivamente para las funciones stats::arima y forecast:auto.arima . El algoritmo que maximiza la función de verosimilitud no siempre converge a una solución. Puede encontrar algunos detalles relacionados con estas cuestiones, por ejemplo, en ce poste y ce poste


[1] Chung Chen y Lon-Mu Liu (1993) "Estimación conjunta de los parámetros del modelo y los efectos de los valores atípicos en las series temporales", Revista de la Asociación Estadística Americana , 88 (421), pp. 284-297. DOI: 10.1080/01621459.1993.10594321 .

0 votos

¿cuánto tiempo tardará en ejecutarse tso() ?

0 votos

@AnoopToffy depende de la longitud de los datos, periodicidad, etc. Para datos anuales, mensuales, trimestrales, un tamaño de muestra de unas 120 observaciones y una dinámica que pueda ser razonablemente capturada por un modelo ARIMA, el algoritmo se ejecutará como máximo en unos 10 segundos (normalmente mucho menos).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X