Herramientas para Pronósticos de Series de Tiempo en Python — Parte 1: SARIMAX

Gonzalezhomar
tacosdedatos
Published in
14 min readSep 10, 2021

Un clásico arranca un duelo entre diferentes herramientas.

Fuente: Rustyness en Unsplash

1. Introducción

Ah, el futuro… la última frontera. Cómo economista, hacer estimaciones de lo que pasará en el futuro es pan de cada día, tanto así que hay muchos chistes al respecto. Uno de ellos cuenta, “le pedí su número de teléfono a un economista … y me dio una estimación”. El chiste reside en que el experto en números ni siquiera tiene un número preciso de su propio número telefónico; sin embargo, para mí expresa una situación mucho más simple, y es que por mucho que cualquiera analice los datos, nadie sabe lo que pasará.

¿Entonces, por qué hacer pronósticos? Porque a través de diferentes herramientas se pueden obtener aproximaciones de lo que pasará en el futuro. En ese sentido en mi blog personal probé diferentes herramientas para hacer pronósticos de series de tiempo: la vieja escuela, el mismo modelo pero a la “nueva escuela” y la herramienta Prophet. Cabe señalar que mi objetivo con dicho análisis era comparar los resultados entre diferentes metodologías con base en el pronóstico en sí y no hacer la evaluación con las típicas medidas intra muestra. Sin embargo, no estoy del todo conforme con esos resultados:

En ese sentido, las primeras 2 herramientas que utilicé, en el fondo usan la metodología ARIMA que aprendí de mis profesores y solo Prophet sale de este marco teórico. Por tanto, decidí repetir dicho ejercicio con más y diferentes herramientas, con lo cual, de paso practicaré su implementación en Python y Jupyter.

Arracanré este segundo round, con el modelo SARIMAX, cuya notebook completa puede consultarse en mi repositorio de Github o la pueden ver directamente aquí. Debido a que esta parte quedó muy extensa, me saltaré buena parte del código que está inspirado en esta de esta publicación de Medium. así que ¡a darle átomos!

2. Recordando el problema

Para esta nueva serie, vuelvo a analizar la Recaudación Federal Participable (RFP), siguiendo la referencia de un artículo desarrollado por mis profesores donde se estiman la elasticidad ingreso de los impuestos federales en México y sus efectos en la misma. La RFP está conformada por distintos ingresos del Gobierno Federal, y es de suma importancia porque a partir ella se determinan las participaciones federales, mismas que son la principal fuente de ingresos de libre disposición que tienen las Entidades Federativas. De manera breve, sólo señalaré que la RFP depende de diversos ingresos del Gobierno Federal, entre los que destacan: Impuesto Sobre la Renta, ISR, que es un impuesto a los ingresos; Impuesto al Valor Agregado, IVA, que es un impuesto al consumo; el Impuesto Especial sobre Producción y Servicios, IEPS, que a su vez se compone de diversos impuestos específicos para disminuir el consumo de ciertos bienes, como son el alcohol, el tabaco y las gasolinas; y finalmente una parte de los ingresos petroleros que recibe el Gobierno Federal vía el Fondo Mexicano del Petróleo para la Estabilización y el Desarrollo.

Al igual que en mi proyecto anterior, los datos para la RFP los tomé de las Estadísticas Oportunas de Finanzas Públicas que publica la Secretaría de Hacienda y Crédito Público del Gobierno de México, de donde se pueden consultar las series que componen dicha RFP a partir de 2002. Cabe señalar que existe un desfase de 2 meses entre dichos impuestos (según la serie de la RFP) con el período que lo causa, puesto que el ISR de marzo, corresponde a la recaudación de febrero, que a su vez, corresponde con la actividad económica del mes de enero. Debido a que son muchas las series, solo utilizaré las series más importantes: ISR, IVA, IEPS federal a las gasolinas y diésel, IEPS a tabacos, IEPS a bebidas alcohólicas, IEPS a cervezas, IEPS a las bebidas saborizadas, IEPS a los alimentos con alto contenido calórico, impuesto a la importación e ingresos petroleros. Dado que hay un retraso entre la publicación de las variables y el periodo al que corresponden, no tengo información completa para el segundo trimestre de 2021.

En cuanto a las variables explicativas, usaré el Producto Interno Bruto (PIB) de México que publica el Instituto Nacional de Estadística y Geografía (INEGI); y de esa misma fuente tomaré el Índice de Precios Implícito (IPI) para convertir las series de ISR e IVA a términos reales (ver siguiente sección). Para el PIB a futuro utilicé las proyecciones del Banco de México de su informe trimestral; de hecho, al momento de publicar esto, ya hay una nueva actualización de esta información que al momento en que trabajé en estas proyecciones aún no estaba disponible.

3. Análisis previo de cointegración y quiebre estructural

