3.5 Implementación en R

Usaremos el conjunto de datos de eventos históricos:

data_url <- "https://raw.githubusercontent.com/vmoprojs/DataLectures/master/Scoring/eventosHistoricos.csv"
datos <- read.csv(data_url, sep = ";", dec = ".")

# Inspección
head(datos)
##                               unidadEjecutora fechaEvento perdidaBruta recuperacion
## 1           Unidad de Finanzas y Contabilidad   14-jun-18       247.44            0
## 2           Unidad de Operaciones  -Préstamos   7-sept-16       390.17            0
## 3 Unidad de Administración y Recursos Humanos   20-oct-15       296.03            0
## 4               Unidad de Negocios Costa Rica   14-ago-16       194.75            0
## 5                       Unidad de Operaciones   18-dic-15       243.00            0
## 6              Unidad de Negocios El Salvador   14-ene-16       275.36            0
##   perdidaReconocida                                                          detalleNivel3
## 1            247.44                7.1.3 - Incumplimiento de plazos o de responsabilidades
## 2            390.17                                                    2.1.1 - Hurto/ robo
## 3            296.03                                                  1.2.5 - Falsificación
## 4            194.75                   7.5.1 - Fallos de contrapartes distintas de clientes
## 5            243.00 7.4.2 - Registros incorrectos de clientes (con generación de pérdidas)
## 6            275.36                  3.2.1 - Responsabilidad en general (resbalones, etc.)
##                                               detalleNivel2
## 1 7.1 - Recepción, ejecución y mantenimiento de operaciones
## 2                                      2.1 - Hurto y fraude
## 3                                      1.2 - Hurto y fraude
## 4                            7.5 - Contrapartes comerciales
## 5                      7.4 - Gestión de cuentas de clientes
## 6                   3.2 - Higiene y seguridad en el trabajo
##                                                  detalleNivel1            causa
## 1                 7 - Ejecución, entrega y gestión de procesos         Personas
## 2                                           2 - Fraude externo Eventos externos
## 3                                           1 - Fraude interno         Personas
## 4                 7 - Ejecución, entrega y gestión de procesos         Personas
## 5                 7 - Ejecución, entrega y gestión de procesos         Personas
## 6 3 - Relaciones laborales y seguridad en el puesto de trabajo         Personas
summary(datos$perdidaBruta)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##   -21.57   116.70   239.08   405.68   478.17 10500.00

Limpieza básica

# Aseguramos que los valores de pérdida sean numéricos y positivos
losses <- datos %>%
  filter(perdidaBruta > 0) %>%
  pull(perdidaBruta)

Visualización de la severidad

ggplot(data.frame(losses), aes(x = losses)) +
  geom_histogram(aes(y = ..density..), bins = 30, fill = "lightblue", color = "black") +
  geom_density(color = "red", size = 1) +
  scale_x_log10() +
  labs(title = "Distribución empírica de la severidad", x = "Pérdida Bruta", y = "Densidad") +
  theme_minimal()