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

  1. Análisis descriptivo de las variables relevantes. Realice gráficos de la evolución mensual de la suma de la variable SaldoMonto en el tiempo, la cantidad de créditos en el tiempo y los promedios de las variables SaldoMonto y MontoCredito en el tiempo.
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

  1. Identificar los créditos en incumplimiento y generar la marca de incumplimiento

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)
  1. Generarla base de datos “vigente” con los clientes sin incumplimiento y la base de datos “incumplimiento” con los clientes en incumplimiento.
vigente <- filter(base, DiasMora<90)
  
incumplimiento <- filter(base, DiasMora>90)
  1. Generar la variable transición al incumplimiento considerando los créditos en incumplimiento en un horizonte de 12 meses
# 12 meses en días = 365

base$transicion_al_incumplimiento <- ifelse(base$DiasMora>365,1,0)
  1. Generar variable antigüedad del crédito en meses.
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,[ )
  1. Construir la variable porcentaje pagado del crédito, esto es, (MontoCredito - SaldoMonto)/MontoCredito
base$porcentaje_pagado_credito <- round((base$MontoCredito-base$SaldoMonto)/base$MontoCredito,2)
  1. Generar la variable Estado del Crédito

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)