Este análisis lo hice para mi primer proyecto, pero creo que vale la pena repetirlo, puesto que a través de éste, se confirma que es correcto utilizar el PIB como variable explicativa del ISR y del IVA, y explico porque no lo uso para el resto de las variables. Adelantando los resultados que mostraré serie por serie, es necesario verificar la existencia de raíz unitaria, porque de lo contrario, podría caer en regresiones espurias (relaciones estadísticamente significativas entre variables que no tienen relación alguna).

Para hacer este análisis, apliqué la prueba de contraste aumentado de Dickey Fuller (ADF), con lo que se concluye que todas las series, con excepción del IEPS federal a las gasolinas y diésel y del IEPS a los alimentos, tienen raíz unitaria, pero esta se elimina al tomar las series en primera diferencia (* denota un valor p menor al 0.10, ** denota un valor p menor al 0.05 y *** denota un valor p menor al 0.01):

3.1 Cointegración de las Series

Una vez que se tienen los resultados de la prueba ADF, se puede verificar si las series estacionarias en efecto están relacionadas y es correcto utilizar a una para explicar a la otra. Para ello, utilizaré la prueba de cointegración de Engle-Granger, donde se verifica primero que las dos series a utilizar tengan raíz unitaria (paso que ya se realizó), y luego se verifica si al hacer la regresión por Mínimos Cuadrados Ordinarios (MCO) entre ellas, su residual es estacionario. Los resultados se muestran a continuación:

Por lo tanto, y dado que los residuales del MCO en el caso del ISR y del IVA con el PIB son estacionarios, concluyó que es correcto utilizar el PIB como variable para explicar el ISR y el IVA, y podría utilizarlo para los IEPS de tabacos y a las bebidas alcohólicas. Sin embargo, solo lo utilizaré para el ISR y el IVA, como es común en la literatura, y dejaré fuera al resto de las series para hacer su análisis mensual.

Lo hago así, porque al agregar el PIB como variable explícativa, necesito agregar el supuesto de cuál será el PIB a futuro y cuál será el IPI. Además evitó perder información por el rezago en los datos, y de hecho, en las series mensuales tengo información hasta el mes de julio. En cambio, al hacer el desfase en las series de ISR e IVA, no tengo información completa para el segundo trimestre de 2021.

3.2 Quiebres Estructurales

Por otro lado, es necesario identificar si las series que se analizan presentan cambios estructurales que pueden deberse a modificaciones legislativas u otro hechos que sean económicamente relevantes. Para revisar esto, se hace primero una regresión entre las variables que se van a analizar, en este caso, ISR e IVA, y la variable explicativa PIB. Luego se aplican las pruebas CUSUM y CUSUMQ para identificar posibles quiebres. Estos posibles quiebres se verifican mediante la prueba de Chow:

Como resultado de las pruebas, la prueba de Chow indica que todos los quiebres son significativos, mientras que en el caso del IVA, solo es significativo el quiebre del primer trimestre de 2010. Con estos resultados tengo que voltear a los cambios institucionales para identificar cuáles cambios coinciden con eventos económicos.

En el caso del IVA, el quiebre significativo coincide con el incremento general de la tasa del IVA del 15% al 16%. Por lo anterior, considero adecuado agregar una variable dummy, que indique la tasa general del impuesto antes de 2010 (15%, indicado con un cero) y después (16%, indicado con un uno). De hecho, antes de 2002, la tasa estuvo cambiando entre 10% y 15%, pero los datos de mi muestra no llegan hasta esas fechas.

Para el caso del ISR, y en cuanto a los quiebres significativos, únicamente identifico la reforma del ISR que entró en vigor a partir de 2014. Como resultado de dicha reforma, se tuvo una Ley del Impuesto Sobre la Renta completamente nueva, por lo que considero adecuado a utilizar una variable dummy que indica el período en el cual entro en vigor la última reforma del ISR (ceros antes de 2014 y a partir de esa fecha, unos).

De hecho, en ambos análisis del ISR y del IVA, también hice el análisis de incluir una variable dummy que señalara que los últimos 3 trimestres de 2020, donde hubo crisis económica (causada por la pandemia del Covid-19), pero resultó no ser significativa, y no la incluí en el modelo final. Esto se debe a que a través de la variable del PIB ya se incluyé el efecto económico de la crisis en la estimación.

Para el caso de las otras variables no realicé la prueba CUSUM pues no se tiene variable explicativa. Sin embargo, sí hice un ajuste en el IEPS federal a gasolinas y diésel intencionalmente para dejar fuera la parte de la serie anterior a 2015. Esto lo hago porque justo en ese año hubo una reforma importante en este impuesto que pasó a cobrarse a cuotas por litro, mientras que antes de dicha reforma, el IEPS se utilizaba para controlar el precio de las gasolinas, e incluso podía llegar a ser negativo (subsidio al precio final).

