Scénario de test & Cas d'usage
Cálculo preciso de percentiles y cuantiles.
Descubrir todas las acciones de percentileCrea una tabla muy grande (2 millones de transacciones) simulando transacciones fraudulentas y legítimas, junto con la probabilidad de fraude asignada por un modelo.
| 1 | DATA casuser.transacciones_fraude; |
| 2 | call streaminit(456); |
| 3 | DO id_transaccion = 1 to 2000000; |
| 4 | monto = 5 + rand('uniform') * 5000; |
| 5 | /* El fraude es más probable en montos altos */ |
| 6 | prob_fraude_real = ifn(monto > 4500, 0.6, 0.02); |
| 7 | es_fraude = rand('binomial', prob_fraude_real, 1); |
| 8 | /* La puntuación del modelo es una aproximación de la probabilidad real con ruido */ |
| 9 | prob_modelo_fraude = prob_fraude_real + rand('normal', 0, 0.1); |
| 10 | IF prob_modelo_fraude < 0 THEN prob_modelo_fraude = 0; |
| 11 | IF prob_modelo_fraude > 1 THEN prob_modelo_fraude = 1; |
| 12 | OUTPUT; |
| 13 | END; |
| 14 | RUN; |
| 1 | |
| 2 | PROC CASUTIL; |
| 3 | load |
| 4 | DATA=casuser.transacciones_fraude casout='transacciones_fraude' replace; |
| 5 | QUIT; |
| 6 |
| 1 | PROC CAS; |
| 2 | percentile.assess |
| 3 | TABLE='transacciones_fraude', |
| 4 | response='es_fraude', |
| 5 | event='1', |
| 6 | pVar={'prob_modelo_fraude'}, |
| 7 | pEvent={'1'}, |
| 8 | method='ITERATIVE', |
| 9 | includeCutoffOne=true, |
| 10 | fitStatOut={name='fitstat_iterative', replace=true}; |
| 11 | RUN; |
| 12 | QUIT; |
| 1 | PROC CAS; |
| 2 | percentile.assess |
| 3 | TABLE='transacciones_fraude', |
| 4 | response='es_fraude', |
| 5 | event='1', |
| 6 | pVar={'prob_modelo_fraude'}, |
| 7 | pEvent={'1'}, |
| 8 | method='EXACT', |
| 9 | includeCutoffOne=true, |
| 10 | fitStatOut={name='fitstat_exact', replace=true}; |
| 11 | RUN; |
| 12 | QUIT; |
Se espera que la ejecución con `method='ITERATIVE'` sea significativamente más rápida que con `method='EXACT'`. Las estadísticas de ajuste (C-statistic/AUC) en las tablas `fitstat_iterative` y `fitstat_exact` deberían ser muy similares, pero no necesariamente idénticas. Este resultado permitiría al banco justificar el uso del método iterativo para sus evaluaciones diarias, logrando un equilibrio aceptable entre velocidad y precisión.