dataPreprocess binning

Análisis de Riesgo Crediticio con Datos Incompletos

Scénario de test & Cas d'usage

Contexto empresarial

Una entidad financiera necesita categorizar a sus solicitantes de crédito en niveles de riesgo predefinidos. Los datos de entrada contienen valores faltantes en la variable clave 'puntuacion_crediticia'. El negocio requiere que los solicitantes con puntuación faltante sean asignados a un grupo de riesgo específico y que los demás sean agrupados según umbrales de negocio estrictos.
Sobre el conjunto : dataPreprocess

Limpieza, imputación y preprocesamiento de datos.

Descubrir todas las acciones de dataPreprocess
Preparación de datos

Crea una tabla de solicitantes de crédito. Aproximadamente el 15% de los registros tendrán un valor faltante en 'puntuacion_crediticia' para probar la gestión de nulos.

¡Copiado!
1DATA casuser.solicitudes_credito (promote=yes);
2 call streaminit(456);
3 DO id_solicitud = 1 to 1000;
4 puntuacion_crediticia = 300 + floor(rand('UNIFORM') * 550);
5 ingresos_verificados = rand('BERNOULLI', 0.8);
6 IF rand('UNIFORM') < 0.15 THEN call missing(puntuacion_crediticia);
7 OUTPUT;
8 END;
9RUN;

Étapes de réalisation

1
Carga de la tabla de solicitudes a la memoria de CAS.
¡Copiado!
1 
2PROC CASUTIL;
3load
4DATA=casuser.solicitudes_credito casout='solicitudes_credito' replace;
5QUIT;
6 
2
Ejecución de 'binning' con el método 'CUTPTS' para definir los niveles de riesgo. Se activa 'binMissing=true' para aislar los valores faltantes.
¡Copiado!
1PROC CAS;
2 dataPreprocess.binning /
3 TABLE={name='solicitudes_credito', caslib='casuser'},
4 inputs={{name='puntuacion_crediticia'}},
5 method='CUTPTS',
6 cutPoints={580, 670, 740, 800},
7 binMissing=true,
8 copyVars={'id_solicitud', 'puntuacion_crediticia'},
9 outVarsNameSuffix='_NivelRiesgo',
10 casOut={name='solicitudes_riesgo', caslib='casuser', replace=true};
11RUN;
12QUIT;
3
Verificación de la asignación de grupos. Se cuenta el número de observaciones en cada nivel de riesgo, prestando especial atención al grupo 0 (valores faltantes).
¡Copiado!
1PROC CAS;
2 SIMPLE.freq /
3 TABLE={name='solicitudes_riesgo', caslib='casuser'}
4 inputs={'bin_puntuacion_crediticia_NivelRiesgo'};
5RUN;
6QUIT;

Resultado esperado


Se crea la tabla 'solicitudes_riesgo'. Contiene una nueva columna 'bin_puntuacion_crediticia_NivelRiesgo'. Las observaciones con 'puntuacion_crediticia' faltante tendrán el valor 0 en esta nueva columna. Las demás observaciones tendrán valores del 1 al 5, correspondiendo a los intervalos: (-inf, 580], (580, 670], (670, 740], (740, 800], y (800, +inf). El resultado de FREQ debe mostrar un recuento significativo para el valor 0.