4. Series mensuales

Con el análisis que he presentado hasta el momento, puedo comenzar a utilizar el módelo SARIMAX:
- S, de *seasonal*, porque considera series que pueden tener estacionalidad.
- AR, de autoregresivo, por series que dependen de observaciones previas.
- I, de integradas, porque los modelos pueden considerar series que se integran, o dependen de si mismas de manera estacional (por ejemplo, anual).
- MA, de *moving average* o media móvil porque considera series que pueden ser medias móviles.
- X, por el vector X de variables regresivas que puede incluir.

En general, la metodología que sigue este modelo, es la [metodología Box-Jenkin: 1) identificar y seleccionar el modelo con variables son estacionarias; 2) estimar los parámetros que mejor ajusten el modelo ARIMA seleccionado; 3) comprobar el modelo obtenido mediante distintas pruebas y 4) en caso de una incorrecta especificación regresar al paso 1).

Sin embargo, en la sección anterior, concluí que sólo utilizaré el PIB como variable explicativa para mis series de ISR e IVA. Por tanto, analizaré estas series desde su perspectiva mensual. Solo mostraré el análisis completo para la primera serie, y en el resto, dejaré solo las gráficas con los pronósticos.

4.1 IEPS Cervezas

La serie de IEPS a la venta de cervezas, y su descomposición en sus componentes de tendencia, estacional y residuales, se ve como sigue:

Para analizar si esta serie es estacionaria, se puede analizar el correlograma y el autocorrelograma, donde se ve que la serie tiene fuerte autocorrelación y autocorrelación parcial:

Sin embargo, para poder concluirlo adecuadamente, apliqué la prueba ADF que falla en rechazar que la serie tenga raíz unitaria. Con ello concluyó que la serie tiene raíz unitaria.

Results of Dickey-Fuller Test:
Test Statistic -0.236237
p-value 0.934062
#Lags Used 12.000000
Number of Observations Used 222.000000
Critical Value (1%) -3.460154
Critical Value (5%) -2.874649
Critical Value (10%) -2.573757
dtype: float64

Por tanto, es necesario generar la serie en primeras diferencias, donde vuelvo a realizar la prueba ADF rechazó la hipótesis de que la serie tiene raíz unitaria, en favor de la hipótesis que la serie es estacionaria. En otras palabras, puedo concluir que la serie en primeras diferencias sí es estacionaria (como adelante desde la sección 3).

Results of Dickey-Fuller Test:
Test Statistic -6.233054e+00
p-value 4.900097e-08
#Lags Used 1.500000e+01
Number of Observations Used 2.060000e+02
Critical Value (1%) -3.462499e+00
Critical Value (5%) -2.875675e+00
Critical Value (10%) -2.574304e+00
dtype: float64

Luego, con el comando auto_arima del paquete pmdarima, automáticamente se evalúan diferentes propuestas de modelos ARIMA, seleccionando el mejor modelo con base en el criterio de Akaike:

Y el modelo resultante, es el siguiente:

A diferencia de la ocasión anterior, ahora trabajaré con la serie completa (sin partirla en parte para entrenar y parte para hacer pruebas), para que el siguiente comando me de los mejores coeficientes para explicar la serie, con base en el modelo que obtuve en el paso anterior:

Los estadísticos para diagnosticar este modelo se ven bastante prometedores:

Los pronósticos intra muestra de este modelo parecen ajustar adecuadamente:

Mientras que los pronósticos hacia adelante también se ven bastante prometedores. Cabe señalar que esta es la parte que más me interesa para cada serie.

4.2 IEPS Bebidas Alcohólicas

Luego de repetir esta metodología para el caso del IEPS a las bebidas alcohólicas, obtuve el siguiente pronóstico para esta serie:

4.3 IEPS Tabacos

A riesgo de ser repetitivo, y luego de repetir esta metodología, para esta serie obtuve el siguiente pronóstico:

4.4 IEPS Gasolinas y Diésel

A riesgo de ser repetitivo, y luego de repetir esta metodología, para esta serie obtuve el siguiente pronóstico:

4.5 IEPS Bebidas Saborizadas

A riesgo de ser repetitivo, y luego de repetir esta metodología, para esta serie obtuve el siguiente pronóstico:

4.6 IEPS Alimentos

A riesgo de ser repetitivo, y luego de repetir esta metodología, para esta serie obtuve el siguiente pronóstico:

4.7 Impuesto a la Importación

A riesgo de ser repetitivo, y luego de repetir esta metodología, para esta serie obtuve el siguiente pronóstico:

4.8 Ingresos Petroleros

A riesgo de ser repetitivo, y luego de repetir esta metodología, para esta serie obtuve el siguiente pronóstico (nótese que intencionalmente solo copie y pegué esta línea n-veces):

