Análisis de series temporales en R

El análisis de series temporales es un técnica estadística para estimar el comportamiento de una serie de datos medidos en determinados momentos y ordenados cronológicamente.

A continuación se muestra un ejemplo de análisis de serie temporal en R sobre el comportamiento del consumo de gasolina a lo largo del tiempo.

# Carga de datos del consumo de gasolina desde 1966

gas = scan('http://www.diegocalvo.es/wp-content/uploads/2016/09/datos-serie-temporal.txt')
plot(gas)

# Reorganización de los datos por fecha y mes

gas.ts = ts(gas, start = c(1966,1), frequency = 12)
print(gas.ts)
plot(gas.ts)

# Análisis de cajas por meses

boxplot(gas.ts ~ cycle(gas.ts))
cycle(gas.ts)

# Descomponer la serie temporal en sus componentes = Tendencia, Senoidal y Aleatoria

gas.ts.desc = decompose(gas.ts)
plot(gas.ts.desc, xlab='Año')

# Otra forma de descoponer la serie temporale

s <- stl(gas.ts, s.window = "periodic")
s$time.series
plot(s)

# Para estabilizar la varianza se suelen tomar logaritmos

plot(log(gas.ts))

# Para eliminar la tendencia lo que se hace es eliminar la serie temporal t-1

x = log(gas.ts)
dif1.x = diff(x)
plot(dif1.x)

# Para eliminar la estacionalidad lo que se hace es eliminar la serie temporal t-12

dif12.dif1.x = diff(dif1.x, lag=12)
plot(dif12.dif1.x)

# Transformamos la serie del consumo de gasolina de manera que un modelo estacionario sea apropiado para la serie transformada. El siguiente código se puede utilizar para representar el correlograma de la serie. El correlograma es una representación gráfica de las autocorrelaciones ρ(k), es decir, las correlaciones entre xt y xt+k, en función de k:
# Siempre se tiene que ρ(0)=1. Las líneas discontinuas representan las bandas de confianza de ρ(k) de nivel 95% bajo la hipótesis de que la serie es un ruido blanco (incorrelada). En el ejemplo las autocorrelaciones más significativas son las correlaciones entre la observación de un mes y la del mes siguiente, y la observación de un mes con la del mismo mes del año siguiente.

y = dif12.dif1.x
acf(y)