Cargamos las librerias a usar
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
## ── Attaching packages ────────────────────────────────────────────── fpp2 2.5 ──
## ✔ forecast 8.16 ✔ expsmooth 2.3
## ✔ fma 2.5
##
Cargamos las bases de datos, para esto, se procede primero a obtener el enlace url de la página o repositorio en donde se encuentra almacenada la base, para luego asignarla a un nuevo objeto de la siguiente manera:
url2 <- "https://raw.githubusercontent.com/pablogaibor/ESPE/main/depositosBP.csv"
depositosBP <- read.csv(url2,header = T,sep = ",")
vista.ts<-ts(depositosBP[,4],frequency=12,start=c(2006,12),end=c(2014,12))
La base 1 corresponde a los depósitos a la vista de un banco comercial de Ecuador. Esta base tiene información mensual, por lo que el argumento “frequency” es 12, inicia en diciembre de 2006 y finaliza en diciembre de 2014, para esto se ingresa los argumentos “start” y “end”. Procedemos a graficarla con el siguiente código:
autoplot(vista.ts)
Procedemos a cargar la segunda base, de igual manera, cargamos primero el enlace del repositorio donde se encuentra almacenada y luego la asignamos a un nuevo objeto.
url3 <- "https://raw.githubusercontent.com/pablogaibor/ESPE/main/cajassemanal.csv"
cajassemanal<- ts(read.csv(url3)[,2],freq=365.25/7,start=2015)
La base 2 corresponde a la cuenta de caja de un banco comercial de Ecuador. Esta base tiene información semanal, por lo que el argumento “frequency” es 365.25/7; desto debido a que cada 4 años es bisiesto, entonces este año adicional se divide entre los 4, teniendo la parte decimal de 0.25, inicia en la primera semana de 2015.
Procedemos a graficar la base con el siguiente código:
autoplot(cajassemanal)
Como se pudo revisar en el contenido de la materia, analizaremos gráficamente dos tipos de descomposiciones, aditiva y multiplicativa.
Para mostrar gráficamente el método de descomposición aditivo, seleccionamos la serie de tiempo de la cuenta caja de un banco comercial en Ecuador. Escogemos este método porque las fluctuaciones estacionales lucen aproximadamente constantes con el tiempo y las fluctuaciones aleatorias parecen ser constantes en tamaño a lo largo del tiempo. Para esto, tomamos un periodo de la serie de tiempo conveniente para el análisis comprendido entre el 2015 y 2019, sin tomar en cuenta los datos de la pandemia.
caja_banco_semanal<-window(cajassemanal,start=2015,end=2015+(365.25*4)/365.25)
autoplot(caja_banco_semanal)
Para acortar una serie de tiempo utilizamos la función “window” e indicamos el intervalo que deseamos seleccionar. Observe que en la fecha de fin aplicamos este argumento "end=2015+(365.25*4)/365.25" en el cual se indica que se adiciona 4 años más desde la fecha de inicio.
Con el siguiente código descomponemos la serie por el método aditivo:
graf21desc <- caja_banco_semanal %>% decompose(type="additive")
La función utilizada fue “decompose” y en el argumento “type” indicamos el tipo de descomposición, en este caso, “additive” que indica aditiva. Procedemos a graficar los resultados.
autoplot(graf21desc) + xlab("Año") +
ggtitle("Descomposición clásica aditiva de la cuenta caja de un banco comercial")
Para mostrar gráficamente el método de descomposición multiplicativa seleccionamos la serie de tiempo depósitos a la vista de un banco comercial en Ecuador. Escogemos este método porque el efecto estacional tiene a aumentar a medida que aumenta la tendencia, y la varianza y la tendencia aumentan con el tiempo.
Con el siguiente código descomponemos la serie por el método multiplicativo:
graf22desc <- vista.ts %>% decompose(type="multiplicative")
La función utilizada fue “decompose” y en el argumento “type” indicamos el tipo de descomposición, en este caso, “multiplicative” que indica multiplicativa. Procedemos a graficar los resultados.
autoplot(graf22desc) + xlab("Año") +
ggtitle("Descomposición clásica multiplicativa de los depósitos a la vista de un banco comercial")
Una vez descompuesta la serie de tiempo, por cualquiera de los dos métodos, la forma de obtener los componentes es la siguiente.
Descomponemos y almacenamos en un nuevo objeto
vista_descompuesta <- vista.ts %>% decompose(type="multiplicative")
El componente de tendencia lo seleccionamos con el siguiente código:
t <- vista_descompuesta$trend
El componente de estacionalidad con el siguiente código:
s <- vista_descompuesta$seasonal
Y el componente del término de error:
r <- vista_descompuesta$random
Para realizar la desestacionalización, primero tenemos que asignar a un nuevo objeto la descomposición realizada:
fit3 <-caja_banco_semanal %>% decompose(type="additive")
Una vez tenemos nuestro objeto “fit3” que contiene los datos de la descomposición, procedemos a graficar nuestra serie desestacionalizada. En el siguiente código, se agrega el argumento “autolayer” con el cual agregamos al gráfico la línea de tendencia y la nueva serie desestacionalizada. El resto de argumentos sirven para dar formato al gráfico y agregar etiquetas y leyendas.
autoplot(caja_banco_semanal, series="Serie de tiempo") +
autolayer(trendcycle(fit3), series="Tendencia") +
autolayer(seasadj(fit3), series="Serie de tiempo desestacionalizada") +
xlab("Año") + ylab("") +
ggtitle("Serie de tiempo caja desestacionalizada") +
scale_colour_manual(values=c("gray","blue","red"),
breaks=c("Serie de tiempo","Serie de tiempo desestacionalizada","Tendencia"))
## Warning: Removed 51 rows containing missing values (`geom_line()`).
Para trabajar con la serie de tiempo ajustada, en el caso de que sea una descomposición aditiva, se realiza lo siguiente:
caja_desestacionalizada <- fit3$trend + fit3$random
autoplot(caja_desestacionalizada)
Para realizar la desestacionalización, primero tenemos que asignar a un nuevo objeto la descomposición realizada, en este caso multiplicativa:
fit2 <-vista.ts %>% decompose(type="multiplicative")
Una vez tenemos nuestro objeto “fit2” que contiene los datos de la descomposición, procedemos a graficar nuestra serie desestacionalizada. En el siguiente código, se agrega el argumento “autolayer” con el cual agregamos al gráfico la línea de tendencia y la nueva serie desestacionalizada. El resto de argumentos sirven para dar formato al gráfico y agregar etiquetas y leyendas.
autoplot(vista.ts, series="Serie de tiempo original") +
autolayer(trendcycle(fit2), series="Tendencia") +
autolayer(seasadj(fit2), series="Serie de tiempo desestacionalizada") +
xlab("Año") + ylab("") +
ggtitle("Serie de tiempo depósitos a la vista desestacionalizada") +
scale_colour_manual(values=c("gray","blue","red"),
breaks=c("Serie de tiempo original","Serie de tiempo desestacionalizada","Tendencia"))
## Warning: Removed 12 rows containing missing values (`geom_line()`).
Para trabajar con la serie de tiempo ajustada, en el caso de que sea una descomposición multiplicativa, se realiza lo siguiente:
vista_desestacionalizada <- fit2$trend*fit2$random
autoplot(vista_desestacionalizada)