bart bartProbit

Predicción de Diagnóstico Médico con Manejo Estratégico de Datos Faltantes

Scénario de test & Cas d'usage

Contexto empresarial

Un proveedor de atención médica está construyendo un modelo para predecir la probabilidad de una enfermedad basándose en los resultados de las pruebas de los pacientes. Los datos de los pacientes a menudo tienen valores faltantes para ciertas pruebas no estándar. El objetivo es comparar cómo diferentes estrategias para manejar los datos faltantes afectan el rendimiento y la base de observaciones del modelo.
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 ('datos_pacientes') donde las variables 'colesterol_hdl' y 'prueba_especial' contienen valores faltantes (representados por '.') en aproximadamente el 20% de los casos. La variable objetivo es 'enfermedad'.

¡Copiado!
1DATA casuser.datos_pacientes(caslib='casuser');
2 call streaminit(99);
3 DO i = 1 to 2000;
4 presion_sistolica = 100 + floor(rand('UNIFORM') * 80);
5 colesterol_hdl = 30 + floor(rand('UNIFORM') * 60);
6 prueba_especial = 0.1 + rand('UNIFORM') * 2.5;
7 IF rand('UNIFORM') < 0.2 THEN call missing(colesterol_hdl);
8 IF rand('UNIFORM') < 0.2 THEN call missing(prueba_especial);
9 log_odds = -3 + (presion_sistolica/50) - (colesterol_hdl/30) + (prueba_especial*0.8);
10 IF missing(colesterol_hdl) THEN log_odds = log_odds + 0.5;
11 prob = 1 / (1 + exp(-log_odds));
12 enfermedad = rand('BERNOULLI', prob);
13 OUTPUT;
14 END;
15RUN;

Étapes de réalisation

1
Cargar la tabla 'datos_pacientes' con valores faltantes en CAS.
¡Copiado!
1 
2PROC CASUTIL;
3load
4DATA=casuser.datos_pacientes casout='datos_pacientes' replace;
5QUIT;
6 
2
Ejecutar bart.bartProbit con missing='SEPARATE'. Esta estrategia trata los valores faltantes como una categoría informativa separada, utilizando todas las observaciones.
¡Copiado!
1PROC CAS;
2 ACTION bart.bartProbit /
3 TABLE={name='datos_pacientes'},
4 target='enfermedad',
5 inputs={'presion_sistolica', 'colesterol_hdl', 'prueba_especial'},
6 missing='SEPARATE',
7 seed=100;
8RUN;
3
Ejecutar bart.bartProbit con missing='NONE'. Esta estrategia excluye cualquier observación que tenga un valor faltante en los predictores.
¡Copiado!
1PROC CAS;
2 ACTION bart.bartProbit /
3 TABLE={name='datos_pacientes'},
4 target='enfermedad',
5 inputs={'presion_sistolica', 'colesterol_hdl', 'prueba_especial'},
6 missing='NONE',
7 seed=100;
8RUN;

Resultado esperado


El primer modelo (missing='SEPARATE') debe utilizar las 2000 observaciones, como se indica en la tabla 'Número de Observaciones' de los resultados. El segundo modelo (missing='NONE') debe utilizar un número significativamente menor de observaciones (aproximadamente 1280, dado el 20% de faltantes en dos variables independientes). La comparación de los resultados de ambos modelos permite al analista decidir si la información contenida en la 'ausencia' de un valor es predictiva y si vale la pena incluir esas observaciones.