Paquetes necesarios:
library(data.table)
library(tidyverse)
library(readxl)
library(ggplot2)
library(dplyr)
library(lubridate)
library(scales)
Cargamos base:
base <- read_excel('C:/Users/matir/OneDrive/Escritorio/Mati/Universidad/2022/Segundo Trimestre/Analitica aplicada a Negocios-Finanzas/Bases/creditos_consumo_A1.xlsx',
skip = 0,
col_names = TRUE,
col_types = c("date","numeric", "numeric",
"numeric", "text", "numeric", "date",
"numeric", "numeric"))
A. VALIDACIÓN DE LA INFORMACIÓN
Periodo <- base %>% count(FechaProceso)
Suma_monto <- aggregate(x= base$SaldoMonto,
by= list(base$FechaProceso),
FUN = sum)
Prom_monto <- aggregate(x= base$SaldoMonto,
by= list(base$FechaProceso),
FUN = mean)
Prom_monto_credito <- aggregate(x= base$MontoCredito,
by= list(base$FechaProceso),
FUN = mean)
periodo_total <- cbind(Periodo, Suma_monto, Prom_monto)
periodo_total <- subset( periodo_total, select = -c(Group.1, Group.1))
Para graficar:
creditos_ts <- ts(Periodo[,2],
start= 2017,
frequency = 12)
Encontré dos formas de graficar la Time Series:
ggplot(Periodo, aes(x=FechaProceso, y=n)) + geom_line(color="blue") #en esta hay que tratar el eje x con el fin de que salga cada mes.
plot.ts(creditos_ts)
Graficamos con las demas variables:
options(scipen=10000)
suma_saldo_montos <- ts(periodo_total[1:18,3],
start= 2017,
frequency = 12)
plot.ts(suma_saldo_montos)
# intentando con ggplot:
periodo_total_ggplot <- periodo_total
class(periodo_total_ggplot$FechaProceso)
## [1] "POSIXct" "POSIXt"
periodo_total_ggplot$FechaProceso <- as.Date(periodo_total_ggplot$FechaProceso)
class(periodo_total_ggplot$FechaProceso)
## [1] "Date"
ggplot(periodo_total_ggplot, aes(x=FechaProceso, y= x)) +
geom_line(color="blue") +
scale_x_date(date_labels = "%d-%b-%Y", date_breaks = "1 month") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=0.5)) +
ggtitle("Suma Saldo Montos de Creditos \n a través del Tiempo 2017-2018 (mensual)")+
labs(y = "Monto", x=element_blank())
#faltaría modificar las labels de los ejes x e y pero las bases están.
Siguiente grafico:
Prom_monto_credito_ggplot <- Prom_monto_credito
class(Prom_monto_credito_ggplot$Group.1)
## [1] "POSIXct" "POSIXt"
Prom_monto_credito_ggplot$Group.1 <- as.Date(Prom_monto_credito_ggplot$Group.1)
ggplot(Prom_monto_credito_ggplot, aes(x=Group.1, y= x)) +
geom_line(color="blue") +
scale_x_date(date_labels = "%d-%b-%Y", date_breaks = "1 month") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=0.5)) +
ggtitle("Promedio Montos de Creditos \n a través del Tiempo 2017-2018 (mensual)")+
labs(y = "Monto", x=element_blank())
Útilmo grafico:
# promedio SALDO MONTOS (objeto : Prom_monto)
Prom_monto_ggplot <- Prom_monto
class(Prom_monto_ggplot$Group.1)
## [1] "POSIXct" "POSIXt"
Prom_monto_ggplot$Group.1 <- as.Date(Prom_monto_ggplot$Group.1)
ggplot(Prom_monto_ggplot, aes(x=Group.1, y= x)) +
geom_line(color="blue") +
scale_x_date(date_labels = "%d-%b-%Y", date_breaks = "1 month") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=0.5)) +
ggtitle("Promedio SALDO Montos de Creditos \n a través del Tiempo 2017-2018 (mensual)")+
labs(y = "Monto", x=element_blank())
¿Qué podría inferir del comportamiento de la cartera en el tiempo?
Claramente, se puede visualizar una relacion entre el aumento de número de creditos y el saldo de sus montos a través del tiempo. En efecto, a mayor cantidad de creditos otorgados por el banco, los saldos serán mayores y también los montos de los creditos. Esto se debe a la capacidad de apalancamiento que va generando la entidad bancaria.
PARTE B: TRANSFORMACIÓN O CONSTRUCCIÓN DE VARIABLES
Respuesta: Supondremos que los creditos con “incumplimiento” serán aquellos cuyos días de mora serán mayores a 90
base$incumplimiento <- ifelse(base$DiasMora>90,1,0)
vigente <- filter(base, DiasMora<90)
incumplimiento <- filter(base, DiasMora>90)
# 12 meses en días = 365
base$transicion_al_incumplimiento <- ifelse(base$DiasMora>365,1,0)
base$antiguedad_credito <- as.numeric(difftime("2018-06-30", base$FechaActivacion), units="days")
class(base$antiguedad_credito)
## [1] "numeric"
base$antiguedad_credito_en_meses <- round(base$antiguedad_credito/30,1)
# as.numeric(difftime("2015-12-07", "2015-12-05"), units="hours")
# antiguedad <- c([0, 4];[5,13]; [14,16]; [17,21], [21,[ )
base$porcentaje_pagado_credito <- round((base$MontoCredito-base$SaldoMonto)/base$MontoCredito,2)
No sé a que se refiere con el estado del credito.
PRUEBAS:
library(corrplot)
base2 <- as.data.frame(sapply(base, as.numeric))
B = cor(base2)
corrplot(B, method = 'color', order = 'alphabet', ,number.cex = 0.35, tl.cex = 0.7)
# arbol1 <- rpart(incumplimiento~porcentaje_pagado_credito + antiguedad_credito_en_meses, data=base, method = "class")
# rpart.plot(arbol1)