ANÁLISIS DE SERIES DE TIEMPO (TSA)

Para este ejercicio usaremos datos de la busqueda del Día de muertos (como festividad) de google trends buscados en México por un periodo de tiempo del 2004 hasta el 2021

#gas <- scan("http://verso.mat.uam.es/~joser.berrendero/datos/gas6677.dat")
#head(gas)

DayDeMuertos <- read_csv("DayDeMuertos.csv")
## 
## -- Column specification --------------------------------------------------------
## cols(
##   Mes = col_character(),
##   DayDeMuertos = col_double()
## )
head(DayDeMuertos[, 2])
## # A tibble: 6 x 1
##   DayDeMuertos
##          <dbl>
## 1            4
## 2            2
## 3            2
## 4            3
## 5            2
## 6            3

tenemos un vector numerico llamado “DayDeMuertos”

Grafiquemos los datos

#plot(gas)
plot(DayDeMuertos[, 2])

Ahora transformaremos este vector numerico a un objeto de serie de tiempo

#gas.ts <- ts(gas, start = c(1966,1), frequency = 12)
dMuertos.ts <- ts(DayDeMuertos[, 2], start = c(2004,1), frequency = 12)

datos: (DayDeMuertos[, 2]) empieza la serie de tiempo (start): enero de 2004 cada año se compone de un ciclo de 12 meses: frequency = 12

ahora vemos los datos que ya son una serie d tiempo

#print(gas.ts)
print(dMuertos.ts)
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2004   4   2   2   3   2   3   3   4   8 100  24   4
## 2005   3   1   2   2   2   2   3   2   5  82  26   2
## 2006   2   2   2   2   1   2   1   1   5  66  22   2
## 2007   2   1   1   2   1   1   1   1   4  57  17   1
## 2008   1   1   1   1   1   1   1   1   3  55  14   2
## 2009   1   1   1   1   1   1   1   1   3  44  12   2
## 2010   1   1   1   1   1   1   1   1   2  44  15   2
## 2011   2   2   1   1   1   1   1   1   3  36  18   3
## 2012   4   2   1   1   1   1   1   1   2  38  15   2
## 2013   2   2   1   1   1   1   1   1   2  35  14   1
## 2014   2   2   1   1   1   1   1   1   3  41  13   1
## 2015   1   2   1   1   1   1   1   1   3  46  14   1
## 2016   1   2   1   1   1   1   1   1   4  45  16   1
## 2017   1   1   1   1   1   1   1   1   3  37  16   1
## 2018   1   1   1   1   1   1   1   1   4  42  15   1
## 2019   1   1   1   1   1   1   1   1   4  47  24   1
## 2020   1   1   1   1   1   1   1   1   3  32  21   1
## 2021   1   1   1   1   1   1   1   1   4  11

Curiosamente aqui podemos ver como por Octubre se empiezan a elevar las busquedas pese que el día de muertos al que nos referimos es el de la tradición Méxicana que empieza en Noviembre.

Ahora grafiquemos con respecto al tiempo

#plot(gas.ts)
plot(dMuertos.ts)

Ahora para hacer una comparacion entre los meses de cada anio todos los eneros por ejemplo seran una poblacion

esto lo haremos a traves de un grafico de caja y bigote

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

DECOMPOSICION DE SERIES DE TIEMPO

Con R es muy sencillo obtener una descomposición estructural de este tipo. Se usa el comando decompose:

\[ serie observada = Tendencia + efecto estacional + residuos \]

#gas.ts.desc <- decompose(gas.ts)
#plot(gas.ts.desc, xlab="year")

dMuertos.ts.desc <- decompose(dMuertos.ts)
plot(dMuertos.ts.desc, xlab="year")

Esta descomposición se basa en métodos elementales:

La descomposicion solo es totalmente adecuada si se dispone de un número completo de periodos (por ejemplo, un múltiplo de 12 si la serie es mensual).

TRANSFORMACIONES BASICAS DE UNA SERIE

En el gráfico de dMuertos.ts se observa que la serie no es estacionaria. La serie presenta una tendencia aparentemente lineal en decenso y una estacionalidad muy marcada (las busquedas aumentan por Octubre a pesar de no ser el día que se busca). Además, la amplitud de las fluctuaciones decae con el tiempo por lo que la variabilidad tampoco es constante. Sin embargo, muchos modelos importantes de series temporales corresponden a series estacionarias (es decir, sin tendencia ni estacionalidad y con variabilidad constante). Antes de ajustar un modelo estacionario tenemos que transformar la serie original.

Estabilización de la varianza: Para estabilizar la variabilidad se suelen tomar logaritmos. Esta transformación funcionará bien cuando la variabilidad sea aproximadamente proporcional al nivel de la serie. Representamos la serie transformada mediante

#plot(log(gas.ts))
plot(log(dMuertos.ts))

Eliminacion de la tendencia: Una forma sencilla de eliminar una tendencia aproximadamente lineal es diferenciar la serie, es decir, considerar la serie de diferencias entre una observación y la anterior en lugar de la serie original. Si xt es una serie contenida en x, para calcular:

\[ \nabla x_t = x_t -x_{t-1} \]

#x <- log(gas.ts)
#dif1.x <- diff(x)
#plot(dif1.x)

x <- log(dMuertos.ts)
dif1.x <- diff(x)
plot(dif1.x)

Eliminación de estacionalidad: Para eliminar la estacionalidad de una serie mensual se pueden tomar diferencias estacionales de orden 12. Si xt es la serie que queremos desestacionalizar, se trata de calcular:

\[ \nabla_{12} x_t = x_t - x_{t-12} \]

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

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