Desestacionalizar series temporales con R

3.6
(9)

En la entrada de hoy comentaré sobre desestacionalizar series temporales o ajustes estacionales, qué son y cómo realizarlos con el lenguaje de programación R.

Pero primero, tenemos que hablar sobre los componentes de una serie temporal.

Descomposición de series temporales

Las series temporales, se pueden descomponer en:

1) Tendencia. El componente tendencial hace referencia al movimiento general de largo plazo de la serie. Es decir, al cambio de largo plazo en relación al nivel medio (o de la media).

2) Variaciones estacionales. Los componentes estacionales se pueden definir como oscilaciones que se producen en períodos iguales o inferiores a un año y que se reproducen de manera reconocible en los diferentes años. En otras palabras, hace referencia a cierta periodicidad de la serie o variación de cierto perí­odo, ya sea anual, semestral, trimestral, mensual, etc.

3) Variaciones cíclicas. El componente cí­clico hace referencia a las oscilaciones que se producen en torno a la tendencia, que obedecen principalmente a la alternancia entre ciclos, es decir, entre perí­odos de crisis y de prosperidad económica.

4) Variaciones residuales o irregulares. El componente residual o de error se puede definir como movimientos en la serie que no muestran un carácter periódico reconocible y que son originados por fenómenos singulares que afectan a la variable en estudio de manera casual y no permanente.

Entonces,

¿Qué son los ajustes estacionales?

Los ajustes estacionales son un procedimiento estadístico para eliminar los efectos estacionales o lo que es lo mismo, eliminar la influencia de patrones estacionales en los datos. Estos efectos estacionales inducen a cambios o variaciones debido a la época del año o estacionalidad, provocando una distorsión de su verdadero movimiento.

La estacionalidad en una serie temporal se puede dar por causas fí­sicas, como el clima por ejemplo, o por causas de tipo institucional, como las vacaciones o festividades.

Por consiguiente, lo que se busca es quitar esas oscilaciones estacionales, desestacionalizando la serie, para intentar captar el movimiento real y así poder analizar la tendencia, realizar comparaciones en diferentes momentos de la serie o entre diferentes series.

Este tema ha dado lugar a numerosos estudios y algoritmos, entre los que destacan los programas del Census Bureau de Estados Unidos:

  • X-11 : https://www.census.gov/ts/papers/x11_spanish.pdf
  • X-12-ARIMA : https://www.census.gov/ts/papers/jbes98.pdf
  • X-13 ARIMA-SEATS : https://www.census.gov/srd/www/x13as/

Asimismo, destaca TRAMO-SEATS desarrollado por el Banco de España y JDEMETRA+ (https://ec.europa.eu/eurostat/cros/content/documentation_en), interfaz de TRAMO-SEATS y X12-ARIMA desarrollada por Eurostat en colaboración con el Banco Nacional de Bélgica, del Census Bureau de Estados Unidos, del Banco de España y del Banco Central Europeo.

Desestacionalizar una serie temporal con R

Y ahora, para hacerlo con R, usaremos el paquete Seasonal, el cual es una interfaz a X-13-ARIMA-SEATS.

Después de instalar el paquete con install.packages(“seasonal”), procedemos a descargar alguna serie temporal directamente desde el sitio web del Banco de la Reserva Federal de St.Louis (FRED), usando la librería “quantmod” tal y como se hizo en un post anterior sobre descarga y análisis de datos económicos con R: PIB a precios constantes.

Hay que resaltar que en el sitio web de la FRED, así­ como en la mayorí­a de organismos oficiales las series ya están desestacionalizadas, por ende, en este caso para realizar un ejercicio de ajuste estacional buscaremos una serie que no lo esté, por tanto, trabajaremos con los datos de empleo del sector de la construcción en Estados Unidos:

*All Employees: Construction (CEU2000000001).

*Units: Thousands of Persons, Not Seasonally Adjusted.

Esta serie indica, en miles de personas, el total de empleos en la construcción en Estados Unidos, desde el 01 de enero de 1939 hasta el 01 de octubre de 2017.

Como vamos a trabajar con series temporales, es conveniente especificar que los datos sean de esta naturaleza, y esto los hacemos con el comando “ts”; asimismo, hay que aclarar que el paquete “seasonal” sólo reconoce datos que sean de la clase “ts”.

library(quantmod)

getSymbols("CEU2000000001", src="FRED")
## [1] "CEU2000000001"
serie <- ts(CEU2000000001, start = c(1939,1), frequency = 12)

Si graficamos nuestra serie sin el ajuste estacional, obtenemos algo así­:

plot(CEU2000000001,
     main="Total de empleos en el sector de la construccion en EE.UU",
     xlab="Fecha",
     ylab="Miles de personas")
grid()

plot of chunk unnamed-chunk-37

Ahora, desestacionalizamos la serie con la librería “seasonal”, para ello utilizamos el comando “seas” que por defecto llama al procedimiento X-13ARIMA-SEATS para realizar el ajuste estacional, pero si se prefiere trabajar con el procedimiento x-11:

library(seasonal)

serie.ajuste <- seas(serie, x11 = "")

Ahora, para graficar las dos series, sin el ajuste y desestacionalizadas, el paquete “seasonal” lo hace con el comando “plot”:

plot(serie.ajuste,
     main="Total de empleos en el sector de la construccion en EE.UU",
     xlab="Fecha",
     ylab="Miles de personas")
grid()

plot of chunk unnamed-chunk-39

La línea de color rojo, es la serie ya desestacionalizada, y como se puede apreciar no tiene tanto ruido, está mucho más suavizada y se aprecia mejor la tendencia.

Para conocer casos prácticos de R para finanzas,  dirígete a la página de finanzas cuantitativas.

¿Te ha parecido útil? ¡Puntúa esta entrada!

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 3.6 / 5. Recuento de votos: 9

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

5 comentarios en “Desestacionalizar series temporales con R”

  1. Felicitaciones Conney, excelentes publicaciones!!

    Una consulta, conoces algún paquete en R para graficar una serie con quiebre en tendencia? Estuve intentando agregar a mi serie líneas de regresión por sub-muestras: antes y después del quiebre; sin embargo la gráfica me arroja un quiebre en intercepto y pendiente.

    Mil gracias de antemano.

    Leonel D.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Facebook
Twitter
LinkedIn
Scroll al inicio