Conociendo los Datos
Credit Card Approval Prediction.
Introducción.
El acceso a una tarjeta de crédito ha tenido un crecimiento fuerte a nivel global durante los últimos años; sin embargo, la entrega desmedida y sin analisis rigorosos de los requisitos que deben cumplir los solicitantes ha generado el incremento de la mora en los pagos, esto sumado a la crisis económica ocasionada por la pandemia han causado perdidas en el sector del crédito . Se ha evidenciado que los segmentos de mayor incumplimiento se dan en personas menores a 30 años, con un nivel de educación media e ingresos anuales menores o iguales a USD. 20.000 y una estabilidad laboral menor a 1 año.
Bajo lo expuesto, el presente análisis busca implementar una metodología robusta que permita a la institución financiera determinar a que solicitante se le otorga o no una tarjeta de crédito. La data con la que se trabaja corresponde a la levantada mediante registros administrativos por la institución y, una vez limpia se convierte en información estadística confiable, el algoritmo a utilizar es un modelo probit que, arrojará la pertinencia del otorgamiento del crédito, minimizando la posible mora.
Objetivos
Objetivo General.
- Implementar una metodología que permita a la institución financiera determinar el otorgamiento o no de una tarjeta de crédito
Objetivo Específico.
- Obtener una base de datos con información estadística confiable donde se puedan aplicar los métodos o herramientas que construirán al modelo deseado
Metodología.
Herramientas.
Fases.
Análisis Preliminar y Preparación de lo Datos.
Se considerará una base de datos que posee 438557 observaciones correspondientes a 18 diferentes características interés de los solicitantes. A continuación, se presenta una breve descripción de los atributos presente en la base de datos.
Nombre | Descripción | Observaciones |
---|---|---|
ID | Cliente | |
CODE_GENDER | Genero | |
FLAG_OWN_CAR | Posee auto | |
FLAG_OWN_REALTY | Posee terreno | |
CNT_CHILDREN | Numero de hijos | |
AMT_INCOME_TOTAL | Ingresos Anuales | |
NAME_INCOME_TYPE | Categoria de Ingresos | |
NAME_EDUCATION_TYPE | Nivel de Educacion | |
NAME_FAMILY_STATUS | Estado Civil | |
NAME_HOUSING_TYPE | Tipo de Vivienda | |
DAYS_BIRTH | Edad | Cuenta hacia atras desde el dia actual (0), -1 significa ayer. |
DAYS_EMPLOYED | Comenzo a Trabajas | Cuenta hacia atras desde el dia actual (0). Si es positivo, significa que la persona continua desempleada. |
FLAG_MOBIL | Posee celular. | |
FLAG_WORK_PHONE | Posee telefono de trabajo | |
FLAG_PHONE | Posee telefono fijo | |
FLAG_EMAIL | Posee correo electronico | |
OCCUPATION_TYPE | Ocupacion | |
CNT_FAM_MEMBERS | Nucleo Familiar |
Selección y limpieza de los datos.
Datos Incompletos.
- La variable OCCUPATION_TYPE correspondiente a la ocupación del cliente, muestra una cantidad considerable de datos faltantes, se deberá estudiar si la misma fue de carácter obligatorio al momento de levantar la información con el objetivo de determinar si la cantidad de datos faltantes es debido a un error humano.
Transformación del tipo de Datos.
No siempre los datos se encuentran en la forma más adecuada para poder aplicar los métodos necesarios para la tarea que hay que llevar a cabo y conseguir el modelo que se requiere.
A continuación, se muestra los tipos originales de las variables.
## AMT_INCOME_TOTAL : num [1:438557] 427500 427500 112500 270000 270000 ...
## CNT_CHILDREN : num [1:438557] 0 0 0 0 0 0 0 0 0 0 ...
## CNT_FAM_MEMBERS : num [1:438557] 2 2 2 1 1 1 1 1 1 1 ...
## CODE_GENDER : chr [1:438557] "M" "M" "M" "F" "F" "F" "F" "F" "F" "F" "M" "M" "M" "M" "M" ...
## DAYS_BIRTH : num [1:438557] -12005 -12005 -21474 -19110 -19110 ...
## DAYS_EMPLOYED : num [1:438557] -4542 -4542 -1134 -3051 -3051 ...
## FLAG_EMAIL : num [1:438557] 0 0 0 1 1 1 1 0 0 0 ...
## FLAG_MOBIL : num [1:438557] 1 1 1 1 1 1 1 1 1 1 ...
## FLAG_OWN_CAR : chr [1:438557] "Y" "Y" "Y" "N" "N" "N" "N" "N" "N" "N" "Y" "Y" "Y" "Y" "Y" ...
## FLAG_OWN_REALTY : chr [1:438557] "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" ...
## FLAG_PHONE : num [1:438557] 0 0 0 1 1 1 1 0 0 0 ...
## FLAG_WORK_PHONE : num [1:438557] 1 1 0 0 0 0 0 0 0 0 ...
## ID : num [1:438557] 5008804 5008805 5008806 5008808 5008809 ...
## NAME_EDUCATION_TYPE : chr [1:438557] "Higher education" "Higher education" ...
## NAME_FAMILY_STATUS : chr [1:438557] "Civil marriage" "Civil marriage" "Married" ...
## NAME_HOUSING_TYPE : chr [1:438557] "Rented apartment" "Rented apartment" "House / apartment" ...
## NAME_INCOME_TYPE : chr [1:438557] "Working" "Working" "Working" "Commercial associate" ...
## OCCUPATION_TYPE : chr [1:438557] NA NA "Security staff" "Sales staff" "Sales staff" ...
- Las variables categóricas en R se las trata como tipo factor.
- Se aplicará una transformación a la variable DAYS_BIRTH con el objetivo de obtener la edad del cliente.
- Se aplicará una transformación a la variable DAYS_EMPLOYED con el objetivo de obtener la información correspondiente a si un cliente está o no desempleado al momento del levantamiento de información.
application_record_d <- application_record %>% mutate(ID=ID,
CODE_GENDER=factor(CODE_GENDER),
FLAG_OWN_CAR=factor(FLAG_OWN_CAR),
FLAG_OWN_REALTY=factor(FLAG_OWN_REALTY),
CNT_CHILDREN=CNT_CHILDREN,
AMT_INCOME_TOTAL=AMT_INCOME_TOTAL,
NAME_INCOME_TYPE=factor(NAME_INCOME_TYPE),
NAME_EDUCATION_TYPE=factor(NAME_EDUCATION_TYPE),
NAME_FAMILY_STATUS=factor(NAME_FAMILY_STATUS),
NAME_HOUSING_TYPE=factor(NAME_HOUSING_TYPE),
DAYS_BIRTH = floor(abs(DAYS_BIRTH/360)),
DAYS_EMPLOYED= cut(DAYS_EMPLOYED,breaks = c(-Inf,0,Inf),labels = c('Empleado','Desempleado')),
FLAG_MOBIL = factor(FLAG_MOBIL),
FLAG_PHONE = factor(FLAG_PHONE),
FLAG_EMAIL = factor(FLAG_EMAIL),
CNT_FAM_MEMBERS = CNT_FAM_MEMBERS)
data.frame(head(application_record_d))
Análisis descriptivo de los datos.
## ID CODE_GENDER FLAG_OWN_CAR FLAG_OWN_REALTY CNT_CHILDREN
## Min. :5008804 F:294440 N:275459 N:134483 Min. : 0.0000
## 1st Qu.:5609375 M:144117 Y:163098 Y:304074 1st Qu.: 0.0000
## Median :6047745 Median : 0.0000
## Mean :6022176 Mean : 0.4274
## 3rd Qu.:6456971 3rd Qu.: 1.0000
## Max. :7999952 Max. :19.0000
## AMT_INCOME_TOTAL NAME_INCOME_TYPE
## Min. : 26100 Commercial associate:100757
## 1st Qu.: 121500 Pensioner : 75493
## Median : 160780 State servant : 36186
## Mean : 187524 Student : 17
## 3rd Qu.: 225000 Working :226104
## Max. :6750000
## NAME_EDUCATION_TYPE NAME_FAMILY_STATUS
## Academic degree : 312 Civil marriage : 36532
## Higher education :117522 Married :299828
## Incomplete higher : 14851 Separated : 27251
## Lower secondary : 4051 Single / not married: 55271
## Secondary / secondary special:301821 Widow : 19675
##
## NAME_HOUSING_TYPE DAYS_BIRTH DAYS_EMPLOYED FLAG_MOBIL
## Co-op apartment : 1539 Min. :20.00 Empleado :363228 1:438557
## House / apartment :393831 1st Qu.:34.00 Desempleado: 75329
## Municipal apartment: 14214 Median :43.00
## Office apartment : 3922 Mean :43.94
## Rented apartment : 5974 3rd Qu.:54.00
## With parents : 19077 Max. :70.00
## FLAG_WORK_PHONE FLAG_PHONE FLAG_EMAIL OCCUPATION_TYPE CNT_FAM_MEMBERS
## Min. :0.0000 0:312353 0:391102 Length:438557 Min. : 1.000
## 1st Qu.:0.0000 1:126204 1: 47455 Class :character 1st Qu.: 2.000
## Median :0.0000 Mode :character Median : 2.000
## Mean :0.2061 Mean : 2.194
## 3rd Qu.:0.0000 3rd Qu.: 3.000
## Max. :1.0000 Max. :20.000
- Se observa que la mayoria de solicitantes son mujeres. Se plantea la existencia de una muestra sesgada.
- La edad promedio del solicitante es 43 años
- El 17% de los solicitantes se encuentra desempleado.
- Se observa que la mayoria de los solicitantes tienen un nivel de educación medio.
Visualización de los datos
A continuación, se mostrarán algunas representaciones graficas de ciertas características de los clientes, y algunas interacciones entre ellas.
Género
- Se observa que la mayoria de solicitantes son mujeres.
Nivel de Educación
ggplot(application_record_d, aes(x = NAME_EDUCATION_TYPE)) +
geom_bar(width = 0.25) +
scale_x_discrete("Nivel de Educacion") +
scale_y_continuous("Frecuencia") +
labs(title = "Nivel de educacion")
- La mayoría de los solicitantes poseen un nivel de educación secundario.
- Los ingresos anuales presentan una tendencia acampanada.
Gráfico de tablas de contingencia.
Resulta de interés estudiar el comportamiento entre dos variables de tipo categórico.
barplot(prop.table(table(application_record_d$CODE_GENDER,application_record_d$DAYS_EMPLOYED)),col = c('black','gray'), beside = TRUE, main = 'Genero - Situacion Laboral', xlab = 'Situacion Laboral')
legend("topright", legend = c("Femenino", "Masculino"), fill = c('black','gray'))
- Se observa que existe una mayor cantidad de solicitantes de género femenino que cuentan con empleo.
barplot(prop.table(table(application_record_d$CODE_GENDER,application_record_d$FLAG_OWN_CAR)),col = c('black','gray'), beside = TRUE, main = 'Genero - Auto propio',xlab = 'Auto propio')
legend("topright", legend = c("Femenino", "Masculino"), fill = c('black','gray'))
- Se observa que hay más solicitantes masculinos que cuentan con auto propio.
barplot(prop.table(table(application_record_d$CODE_GENDER,application_record_d$FLAG_OWN_REALTY)),col = c('black','gray'), beside = TRUE, main = 'Genero - Patrimonio',xlab = 'Patrimonio')
legend("topright", legend = c("Femenino", "Masculino"), fill = c('black','gray'))
- Se observa que la mayoría de los solicitantes son mujeres que cuentan con algún patrimonio.
Resultados
Se ha puesto en marcha un proceso de investigación para determinar el origen de los datos faltantes en la variable ocupación, con lo cual se decidirá el actuar a futuro, correspondiente a eliminar los datos faltantes o usar técnicas de imputación para ‘completarlos’.
A priori se ha evidenciado que el tipo más común de solicitante corresponde a: Mujer casada con alrededor de 40 años, no cuenta con auto propio, pero posee patrimonio.
Se ha evidenciado la necesidad de crear una variable objetivo.
Se ha puesto a consideración la eliminación de la variable FLAG_MOBIL correspondiente a si el solicitante posee un teléfono celular, pues se evidencia que la totalidad de solicitantes posee uno.
Se ha puesto a consideración la eliminación de la variable CNT_CHILDRENS correspondiente al número de hijos, pues se encuentra enmarcada en la variable CNT_FAM_MEMBERS correspondiente al número de integrantes en el núcleo familiar.
Bibliografía
- Ramon Sangüesa i Solé (s.a), El proceso de descubrimiento de conocimiento a partir de datos. Objetivos, fases y problemática, Universitat Oberta de Catalunya, España.