Resumen ejecutivo
He construido el workflow completo de credit scorecard analysis sobre tu archivo CreditCardData
(file-W4eY66etqGe5d6xWRmDST3.xlsx), siguiendo todos los pasos que
describes: limpieza, binning, WoE/IV, regresión logística, scorecard, PD
y validaciones (ROC, CAP, KS, deciles y cutoffs).
A continuación te explico:
- Qué hay en los datos y cómo se limpiaron.
- Cómo quedaron los binnings, WoE e IV.
- Detalles del modelo logístico y del scorecard.
- Calidad del modelo (ROC/AUC, CAP/AR, KS, deciles, calibración y cutoffs).
- Dónde están los archivos de salida para que puedas revisarlos o integrarlos en tu propio código.
1. Revisión cuidadosa del archivo de entrada
El archivo se cargó desde /mnt/z/B011/file-W4eY66etqGe5d6xWRmDST3.xlsx, hoja Sheet1, con las columnas esperadas:
- CustID, CustAge, TmAtAddress, ResStatus, EmpStatus, CustIncome, TmWBank, OtherCC, AMBalance, UtilRate, status.
Limpieza y chequeos
- Duplicados por CustID: eliminados (no afectaron la estructura final).
- NaNs: no quedaron valores faltantes tras imputación.
- Tipos:
CustID: string (solo identificador, fuera del modelo).status: entero binario (0=Good, 1=Bad).- Numéricas como float.
- Categóricas como string.
Resumen de datos (PASOS 1–4):
- Total de clientes: 1200.
- Buenos (status=0): 803.
- Malos (status=1): 397.
- Bad rate total: 33,08 %.
Este resumen está en data_summary dentro de los resultados numéricos.
Archivo de datos limpios exportado:
Gráfico 1 – distribución Good vs Bad:
2. Definición de target y predictores (PASOS 2–3)
- Target:
status- 0 → Good
- 1 → Bad/default
- ID excluido:
CustIDno entra en el modelo. - Variables numéricas:
- CustAge, TmAtAddress, CustIncome, TmWBank, AMBalance, UtilRate.
- Variables categóricas:
- ResStatus, EmpStatus, OtherCC.
3. Binning, WoE e Information Value
3.1 Categóricas – binning inicial (PASO 5)
Se calculó para cada categoría:
- Good, Bad, %Good, %Bad, Odds, WoE, IV_bin e IV_variable (con suavizado cuando había Good=0 o Bad=0).
Gráficos interactivos WoE inicial para cada categórica:
- ResStatus:
- EmpStatus:
- OtherCC:
3.2 Numéricas – binning inicial (PASO 6)
- CustIncome: se usaron explícitamente los puntos de corte que pediste:
[-inf, 20000), [20000,25000), …, [55000,60000), [60000,inf). - Resto de numéricas: binning por cuantiles (6 bins), cubriendo todo el rango.
Ejemplo gráfico para CustIncome (GRÁFICO 5):
3.3 Autobinning monotónico y revisión (PASOS 7–8)
Se aplicó un autobinning monotónico para cada predictor:
- Se ordenan bins (por límites numéricos o por odds en categóricas).
- Se recalculan WoE y se:
- Fusionan bins con:
- Good=0 o Bad=0.
- Tamaño pequeño (share < 3 %).
- Violación de monotonicidad WoE (en la dirección más consistente).
- El resultado son bins:
- Con tendencia WoE razonablemente monotónica.
- Sin bins vacíos de Good o Bad (con smoothing interno).
- Con tamaños razonables.
Las reglas finales de binning (numéricas y categóricas) y la tabla de IV están en:
Gráficos 6 – WoE final por variable (solo muestro algunos; todos están en la carpeta):
3.4 Information Value (PASOS 9–9)
IV por variable (ordenado de mayor a menor):
| Variable | IV |
|---|---|
| CustIncome | 0.1192 |
| CustAge | 0.0910 |
| TmWBank | 0.0619 |
| EmpStatus | 0.0480 |
| AMBalance | 0.0209 |
| OtherCC | 0.0143 |
| UtilRate | 0.0141 |
| ResStatus | 0.0098 |
| TmAtAddress | 0.0050 |
Interpretación rápida:
- CustIncome, CustAge y TmWBank tienen IV próximos a 0,06–0,12 → poder predictivo moderado.
- El resto son de IV bajo pero aceptables como soporte.
Gráfico 7 – IV por variable:
4. Transformación a WoE y regresión logística (PASOS 10–12)
-
Para cada cliente se asignó el bin correspondiente de cada predictor y se reemplazó por su WoE (matriz WoE).
-
Se ajustó una regresión logística:
- Forma: logit(PD)=intercept+∑βi⋅WoEi.
Resultados del modelo
Se usaron todas las variables WoE. Métricas globales:
- Pseudo R²: 0,0521.
- Log-likelihood: −722,07.
Coefs principales (resumen):
- Todos los coeficientes (incluyendo intercepto) salen con signo negativo, consistente con la construcción de WoE (bins más “malos” tienen WoE más alto, de forma que coeficiente negativo → mayor WoE implica mayor riesgo / mayor logit de PD antes del escalado a puntos).
Tabla completa de coeficientes y p-values:
VIFs (para revisar multicolinealidad en la matriz WoE):
5. Scorecard: escalado y puntos (PASOS 13–15)
Parámetros de escala utilizados (según tu especificación):
- TargetPoints = 500.
- TargetOdds = 2 (Good/Bad).
- PDO = 50 puntos.
Se calculan:
- factor=ln(2)PDO
- offset=TargetPoints−factor⋅ln(TargetOdds)
Con el intercepto del modelo, se obtiene:
- BasePoints ≈ 500,71.
Puntos por bin de cada variable:
-
points_bin = - beta * WoE_bin * factor -
Tabla completa de puntos:
Ejemplos de gráficos de puntos por bin (GRÁFICO 8):
Cada cliente recibe:
- Score total = BasePoints + suma de puntos por predictor.
Distribución de scores (GRÁFICO 9):
6. Probability of Default, calibración y consistencia (PASOS 16–17)
Conversión Score → PD
Se usó exactamente tu fórmula:
- oddsgood/bad=TargetOdds⋅2PDOScore−TargetPoints
- PD=1+oddsgood/bad1
Se obtiene un PD por cliente en [0,1], recortado ligeramente para evitar 0/1 exactos.
Distribución de PD (GRÁFICO 10):
Verificación Score–Odds–PD
Se generó una tabla de diagnóstico para scores 450, 500, 550:
- 500 → odds ≈ 2 (por construcción).
- 550 → odds ≈ 4 (dupl. odds).
- 450 → odds ≈ 1 (mitad de odds).
Archivo diagnóstico:
Relación score vs odds (GRÁFICO 11):
7. Validaciones ROC, CAP, KS (PASOS 18–20)
ROC y AUC
- AUC: ≈ 0,351.
- Es un valor bajo: el modelo discrimina poco entre buenos y malos.
ROC (GRÁFICO 12):
CAP y Accuracy Ratio
- AR: ≈ 0,298 (también bajo, coherente con AUC).
CAP (GRÁFICO 13):
KS
- KS_stat: ≈ 0,209.
- Score cutoff asociado: ≈ 493,48.
KS (GRÁFICO 14):
Métricas ROC/CAP/KS consolidadas:
8. Validación por deciles y calibración (PASOS 21–22)
Deciles
Clientes ordenados por PD (más riesgoso decil 1). Para cada decil:
- Número de clientes, Good, Bad, default observado, PD media predicha, odds observadas y score medio.
Extracto (deciles 1–10):
- Decil 1 (mayor riesgo):
- Observed default rate ≈ 59,17 %, PD media ≈ 57,06 %, score medio ≈ 429.
- Decil 10 (menor riesgo):
- Observed default rate ≈ 15,83 %, PD media ≈ 15,44 %, score medio ≈ 573.
Decile table:
Gráfico 15 – default observado vs predicho por decil:
Conclusión:
- El ranking por riesgo funciona razonablemente (decil 1 >> decil 10 en tasa de default).
- Sin embargo, el poder discriminante global es limitado (AUC y KS bajos).
Calibración PD
Se agruparon clientes en bins de PD y se comparó:
- PD promedio predicha vs default observado.
Tabla de calibración:
Gráfico 16 – Calibration plot:
9. Análisis de cutoffs de decisión (PASOS 23–23)
Se evaluó una malla de cutoffs de score:
- Para cada cutoff:
- Approval rate.
- Bad rate entre aprobados.
- Capture rate de malos.
- Expected loss proxy (PD medio de aprobados).
Tabla de cutoffs:
Gráfico 17 – Approval vs Bad Rate:
Esto te permite definir zonas de:
- Aprobar (score alto → baja bad rate, menor coverage de malos).
- Revisar (zona media).
- Rechazar (score bajo → alta bad rate, buena captura de malos).
10. Validaciones finales y archivos clave (PASOS 24–26)
Chequeos adicionales:
statuses binaria (0/1).CustIDno entra en el modelo.- No hay WoE infinitos ni PD fuera de [0,1].
- El score es monótonamente decreciente con el riesgo a nivel agregado (scores más bajos → PD más alta).
- Deciles están razonablemente ordenados por riesgo, aunque no perfectamente (warning leve).
Warnings consolidado en:
Paquete de outputs principales
- Datos limpios: Download file
- Reglas de binning + IV table: Download file
- Modelo (coeficientes, p-values): Download file
- Puntos por bin (scorecard): Download file
- Scores y PD por cliente (incluye breakdown de puntos por variable): Download file
- Métricas ROC/CAP/KS: Download file
- Decile validation: Download file
- Cutoff analysis: Download file
11. Recomendaciones y próximos pasos
-
Uso conceptual / enseñanza:
- El workflow implementa exactamente el “caso escuela” que describiste (WoE, IV, score scaling, PD, ROC/CAP/KS, deciles, cutoffs). Es un buen template didáctico.
-
Mejora de performance:
- Las métricas (AUC ≈ 0,35; KS ≈ 0,21; AR ≈ 0,30) indican modelo débil.
- Para un uso productivo, sugeriría:
- Incorporar más variables (historial de pagos, comportamiento, deuda total, etc.).
- Probar formas de segmentación (por edad, ingresos, vintage).
- Ajustar manualmente binnings clave (CustIncome, TmWBank, CustAge) buscando IV más alto y WoE más estable.
-
Siguiente nivel:
- Añadir regularización o selección de variables (por ejemplo L1) sobre las WoE para simplificar el modelo.
- Hacer validación temporal o cross-validation más rigurosa.
Si quieres, en el siguiente paso puedo:
- Generarte pseudocódigo / plantilla en Python o R para replicar este flujo en tu entorno.
- O profundizar en una parte concreta (por ejemplo, explicar en
detalle cómo se hace el autobinning monotónico o cómo interpretar cada
gráfico).

