Introducción al análisis de series temporales

Análisis dinámico
Series temporales
Estacionalidad
Frecuencia
Gráfico de Series Temporales
Author

Javier Sánchez García

Published

January 1, 2001

Los datos de series temporales permiten responder preguntas de inferencia y predicción en relación a una variable cuyo valor no varía entre sujetos, sino que varía conforme pasa el tiempo.

Para trabajar con R en series temporales, se usa la función ts()

x = data.frame(date=c(2000,2001,2002,2003,2004), z=c(4, 7, 21, 54, 64)) #Crear unos datos
y = ts(x) #Decirle a R que son de tipo serie temporal.
class(x) #Obtener la clase de objeto de x.
[1] "data.frame"
class(y) #Obtener la clase de objeto de y.
[1] "mts"    "ts"     "matrix"
head(y) #Visualizar los datos.
     date  z
[1,] 2000  4
[2,] 2001  7
[3,] 2002 21
[4,] 2003 54
[5,] 2004 64

Si los datos son anuales, R solo necesita la fecha de inicio.

y=ts(c(4, 7, 21, 54, 64), start = 2000) #Crear los datos desde la fecha de inicio.
head(y)
[1]  4  7 21 54 64

En caso de que las observaciones de la variable se produzcan en una frecuencia distinta a la anual, basta con añadir el comando frequency

x=rnorm(1200, mean=50, sd=20) #Crear unos datos normales aleatorios de media 50 y desviación típica 20.
y=ts(x, start=2000, frequency=12) #Decirle a R que esos datos son de series temporales, empiezan en el año 2000, y tienen frecuencia mensual (12).
summary(y)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 -9.963  36.546  50.230  49.795  62.945 124.281 

De forma que frecuencias menores a la anual se especifican teniendo en cuenta el número de veces (\(k\)) que hay que dividir el año, o k-ésimos de año. Si la frecuencia es mensual, el año se divide en 12 meses (\(k=12\)). Si es trimestral, el año se divide en 4 trimestres (\(k=4\)).

Frecuencia \(k\)
Anual 1
Semestral 2
Trimestral 3
Cuatrimestral 4
Mensual 12
Semanal 52
Diaria 365

Gráfica de series temporales

El dicho popular “una imagen vale más que mil palabras” es perfectamente aplicable al caso de las variables de tipo serie temporal, donde el visualizar tablas de datos es poco informativo. La opción más útil en estos casos es empezar el análisis con un gráfico de serie temporal, que tenga el valor de la variable en el eje y, y el paso del tiempo en el eje x.

La librería forecast es especialmente útil para este tipo de gráficos. Si la variable es de series temporales, el comando autoplot producirá un gráfico de series temporales.

library(forecast, quietly=TRUE)
library(ggplot2, quietly=TRUE)#Cargar librerías.
data("USAccDeaths") #Conjunto de datos de muertes por accidentes en EEUU desde 1973 a 1979. 
class(USAccDeaths) #Ver que clase de variable es.
[1] "ts"
autoplot(USAccDeaths) + theme_classic() #Autoplot de una variable de series temporales dará una gráfica de series temporales. 

El gráfico de series temporales arroja mucha más información que sus estadísticos descriptivos. Por ejemplo, es fácilmente interpretable que el pico de muertos por accidentes se produce en el primer año de la serie, que sigue a una caída drástica en el número de muertes por accidentes.

Además, es facilmente percibible el hecho de que, a mitad de año, el número de muertes por accidentes aumenta sustancialmente, para después caer a finales del año y principios del siguiente. A mediados del año la estación del año es verano, fecha en la que los trabajadores suelen tomar vacaciones y aumentan actividades como el nado en playas y piscinas que pueden dar lugar a ahogamientos. También aumentan viajes por carretera que pueden dar lugar a accidentes. A finales del año y principios del siguiente, es invierno, fecha en la que se reducen considerablemente tanto el baño como el desplazamiento. Esto es lo que se denomina como patrón estacional o simplemente estacionalidad, haciendo evidente que el comportamiento de la serie depende de la estación del año en que se encuentre. Otros ejemplos claros de patrones estacionales tienen que ver con las temperaturas o la lluvia.

En el paquete Forecast, además de en otros paquetes como Ecdat, se pueden encontrar muchos conjuntos de datos disponibles para el análisis. Sin embargo, el primero se caracteriza por contener variables de series temporales, como por ejemplo EuStockMarkets.

data("EuStockMarkets") #Cargar conjunto de datos.
head(EuStockMarkets) #Observar tipo de datos, fecha de comienzo, final, y frecuencia.
Time Series:
Start = c(1991, 130) 
End = c(1991, 135) 
Frequency = 260 
             DAX    SMI    CAC   FTSE
1991.496 1628.75 1678.1 1772.8 2443.6
1991.500 1613.63 1688.5 1750.5 2460.2
1991.504 1606.51 1678.6 1718.0 2448.2
1991.508 1621.04 1684.1 1708.1 2470.4
1991.512 1618.16 1686.6 1723.1 2484.7
1991.515 1610.61 1671.6 1714.3 2466.8
autoplot(EuStockMarkets) + theme_classic() #Gráfico de series temporales.

Como se puede comprobar, si se tienen varias series temporales apiladas en un mismo conjunto de datos, autoplot representa cada una por separado.

Este tipo de gráficos es muy útil pues permite obtener mucha información de manera compacta. Por ejemplo:

  • El índice bursátil de acciones alemán (DAX) superó al francés (CAC) en 1994.

  • Suiza (SMI) pasó de tener el penúltimo índice bursátil a tener el primero en valor alrededor de 1997.

  • El crecimiento del índice bursátil inglés (FTSE) presenta una tendencia de tipo lineal y cierto declive, mientras que los índices suizo, alemán y francés presentan tendencias exponenciales de crecimiento. Esto podría implicar que los inversores interpretan que los últimos países experimentarán un gran crecimiento económico y, por tanto, prefieren depositar sus fondos en estos índices, mientras que esperan que el crecimiento económico de Inglaterra se estanque.

  • Suiza (SMI) y Alemania (DAX) presentan patrones muy similares de crecimiento desde finales de 1997. Podría decirse que co-mueven.