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
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:
- 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?
- 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.
- ¿Qué significan los mensajes de advertencia 4 y 5? ¿Significa que no puede hacer auto.arima usando la serie ajustada?
- ¿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?
- ¿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?
- ¿Cómo continúo haciendo mi pronóstico con estos datos después de identificar estos valores atípicos?
- ¿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?
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:
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.iloop
en la funcióntso
. 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::arima
yforecast: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 .
fuente