simple crossTab

Evaluación de Riesgo Crediticio con Datos Faltantes (Edge Case)

Scénario de test & Cas d'usage

Contexto empresarial

Un banco está evaluando el riesgo de impago. Los datos históricos suelen estar sucios: el 'Estado de Empleo' a menudo es nulo (missing) y la 'Puntuación de Crédito' puede faltar. Es crucial verificar si existe una asociación entre tener datos faltantes y el estado de incumplimiento del préstamo (Default). Se probará explícitamente el manejo de valores nulos.
Preparación de datos

Creación de datos con valores nulos (missing) intencionales en variables de texto y numéricas.

¡Copiado!
1 
2DATA casuser.credit_risk;
3call streaminit(555);
4array statuses[2] $7 ('Paid' 'Default');
5DO i=1 to 50;
6LoanStatus = statuses[rand('Integer', 1, 2)];
7IF rand('Uniform') < 0.2 THEN Employment = '';
8ELSE Employment = 'Employed';
9IF rand('Uniform') < 0.3 THEN CreditScore = .;
10ELSE CreditScore = rand('Integer', 300, 850);
11OUTPUT;
12END;
13 
14RUN;
15 

Étapes de réalisation

1
Ejecución estándar (se espera que los nulos sean ignorados).
¡Copiado!
1 
2PROC CAS;
3SIMPLE.crossTab / TABLE={name="credit_risk"} row="Employment" col="LoanStatus";
4 
5RUN;
6 
2
Ejecución forzando la inclusión de valores perdidos y calculando asociación.
¡Copiado!
1 
2PROC CAS;
3SIMPLE.crossTab / TABLE={name="credit_risk"} row="Employment" col="LoanStatus" includeMissing=true association=true;
4 
5RUN;
6 

Resultado esperado


En la etapa 1, las filas con 'Employment' vacío no deben aparecer. En la etapa 2, debe aparecer una fila explícita para los valores faltantes (representada usualmente como '.' o espacio en blanco). Además, se debe generar la tabla de medidas de asociación (Gamma, Cramér's V) considerando los valores nulos como una categoría válida para el análisis.