Scénario de test & Cas d'usage
Cálculo preciso de percentiles y cuantiles.
Descubrir todas las acciones de percentileCrea una tabla de pacientes con valores faltantes en la variable objetivo (`Reingreso_30d`), una variable de ponderación (`Peso_Paciente`) y dos predicciones del modelo: la probabilidad cruda (`Prob_Reingreso`) y la clase predicha (`Clase_Predicha`).
| 1 | DATA casuser.pacientes_reingreso; |
| 2 | call streaminit(789); |
| 3 | DO id_paciente = 1 to 10000; |
| 4 | estancia_uci = rand('binomial', 0.2, 1); |
| 5 | edad = 40 + rand('uniform') * 45; |
| 6 | /* Pacientes de UCI tienen más peso */ |
| 7 | Peso_Paciente = ifn(estancia_uci=1, 2.5, 1.0); |
| 8 | prob_real = 0.15 + ifn(estancia_uci=1, 0.2, 0) + (edad / 200); |
| 9 | Prob_Reingreso = prob_real + rand('normal', 0, 0.08); |
| 10 | IF Prob_Reingreso < 0 THEN Prob_Reingreso = 0; |
| 11 | IF Prob_Reingreso > 1 THEN Prob_Reingreso = 1; |
| 12 | /* Simular valores faltantes en el objetivo */ |
| 13 | IF rand('uniform') < 0.1 THEN Reingreso_30d = .; |
| 14 | ELSE Reingreso_30d = rand('binomial', prob_real, 1); |
| 15 | /* Simular una clase predicha por el modelo */ |
| 16 | Clase_Predicha = ifn(Prob_Reingreso > 0.35, 1, 0); |
| 17 | OUTPUT; |
| 18 | END; |
| 19 | RUN; |
| 1 | |
| 2 | PROC CASUTIL; |
| 3 | load |
| 4 | DATA=casuser.pacientes_reingreso casout='pacientes_reingreso' replace; |
| 5 | QUIT; |
| 6 |
| 1 | PROC CAS; |
| 2 | percentile.assess |
| 3 | TABLE='pacientes_reingreso', |
| 4 | response='Reingreso_30d', |
| 5 | event='1', |
| 6 | pVar={'Prob_Reingreso'}, |
| 7 | pEvent={'1'}, |
| 8 | weight='Peso_Paciente', |
| 9 | noMissingTarget=true, |
| 10 | cutStep=0.005, |
| 11 | rocOut={name='roc_ponderado', replace=true}; |
| 12 | RUN; |
| 13 | QUIT; |
| 1 | PROC CAS; |
| 2 | percentile.assess |
| 3 | TABLE='pacientes_reingreso', |
| 4 | response='Reingreso_30d', |
| 5 | event='1', |
| 6 | pResponse='Clase_Predicha', |
| 7 | noMissingTarget=true, |
| 8 | fitStatOut={name='fitstat_clase_predicha', replace=true}; |
| 9 | RUN; |
| 10 | QUIT; |
La primera ejecución debe producir una tabla ROC (`roc_ponderado`) calculada únicamente sobre los pacientes con datos completos y donde los pacientes de UCI han influido más en las métricas. La segunda ejecución debe generar una tabla de estadísticas de ajuste (`fitstat_clase_predicha`) que refleje el rendimiento del modelo basado en la clasificación binaria predefinida (`Clase_Predicha`), mostrando métricas como Sensibilidad y Especificidad para ese punto de corte implícito. Esto valida la capacidad de la acción para manejar datos complejos y diferentes modos de evaluación.