Cargamos las librerias a usar
library(ggplot2)
library(rmarkdown)
library(fpp2)
## 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
##
library(forecast)
library(timeDate)
Cargamos la base 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:
url <- "https://raw.githubusercontent.com/pablogaibor/ESPE/main/pib_ecuador.csv"
pib_ec <- read.csv(url,header = T,sep = ";")
pib_ec
## anio pib
## 1 2007 51007777
## 2 2008 61762635
## 3 2009 62519686
## 4 2010 69555367
## 5 2011 79276664
## 6 2012 87924544
## 7 2013 95129659
## 8 2014 101726331
## 9 2015 99290381
## 10 2016 99937696
## 11 2017 104295862
## 12 2018 107562008
## 13 2019 108108009
## 14 2020 99291124
Una vez cargada la base de datos, podemos ver su gráfico de la siguiente manera, como si se tratase de un conjunto de datos de corte transversal.
graf1<-ggplot(pib_ec, aes(x=anio,y=pib))+ #Deginimos la base a utilizar y los ejes
geom_line(color='blue')+ #Escogemos el tipo de gráfico y el color de la lÃnea
labs(x="Fecha",y='PIB en miles de dólaares')+ #Establecemos las etiquetas de los ejes
ggtitle("Evolución del PIB en Ecuador 2007 - 2020") +
theme_minimal() + #Agregamos un tema
scale_y_continuous(labels = scales::number_format(scale = 1e3, suffix = "")) + #Modificamos la escala de y
scale_x_continuous(breaks = unique(pib_ec$anio), labels = unique(pib_ec$anio))+ # Mostrar todas las etiquetas del eje x#
theme(axis.text.x = element_text(angle = 45, hjust = 1,vjust = 1)) # Rotar las etiquetas del eje x
graf1
Sin embargo, debemos recordar que ahora estamos manejando series de tiempo y no datos de corte transversal, para lo cual tenemos que transformar a nuestros datos al formato de series de tiempo con el siguiente código:
pib_ts <- ts(pib_ec$pib, st = 2007, freq = 1)
En donde la función ts sirve para transformar los datos en formato de serie de tiempo, y sus argumentos principales, st indica el periodo de inicio de la serie de tiempo, y freq indica la frecuencia de los datos, como son anuales es 1, si fuesen datos semestrales serÃa 2, trimestrales 4 y asà de acuerdo con su frecuencia. Con los datos en formato de serie de tiempo, es más sencillo graficar la misma, simplemente se ejecuta el siguiente código:
plot.ts(pib_ts)
Si queremos otro tipo de gráfico podemos utilizar la siguiente función:
autoplot(pib_ts)
Cargamos la base de datos del nivel de depósitos en un banco comercial
url2 <- "https://raw.githubusercontent.com/pablogaibor/ESPE/main/depositosBP.csv"
depositosBP <- read.csv(url2,header = T,sep = ",")
Observamos el tipo de datos que tiene esta base de datos.
str(depositosBP)
## 'data.frame': 165 obs. of 5 variables:
## $ FECHA : chr "12/1/2006" "1/1/2007" "2/1/2007" "3/1/2007" ...
## $ monetarios : num 1011461 967248 937583 950741 976861 ...
## $ ahorros : num 857671 861035 855897 851398 907403 ...
## $ vista : num 1869132 1828284 1793480 1802139 1884264 ...
## $ obligaciones: num 2304082 2273728 2263982 2275485 2390296 ...
Se puede constatar que la variable FECHA está en formato caracter, por lo cual, tenemos que convertir esta variable a un tipo de dato de fecha, de acuerdo con el orden en el que están las fechas (mes/dÃa/año)
depositosBP$FECHA <- as.Date(depositosBP$FECHA,"%m/%d/%Y")
str(depositosBP)
## 'data.frame': 165 obs. of 5 variables:
## $ FECHA : Date, format: "2006-12-01" "2007-01-01" ...
## $ monetarios : num 1011461 967248 937583 950741 976861 ...
## $ ahorros : num 857671 861035 855897 851398 907403 ...
## $ vista : num 1869132 1828284 1793480 1802139 1884264 ...
## $ obligaciones: num 2304082 2273728 2263982 2275485 2390296 ...
Ahora podemos constatar que la variable FECHA contiene datos de tipo fecha
En nuestra base de datos depositosBP tenemos 4 variables además de la fecha.
Este primer código nos da una serie de tiempo univariada, es decir vamos a crear una serie de tiempo con la variable obligaciones:
obligaciones.ts<-ts(depositosBP[,5],frequency=12,start=c(2006,12),end=c(2020,08))
Graficamos
autoplot(obligaciones.ts)
Con el siguiente código tomamos todas las variables de la base de datos y las transformamos en series de tiempo.
depositos.ts<-ts(depositosBP[-1],class=c("mts"),frequency=12,start=c(2006,12))
Graficamos
autoplot(depositos.ts)