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
## 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()