5. SARIMAX de las series trimestrales

En la sección 3.2 concluí que sí podía utilizar al PIB como una variable explicativa del ISR y del IVA, así como también era correcto utilizar una variable dummy para indicar los cortes estructurales de la serie. Por tanto, presentaré los resultados completos solo para la misma serie, y de la otra solo presentaré la gráfica con los pronósticos finales.

5.1 Impuesto Sobre la Renta, ISR

Para construir la serie trimestral, considere la serie mensual con un desfase de 2 meses (el ISR de marzo, corresponde a la recaudación de febrero, que a su vez, corresponde con la actividad del mes de enero) y la convertí en términos reales con el índice de precios implícitos (IPI). Al observar dicha serie, observó que mantuvo un crecimiento en términos reales hasta 2017–2018, y a partir de entonces mantiene un comportamiento un poco más volátil, que coincide con su descomposición en sus componentes de tendencia, estacional y residuales:

Siguiendo la metodología de series mensuales, aplicó la prueba ADF-GLS a la serie en niveles, la prueba falla en rechazar que la serie tiene raíz unitaria; de esta manera concluyó que la serie sí tiene raíz unitaria:

Results of Dickey-Fuller Test:
Test Statistic -0.821204
p-value 0.812814
#Lags Used 3.000000
Number of Observations Used 74.000000
Critical Value (1%) -3.521980
Critical Value (5%) -2.901470
Critical Value (10%) -2.588072
dtype: float64

Sin embargo, si aplicó la misma prueba a la serie en primeras diferencias, la prueba falla en aceptar que la serie tiene raíz unitaria (como adelante desde la sección 3)

Results of Dickey-Fuller Test:
Test Statistic -5.457999
p-value 0.000003
#Lags Used 7.000000
Number of Observations Used 65.000000
Critical Value (1%) -3.535217
Critical Value (5%) -2.907154
Critical Value (10%) -2.591103
dtype: float64

Ahora bien, a diferencia de las series mensuales, para estas series trimestrales sí tengo variables explicativas como señale desde la parte 3.2. Para ello, con estos comandos creo los objetos con dichas variables:

Luego, puedo correr la función auto_arima para encontrar la mejor especificación de un modelo SARIMAX, destacando que en este caso sí puedo incluir variables explicativas:

Con esta especificación puedo volver a correr el comando SARIMAX, para que a través de un breve entrenamiento, encuentre los mejores coeficientes para dicha especificación. Cabe señalar que en este caso lo hago considerando toda la serie y que puedo incluir las variables explicativas que ya había señalado. Lo primero para evitar perder el comportamiento de los últimos datos y con lo segundo ganó el efecto de las variables explicativas:

Los residuales del modelo anterior se comportan bien:

Y los pronósticos intra muestra que resultan de este modelo parecen ajustar adecuadamente:

Mientras que los pronósticos hacia adelante también se ven bastante prometedores.

5.2 Impuesto al Valor Agregado, IVA

Así como en las series mensuales, apliqué esta misma metodología para la serie del IVA, modificando sus variables explicativas, con lo cual obtuve el siguiente pronóstico:

6. Conclusión

Con esto concluye la primera parte de este segundo round entre diferentes metodologías. Me salte por completo la que en su momento llamé “vieja escuela” porque sigue esta metodología, pero de manera manual. Mientras que el análisis que aquí presentó, lo realicé por completo en una *notebook* que puede consultarse en mi repositorio de Github o la pueden ver directamente aquí.

Sin embargo, al igual que en el primer round, quiero evaluar estos pronósticos en términos de qué tan cercanos resultan a la siguiente observación. De hecho, por eso no compararé los estadísticos clásicos (la R-Cuadrada, la suma cuadrada de los errores o la suma absoluta de los errores). En esta primera parte, los pronósticos para el tercer trimestre de 2021 resultaron los siguientes:

Aprovechando el contexto en que realizó la presente estimación, con estas series obtuve el siguiente pronóstico de la RFP para 2022:

Este pronóstico resulta importante pues el 8 de septiembre vence el plazo en el que el Gobierno Federal presentará su Iniciativa de Ley de Ingresos de la Federación para 2022, donde incluirá un estimado de este dato. Si bien la estimación que incluya el Gobierno Federal puede atender a otros criterios, me parece adecuado guardar esta estimación para evaluar mi modelo y futuras referencias (la RFP 2022 real se conocerá hasta abril de 2023 cuando el Gobierno Federal presente su Cuenta Pública anual).

Sin más por el momento, eso es to, eso es to, eso es todo amigos.

--

--

Gonzalezhomar
tacosdedatos

Economista y entusiasta de modelación matemática, estadística, teoría de juegos y ciencia de datos. English spoken. https://gonzalezhomar.netlify.app