Para este ejercicio usaremos datos de Busqueda de Calabaza en mexico del año 2004 a 2021
Datos usados en este ejercicio
xfun::embed_file(path = "docs/Busqueda_Calabaza.csv")Download Busqueda_Calabaza.csv
library(readr)
calabaza <- read_csv("docs/Busqueda_Calabaza.csv")## Rows: 213 Columns: 1
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## dbl (1): 20
##
## 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.
Tenemos un vector numerico llamado “Calabaza”
Grafiquemos los datos
plot(calabaza)Ahora transformaremos este vector numerico a un objeto de serie de tiempo
calabaza.ts <- ts(calabaza , start = c(2004,1), frequency = 12)Datos: Calabaza Empieza la serie de tiempo (start): 2004 Cada año se compone de un ciclo de 12 meses: frequency = 12
Ahora vemos los datos que ya son una serie de tiempo
print(calabaza.ts)## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2004 4 0 0 7 7 0 10 11 28 12 7 11
## 2005 5 14 19 6 6 9 2 10 18 11 6 9
## 2006 7 5 6 2 11 6 10 16 24 12 12 6
## 2007 8 3 3 7 3 4 7 11 26 15 7 6
## 2008 4 4 7 8 8 6 6 9 26 15 8 6
## 2009 7 9 9 8 8 11 15 23 50 40 35 25
## 2010 18 18 15 12 11 15 15 17 32 23 12 11
## 2011 9 13 11 11 10 10 12 16 48 22 12 14
## 2012 14 12 12 13 9 11 12 15 47 25 14 12
## 2013 12 11 10 13 14 13 12 18 54 27 13 15
## 2014 17 15 13 12 14 13 16 18 65 29 17 14
## 2015 14 15 15 14 15 13 17 21 65 31 16 13
## 2016 16 14 15 15 14 14 15 23 67 35 14 17
## 2017 16 16 15 18 16 16 18 20 62 35 17 15
## 2018 19 19 18 15 17 17 20 25 76 39 19 19
## 2019 18 20 18 20 19 24 20 30 88 40 18 21
## 2020 21 21 29 29 27 30 29 35 100 48 25 25
## 2021 26 28 26 22 24 25 28 36 69
Ahora grafiquemos con respecto al tiempo
plot(calabaza.ts, bg="blue", pch = 21, col="red", cex=0.7, xlab="anios",ylab="Busqueda")Ahora para hacer una comparacion entre los meses de cada año todos los eneros por ejemplo seran una poblacion buscando comida
esto lo haremos a traves de un grafico de caja y bigote
boxplot(calabaza.ts ~ cycle(calabaza.ts), bg="red", pch = 21, col="blue", cex=1, xlab="Meses",ylab="Busquedas")En este modelo, la serie observada es el resultado de sumar una tendencia que representa el comportamiento a largo plazo de la serie, un efecto estacional que describe sus fluctuaciones periódicas y un componente residual que describe las variaciones a corto plazo, normalmente impredecibles.
Con R es muy sencillo obtener una descomposición estructural de este tipo. Se usa el comando decompose:
\[ serie observada = Tendencia + efecto estacional + residuos \]
calabaza.ts.desc <- decompose(calabaza.ts)
plot(calabaza.ts.desc, xlab="year", col="red" )Esta descomposición se basa en métodos elementales:
la tendencia se calcula con una media móvil,
el efecto estacional se calcula promediando los valores de cada unidad de tiempo para todos los periodos (por ejemplo, todos los meses de enero si la serie es mensual) y luego centrando el resultado. Finalmente,
los residuos se obtienen restando a la serie observada las dos componentes anteriores.
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).
En el gráfico de calabaza.ts se observa que la serie es estacionaria. Su tendencia es incremental apartir del 2010 volviendose mas fuerta la tendencia. Esto es debido a la relacion que tiene Halloween con las Calabazas, es utilizada como adorno para esas fechas en Octubre creando la consistenacia de busqueda en ese Mes, tal y como se observa al Grafico de Caja Bigote.
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(calabaza.ts), col ="red")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(calabaza.ts)
dif1.x <- diff(x)
plot(dif1.x,col="red", type="o", cex=0.6, bg="black",pch=21)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)y = dif12.dif1.x
y <-y[-c(1,2,3,4,5,6),] ## Se eliminan del arreglo los datos con resultado INF, NAN, -INF
acf(y, main="Auto Correlacion y Covarianza")