Análisis básico de series de tiempo.
Para este segundo ejemplo usaremos datos de busquedas de la palabra “Día del niño”, desde 2004.
library(readr)
diaNiño <- read_csv("diaNiño.csv")
## Rows: 213 Columns: 1
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (1): 0
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(diaNiño)
Grafiquemos los datos.
plot(diaNiño)
## Warning in xy.coords(x, y, xlabel, ylabel, log): NAs introducidos por coerción
Para tratar este vector numerico como una serie de tiempo, utilizaremos el comando ts (time-series objects).
diaNiño.ts <- ts(diaNiño, start = c(2004,1), frequency = 12)
print(diaNiño.ts)
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2004 12 24 19 12 2 8 2 9 2 8 3 2
## 2005 3 29 22 12 2 2 8 2 2 8 3 3
## 2006 3 29 14 20 3 2 3 3 1 2 1 3
## 2007 8 18 13 12 8 3 3 1 3 8 3 3
## 2008 8 24 16 12 8 1 3 3 3 3 3 3
## 2009 8 20 10 15 8 3 3 3 3 3 3 3
## 2010 8 15 14 15 8 3 3 3 3 3 1 3
## 2011 8 20 11 20 9 3 3 3 8 3 3 8
## 2012 8 18 17 24 9 3 3 3 3 3 3 3
## 2013 9 15 21 29 12 3 3 3 8 3 3 3
## 2014 12 24 25 6 9 3 3 3 3 3 8 3
## 2015 9 24 31 7 9 3 3 3 8 3 3 8
## 2016 12 24 30 4 8 3 3 3 3 3 3 8
## 2017 9 29 26 29 9 3 3 3 3 8 8 8
## 2018 8 20 27 29 8 3 3 3 3 3 3 3
## 2019 8 24 23 29 8 3 3 3 3 3 3 3
## 2020 8 12 28 29 8 3 3 3 8 3 3 3
## 2021 8 15 5 24 8 3 3 3 8
Ahora que tenemos una variable que es un objeto orientado a tiempo, podemos tener una gráfica en la cual se entienda la periodicidad de los aumentos de la búsqueda por año.
plot (diaNiño.ts)
Ahora haremos una comparación interanual del aumento de las búsquedas.
boxplot(diaNiño.ts~cycle(diaNiño.ts))
Entendamos los ciclos del comportamiento de esta búsqueda en google trends.
cycle (diaNiño.ts)
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2004 1 2 3 4 5 6 7 8 9 10 11 12
## 2005 1 2 3 4 5 6 7 8 9 10 11 12
## 2006 1 2 3 4 5 6 7 8 9 10 11 12
## 2007 1 2 3 4 5 6 7 8 9 10 11 12
## 2008 1 2 3 4 5 6 7 8 9 10 11 12
## 2009 1 2 3 4 5 6 7 8 9 10 11 12
## 2010 1 2 3 4 5 6 7 8 9 10 11 12
## 2011 1 2 3 4 5 6 7 8 9 10 11 12
## 2012 1 2 3 4 5 6 7 8 9 10 11 12
## 2013 1 2 3 4 5 6 7 8 9 10 11 12
## 2014 1 2 3 4 5 6 7 8 9 10 11 12
## 2015 1 2 3 4 5 6 7 8 9 10 11 12
## 2016 1 2 3 4 5 6 7 8 9 10 11 12
## 2017 1 2 3 4 5 6 7 8 9 10 11 12
## 2018 1 2 3 4 5 6 7 8 9 10 11 12
## 2019 1 2 3 4 5 6 7 8 9 10 11 12
## 2020 1 2 3 4 5 6 7 8 9 10 11 12
## 2021 1 2 3 4 5 6 7 8 9
Componentes estructurales de una serie de tiempo.
Serie observada = Tendencia + Efecto Estacional + Residuos.
diaNiño.ts.desc <- decompose(diaNiño.ts)
plot (diaNiño.ts.desc, xlab = "Year")
Antes de hacer la estabilización de la varianza, transformaremos nuestra serie a una logaritmica.
plot (log(diaNiño.ts))
x <- log(diaNiño.ts)
dif1.x <- diff(x)
plot(dif1.x)
dif12.dif1.x <- diff(dif1.x, log=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.
y = dif12.dif1.x
acf(y)
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.
Las busqudas de el “Dia del niño” en Google Trends desde 2004 no han sido muy variables, todos los años, por las mismas fechas en las que es el dia del niño se han hecho busquedas de esta palabra, ya que la gente quiere saber más acerca de este día.