bart bartGauss

Predicción de Riesgo Clínico con Datos Incompletos

Scénario de test & Cas d'usage

Contexto empresarial

Un hospital quiere predecir el nivel de glucosa en sangre de pacientes diabéticos basándose en datos clínicos que a menudo están incompletos. El modelo debe ser robusto y capaz de manejar valores perdidos en predictores importantes como el IMC o el colesterol sin excluir a los pacientes del análisis.
Sobre el conjunto : bart

Modelos de árboles de regresión aditiva bayesiana.

Descubrir todas las acciones de bart
Preparación de datos

Crea una tabla de pacientes con datos clínicos, introduciendo valores perdidos (.) de forma intencionada en las variables 'imc' y 'colesterol'.

¡Copiado!
1DATA mycas.pacientes_diabetes;
2 call streaminit(99);
3 DO id_paciente = 1 to 2000;
4 edad = 30 + floor(rand('UNIFORM') * 45);
5 presion_sistolica = 110 + rand('NORMAL', 20, 15);
6 imc_real = 22 + rand('NORMAL', 5, 3);
7 colesterol_real = 180 + rand('NORMAL', 30, 25);
8 
9 IF rand('UNIFORM') < 0.25 THEN imc = .; ELSE imc = imc_real;
10 IF rand('UNIFORM') < 0.15 THEN colesterol = .; ELSE colesterol = colesterol_real;
11 
12 nivel_glucosa = 90 + (edad * 0.5) + (presion_sistolica * 0.2) + (imc_real * 1.5) + (colesterol_real * 0.3) + rand('NORMAL', 0, 10);
13 OUTPUT;
14 END;
15RUN;

Étapes de réalisation

1
Carga de la tabla de pacientes en CAS.
¡Copiado!
1 
2PROC CASUTIL;
3load
4DATA=mycas.pacientes_diabetes casout='pacientes_diabetes' replace;
5QUIT;
6 
2
Ejecución de bart.bartGauss utilizando la estrategia por defecto ('SEPARATE') para manejar valores perdidos. Esto debería tratarlos como una categoría distinta.
¡Copiado!
1PROC CAS;
2 bart.bartGauss /
3 TABLE={name='pacientes_diabetes'},
4 target='nivel_glucosa',
5 inputs={'edad', 'presion_sistolica', 'imc', 'colesterol'},
6 missing='SEPARATE',
7 nTree=40,
8 nBI=100,
9 nMC=400,
10 seed=888,
11 outputTables={names={VariableInfo='info_vars_separate'}};
12RUN;
13QUIT;
3
Inspección de la tabla 'VariableInfo' para confirmar que todos los 2000 pacientes fueron utilizados en el análisis, demostrando que los registros con valores perdidos no fueron descartados.
¡Copiado!
1PROC PRINT DATA=mycas.info_vars_separate;
2RUN;

Resultado esperado


La acción se completa sin errores, y la tabla 'VariableInfo' muestra que el número de observaciones utilizadas es 2000. Esto confirma que la estrategia 'SEPARATE' para valores perdidos funcionó como se esperaba, permitiendo que el modelo se entrene utilizando el conjunto de datos completo a pesar de la información incompleta. El modelo es robusto frente a datos imperfectos del mundo real.