La Base de Datos del presente trabajo fue provista por el tutor del curso, en un formato de Hoja de Calculo de Excel. A continuacion se muestra la lectura de la base de Datos.
library(readxl)
library(rmarkdown)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
BaseProd <- read_excel("C:/Users/garbe/Desktop/Octavo Semestre/Modelos de Riesgo/Proyecto 1/BaseProd.xlsx")
paged_table(head(BaseProd))
Se realizara primero una limpieza de la base de datos, para lo cual se eliminara la columna de #Codigo_ID, y Fecha pues no aportan informacion para el objetivo del presente trabajo.
# Variables y sus caracteristicas de Tipo.
str(BaseProd)
## tibble [22,965 x 25] (S3: tbl_df/tbl/data.frame)
## $ CODIGO_ID : num [1:22965] 1 2 3 4 5 6 7 8 9 10 ...
## $ Fecha : POSIXct[1:22965], format: "2018-01-29" "2018-01-25" ...
## $ MarcaMora_Tarjeta : num [1:22965] 0 0 0 0 0 0 0 0 0 0 ...
## $ ORIGEN_APROBACION : chr [1:22965] "Proactivo" "Demanda" "Demanda" "Proactivo" ...
## $ FORMA_PAGO : chr [1:22965] "No" "No" "No" "No" ...
## $ SALDO_TOTAL_TARJETA : num [1:22965] 1108.5 601.6 25.3 12996.6 173.7 ...
## $ CUPO_PROMEDIO_TARJETA : num [1:22965] 1400 3000 800 15600 4800 ...
## $ SALDO_UTILIZ_PROM_CLIENTE : num [1:22965] 1279.7 17 36.2 17592 574.3 ...
## $ CANTIDAD_TOTAL_AVANCES : num [1:22965] 0 0 0 0 0 0 0 0 0 0 ...
## $ ANTIGUEDAD_TARJETA_ANIOS : num [1:22965] 10 7 7 7 10 10 7 7 7 7 ...
## $ PROMEDIO_MENSUAL_CONSUMOS_LOCALES : num [1:22965] 242.3 0 0 404.6 42.3 ...
## $ MAXIMO_NUM_DIAS_VENCIDO : num [1:22965] 21 20 31 2 2 16 7 0 19 23 ...
## $ NUMERO_OPERACIONES_TITULAR : num [1:22965] 5 2 3 7 2 2 2 2 6 7 ...
## $ PROMEDIO_DIAS_SOBREGIRO_CC : num [1:22965] 0 0 0 0 0 0 0 0 0 19 ...
## $ PROMEDIO_MENSUAL_SALDO_CUENTA_PASIVO: num [1:22965] 0 1627 4066 8400 0 ...
## $ MARCA_CUENTA_CORRIENTE : chr [1:22965] "No" "Si" "Si" "Si" ...
## $ MARCA_CUENTA_AHORROS : chr [1:22965] "No" "Si" "Si" "Si" ...
## $ RIESGO_CLIENTE_TOTAL_GFP : num [1:22965] 1125.3 601.6 25.3 16228.7 173.7 ...
## $ VALOR_DEPOSITO_A_PLAZO : num [1:22965] 0 0 0 0 0 0 0 0 0 0 ...
## $ SEGMENTO_RIESGO : chr [1:22965] "E" "A" "A" "B" ...
## $ SUCURSAL : chr [1:22965] "QUITO" "QUITO" "QUITO" "AMBATO" ...
## $ EDAD : num [1:22965] 27 37 46 40 29 39 44 34 35 42 ...
## $ GENERO : chr [1:22965] "FEM" "MAS" "MAS" "MAS" ...
## $ INSTRUCCION : chr [1:22965] "PRI" "UNI" "SEC" "UNI" ...
## $ NUM_TC_SIST_FIM : num [1:22965] 1 0 4 2 2 3 1 0 4 5 ...
BaseProd <- select(BaseProd,-c('CODIGO_ID','Fecha'))
head(BaseProd)
## # A tibble: 6 x 23
## MarcaMora_Tarje~ ORIGEN_APROBACI~ FORMA_PAGO SALDO_TOTAL_TAR~ CUPO_PROMEDIO_T~
## <dbl> <chr> <chr> <dbl> <dbl>
## 1 0 Proactivo No 1108. 1400
## 2 0 Demanda No 602. 3000
## 3 0 Demanda No 25.3 800
## 4 0 Proactivo No 12997. 15600
## 5 0 Proactivo No 174. 4800
## 6 0 Proactivo No 320. 833.
## # ... with 18 more variables: SALDO_UTILIZ_PROM_CLIENTE <dbl>,
## # CANTIDAD_TOTAL_AVANCES <dbl>, ANTIGUEDAD_TARJETA_ANIOS <dbl>,
## # PROMEDIO_MENSUAL_CONSUMOS_LOCALES <dbl>, MAXIMO_NUM_DIAS_VENCIDO <dbl>,
## # NUMERO_OPERACIONES_TITULAR <dbl>, PROMEDIO_DIAS_SOBREGIRO_CC <dbl>,
## # PROMEDIO_MENSUAL_SALDO_CUENTA_PASIVO <dbl>, MARCA_CUENTA_CORRIENTE <chr>,
## # MARCA_CUENTA_AHORROS <chr>, RIESGO_CLIENTE_TOTAL_GFP <dbl>,
## # VALOR_DEPOSITO_A_PLAZO <dbl>, SEGMENTO_RIESGO <chr>, SUCURSAL <chr>,
## # EDAD <dbl>, GENERO <chr>, INSTRUCCION <chr>, NUM_TC_SIST_FIM <dbl>
Al tratar con una base de datos cuyas dimensiones son considerables no es sencillo identificar si existen datos faltantes, con el proposito de identificar dicho datos, haremos uso de la libreria naniar que nos sera de ayuda para identificar datos faltantes.
library(naniar)
Funcion naniar::n_miss, se retorna un valor numerico correspondiente al numero de datos faltantes.
n_miss(BaseProd)
## [1] 0
En este caso, no se encuentran datos faltantes.
miss_var_summary(BaseProd)
## # A tibble: 23 x 3
## variable n_miss pct_miss
## <chr> <int> <dbl>
## 1 MarcaMora_Tarjeta 0 0
## 2 ORIGEN_APROBACION 0 0
## 3 FORMA_PAGO 0 0
## 4 SALDO_TOTAL_TARJETA 0 0
## 5 CUPO_PROMEDIO_TARJETA 0 0
## 6 SALDO_UTILIZ_PROM_CLIENTE 0 0
## 7 CANTIDAD_TOTAL_AVANCES 0 0
## 8 ANTIGUEDAD_TARJETA_ANIOS 0 0
## 9 PROMEDIO_MENSUAL_CONSUMOS_LOCALES 0 0
## 10 MAXIMO_NUM_DIAS_VENCIDO 0 0
## # ... with 13 more rows
vis_miss(BaseProd)
Las técnicas de imputación de datos se aplica mediante réglas.
Reglas: + Si existe más del 20% de datos faltantes, las observaciones correspondientes a los datos faltantes son eliminados. + Si el porcentaje de datos faltantes es menor al 20% se aplica una técnica de imputación.
Técnicas de impmutación: + Media aritmética + Constante Global + Regresión + Regresión estocástica.
Dado que no se tiene datos faltantes, no es necesario realizar una imputación de datos.
La discretización esta relacionada con la transformación de datos nominales a numéricos o viceversa. Para el manejo de datos clasificaremos a las variables en categóricas y numéricas, a las variables categóricas en R se las trata como tipo factor.
Not! Creacion de factores a partir de las variables categoricas de la base de datos, Acontinuacion se presenta la discretiacion de los datos.
Nota! Ctrl V de lo que corte
Se realizara analisis por variables, para ello se dividiran por tipo de variable.
library(PCAmixdata)
## Warning: package 'PCAmixdata' was built under R version 3.6.3
corte <- splitmix(BaseProd)
dquanti <- as.data.frame(corte$X.quanti)
dcuali <- as.data.frame(corte$X.quali)
A continuacion se muestra el resumen por variable
names(dcuali)
## [1] "ORIGEN_APROBACION" "FORMA_PAGO" "MARCA_CUENTA_CORRIENTE"
## [4] "MARCA_CUENTA_AHORROS" "SEGMENTO_RIESGO" "SUCURSAL"
## [7] "GENERO" "INSTRUCCION"
names(dquanti)
## [1] "MarcaMora_Tarjeta"
## [2] "SALDO_TOTAL_TARJETA"
## [3] "CUPO_PROMEDIO_TARJETA"
## [4] "SALDO_UTILIZ_PROM_CLIENTE"
## [5] "CANTIDAD_TOTAL_AVANCES"
## [6] "ANTIGUEDAD_TARJETA_ANIOS"
## [7] "PROMEDIO_MENSUAL_CONSUMOS_LOCALES"
## [8] "MAXIMO_NUM_DIAS_VENCIDO"
## [9] "NUMERO_OPERACIONES_TITULAR"
## [10] "PROMEDIO_DIAS_SOBREGIRO_CC"
## [11] "PROMEDIO_MENSUAL_SALDO_CUENTA_PASIVO"
## [12] "RIESGO_CLIENTE_TOTAL_GFP"
## [13] "VALOR_DEPOSITO_A_PLAZO"
## [14] "EDAD"
## [15] "NUM_TC_SIST_FIM"
Nota! Si es necesario discretizar, MarcaMora_Targeta no es variable numerica es cualitativa.
Nota! Primero hay que discretizar los datos.
Nota! Discretizar!!
Nota! examinar la relacion entre las variables que se tienen (si es que se requiere)
Nota! Por la cantidad de Variables, es recomendable seleccionar las variables que aportan la mayor cantidad de Informacion
dividir aleatoriamente la muestra para tener un porcentaje para experimento y otro para prueba.
Nota!. Las muestras deben ser estadisticamente similares (Balanceo de Datos)