CD_12 Original + Derivados

CD_12: eICU-CRD: Predicción de Mortalidad Multicéntrica

Conjunto derivado de eICU Collaborative Research Database (v2.0.1). Integra puntuación APACHE IV, variables fisiológicas del primer día (PaO2/FiO2, creatinina) y comorbilidades.

📈 Eficacia Predictiva Detallada

Comparación detallada de las métricas de clasificación para los modelos entrenados con el conjunto de datos original y el conjunto sintético generado.

📊 Conjunto Original

Clase Precisión Recall F1-Score Soporte
Clase 0 0.93 0.99 0.96 183
Clase 1 0.80 0.24 0.36 17
Accuracy 0.93
Macro Avg 0.87 0.61 0.66 200
Weighted Avg 0.92 0.93 0.91 200
AUC-ROC: 0.92
F1-Score (weighted): 0.91
Accuracy: 0.93
➡️ Mejora
⬇ -0.02 AUC ⬆ +0.03 F1 ⬆ +0.01 Acc
🏆 MEJOR RENDIMIENTO

🔮 Conjunto Sintético

Clase Precisión Recall F1-Score Soporte
Clase 0 0.96 0.97 0.97 183
Clase 1 0.67 ⬇ -0.13 0.59 ⬆ +0.35 0.62 ⬆ +0.26 17
Accuracy 0.94 ⬆ +0.01
Macro Avg 0.81 ⬇ -0.06 0.78 ⬆ +0.17 0.80 ⬆ +0.14 200
Weighted Avg 0.94 ⬆ +0.02 0.94 ⬆ +0.01 0.94 ⬆ +0.03 200
AUC-ROC: 0.91 ⬇ -0.01
F1-Score (weighted): 0.94 ⬆ +0.03
Accuracy: 0.94 ⬆ +0.01

📊 Resumen de Mejoras en Clase Minoritaria (Clase 1)

🎯
Precisión
Original: 0.80
Sintético: 0.67
⬇ -0.13
📈
Recall
Original: 0.24
Sintético: 0.59
⬆ +0.35
⚖️
F1-Score
Original: 0.36
Sintético: 0.62
⬆ +0.26

📚 Fuente Original del Conjunto

eICU Collaborative Research Database Demo v2.0.1

v2.0.1
Johnson, A., Pollard, T., Badawi, O., & Raffa, J.
Publicado: 6 de mayo de 2021

📄 Resumen (Abstract)

Este proyecto es una versión demo de la eICU Collaborative Research Database, una base de datos multicéntrica compuesta por datos de salud desidentificados de más de 200,000 admisiones a UCI en Estados Unidos entre 2014-2015. La base de datos incluye mediciones de signos vitales, documentación del plan de cuidado, medidas de severidad de enfermedad, información de diagnósticos y datos de tratamiento. Los datos son recolectados a través del programa eICU de Philips, un programa de telemedicina de cuidados críticos que entrega información a los cuidadores en la cabecera del paciente. Esta demo de acceso abierto permite a los investigadores evaluar si la eICU Collaborative Research Database es adecuada para su trabajo, e incluye más de 2,500 estancias unitarias seleccionadas de 20 de los hospitales más grandes de la base de datos completa.

🔬 Métodos

El conjunto de datos demo contiene información asociada a estancias en UCI de más de 2,500 estancias unitarias seleccionadas de 20 hospitales de mayor tamaño dentro de la eICU Collaborative Research Database. Todas las tablas han sido desidentificadas para cumplir con la disposición de "puerto seguro" de la Ley de Portabilidad y Responsabilidad de Seguros de Salud (HIPAA) de EE.UU., lo que incluye la eliminación de toda información de salud protegida. Los identificadores de hospitales y unidades también han sido eliminados para proteger la privacidad de las organizaciones contribuyentes. El esquema fue establecido en colaboración con Privacert (Cambridge, MA), quienes certificaron que el riesgo de reidentificación cumple con los estándares de puerto seguro (Certificación HIPAA No. 1031219-2).

📊 Descripción de Datos

Los datos incluyen signos vitales, mediciones de laboratorio, medicamentos, componentes APACHE, información del plan de cuidado, diagnóstico de admisión, historial del paciente, diagnósticos con marca temporal desde una lista estructurada de problemas y tratamientos seleccionados de manera similar. Los datos de cada paciente son recolectados en un almacén común solo si ciertas "interfaces" están disponibles. Cada interfaz se utiliza para transformar y cargar un tipo específico de datos: las interfaces de signos vitales incorporan signos vitales, las interfaces de laboratorio proporcionan mediciones en muestras de sangre, y así sucesivamente. Es importante tener en cuenta que diferentes unidades de cuidado pueden tener diferentes interfaces disponibles, y la falta de una interfaz resultará en la ausencia de datos para un paciente dado, incluso si esas mediciones se realizaron en la realidad. Los datos se proporcionan como archivos CSV que pueden cargarse en una base de datos relacional utilizando el código proporcionado en el eICU Code Repository. También se proporciona una versión comprimida en SQLite de la base de datos en la carpeta sqlite para mayor comodidad. El conjunto de datos incluye variables demográficas, clínicas y de laboratorio que permiten el análisis de mortalidad y otros desenlaces en pacientes críticamente enfermos.

📋 Notas de Uso

La demo proporciona una oportunidad para revisar la estructura y contenido de la eICU Collaborative Research Database antes de decidir si realizar un análisis en la versión completa. La demo también proporciona una muestra de datos útil para demostrar que el código desarrollado para la base de datos completa es funcional y devuelve los resultados esperados (por ejemplo, para verificar el comportamiento en pruebas unitarias y demostrar reproducibilidad en artículos publicados).

⚖️ Ética y Privacidad

Los datos han sido desidentificados cumpliendo con los estándares HIPAA. Todos los identificadores de pacientes, hospitales y unidades han sido eliminados para proteger la privacidad. El proyecto cuenta con la certificación de Privacert (Cambridge, MA) que acredita el cumplimiento de los estándares de "puerto seguro" (HIPAA Certification No. 1031219-2). Restricción de confidencialidad: En estricto cumplimiento de los protocolos de privacidad, el acceso a los microdatos a nivel de paciente está restringido a usuarios con credenciales. La publicación se restringe a métricas de evaluación, resultados agregados y metodología del modelo, conforme a las políticas de uso de la base de datos.

🙏 Agradecimientos

Los autores agradecen al Philips eICU Research Institute y a Philips Healthcare por la contribución de los datos. También agradecen a Andrew A. Kramer por sus comentarios perspicaces sobre los datos y a Dina Demner-Fushman por sus útiles comentarios sobre el proceso de desidentificación. El trabajo fue apoyado por las subvenciones NIH-R01-EB017205, NIH-R01-EB001659 y NIH-R01-GM104987 de los Institutos Nacionales de Salud. El MIT Laboratory for Computational Physiology recibió financiamiento de Philips Healthcare para realizar el trabajo en la base de datos descrita en este documento.

⚡ Conflictos de Interés

O. Badawi es empleado de Philips Healthcare. El MIT Laboratory for Computational Physiology recibió financiamiento de Philips Healthcare para el desarrollo de la base de datos. Los demás autores declaran no tener conflictos de interés financieros.

📖 Cómo citar la fuente original

Johnson, A., Pollard, T., Badawi, O., & Raffa, J. (2021). eICU Collaborative Research Database Demo (version 2.0.1). PhysioNet. RRID:SCR_007345. https://doi.org/10.13026/4mxk-na84

📚 Referencias Adicionales

  • Pollard TJ, Johnson AEW, Raffa JD, Celi LA, Mark RG and Badawi O. (2018). The eICU Collaborative Research Database, a freely available multi-center database for critical care research. Scientific Data. https://doi.org/10.1038/sdata.2018.178
  • Goldberger, A., Amaral, L., Glass, L., Hausdorff, J., Ivanov, P. C., Mark, R., ... & Stanley, H. E. (2000). PhysioBank, PhysioToolkit, and PhysioNet: Components of a new research resource for complex physiologic signals. Circulation, 101(23), e215–e220. RRID:SCR_007345.
  • eICU Code Repository. GitHub. https://github.com/MIT-LCP/eicu-code

🔄 Transformaciones Aplicadas

Modificaciones realizadas al conjunto original (eICU CD11)

  • Creación de variable objetivo: Generación de mortalidad_hospitalaria a partir de hospitaldischargestatus ('Expired' → 1, 'Alive' → 0) y eliminación de variables redundantes como diedinhospital para evitar fuga de datos.
  • Ingeniería de características textuales:
    • Agrupación de diagnósticos primarios en 7 categorías clínicas de alto nivel mediante minería de texto (categoria_diagnostico).
    • Extracción de comorbilidades (comorb_diabetes, comorb_hipertension, comorb_renal, comorb_cardiaca, comorb_pulmonar) mediante búsqueda de patrones en el historial médico.
  • Limpieza y eliminación de variables:
    • Eliminación de identificadores (uniquepid, patientunitstayid) por privacidad y para reducir dimensionalidad.
    • Eliminación de variables temporales de alta cardinalidad (columnas con time24).
    • Eliminación automática de columnas con >50% de valores faltantes.
  • Tratamiento de valores nulos: Conversión de valores -1 (indicadores de "no disponible" en eICU) a NaN para su correcto manejo estadístico, seguido de imputación con mediana (variables continuas) o moda (variables categóricas codificadas).
  • Codificación de categóricas: Transformación de 15+ variables categóricas (region, teachtype, gender, ethnicity, unittype, hospitaladmitsource, entre otras) a valores numéricos enteros mediante codificación ordinal, generando un archivo de leyenda (leyenda.json) para su interpretación.
  • Optimización de tipos de datos: Conversión estricta de variables numéricas con valores enteros (ej. 1.0 → 1) para eliminar decimales innecesarios y optimizar el rendimiento computacional.

📊 Resultado: Dataset enriquecido y depurado de 1,000 registros (estratificados) con 57 variables predictivas y 1 variable objetivo, optimizado para validación externa de modelos de mortalidad en UCI y evaluación mediante TabDSFidelity.

📋 Diccionario de Datos Detallado

Variable Descripción Clínica Tipo Rango / Categorías Unidad ¿Objetivo?
gender Género del paciente Categórico 0,1,2 (ver leyenda) N/A No
age Edad del paciente agrupada en rangos Categórico 10-76 (ver leyenda) N/A No
ethnicity Etnia del paciente Categórico 0-6 (ver leyenda) N/A No
apacheadmissiondx Diagnóstico de admisión APACHE Categórico Múltiples códigos N/A No
hospitaladmitsource Origen de la admisión hospitalaria Categórico 0-13 (ver leyenda) N/A No
hospitaldischargelocation Lugar de alta hospitalaria Categórico 0-8 (ver leyenda) N/A No
unittype Tipo de unidad de cuidados intensivos Categórico 0-7 (ver leyenda) N/A No
unitadmitsource Origen de la admisión a UCI Categórico 0-13 (ver leyenda) N/A No
unitstaytype Tipo de estancia en UCI Categórico 0-3 (ver leyenda) N/A No
unitdischargelocation Lugar de alta de UCI Categórico 0-15 (ver leyenda) N/A No
unitdischargestatus Estado al alta de UCI Categórico 0,2 (ver leyenda) N/A No
admitsource Origen de admisión Categórico 1-8 (ver leyenda) N/A No
admitdiagnosis Diagnóstico de admisión Categórico Múltiples códigos N/A No
dischargelocation Lugar de alta Categórico 4-9 (ver leyenda) N/A No
amilocation Ubicación AMI Categórico 0-7 (ver leyenda) N/A No
categoria_diagnostico Categoría de diagnóstico Categórico 0,2,4 (ver leyenda) N/A No
wardid Identificador de la sala/ward Numérico 1 - 291 N/A No
admissionheight Altura del paciente al ingreso Numérico 33.6 - 198.1 cm No
hospitaladmitoffset Tiempo de admisión hospitalaria relativo Numérico -75150 - 8696 minutos No
hospitaldischargeyear Año de alta hospitalaria Numérico 2014 - 2015 año No
hospitaldischargeoffset Tiempo de alta hospitalaria relativo Numérico 20 - 90487 minutos No
unitvisitnumber Número de visita a la UCI Numérico 0 - 3 visitas No
admissionweight Peso del paciente al ingreso Numérico 33 - 515 kg No
unitdischargeoffset Tiempo de alta de UCI relativo Numérico 0 - 66499 minutos No
apachescore Puntaje APACHE Numérico 8 - 157 puntos No
sicuday Día en SICU Numérico 1 - 1 días No
bedcount Número de camas en la unidad Numérico 1 - 84 camas No
graftcount Conteo de injertos Numérico 3 - 4 N/A No
verbal Puntuación verbal (GCS) Numérico 1 - 5 puntos No
motor Puntuación motora (GCS) Numérico 1 - 6 puntos No
eyes Puntuación ocular (GCS) Numérico 1 - 4 puntos No
creatinine Nivel de creatinina sérica Numérico 0.26 - 13.34 mg/dL No
visitnumber Número de visita Numérico 1 - 4 visitas No
day1meds Medicamentos del día 1 (indicador binario) Numérico 0 - 1 N/A No
day1verbal Puntuación verbal día 1 (GCS) Numérico 1 - 5 puntos No
day1motor Puntuación motora día 1 (GCS) Numérico 1 - 6 puntos No
day1eyes Puntuación ocular día 1 (GCS) Numérico 1 - 4 puntos No
saps3day1 SAPS3 día 1 Binario 0: No, 1: Sí N/A No
saps3today SAPS3 actual (hoy) Binario 0: No, 1: Sí N/A No
saps3yesterday SAPS3 ayer Binario 0: No, 1: Sí N/A No
teachtype Tipo de hospital docente Binario 0: No, 1: Sí N/A No
region Región geográfica Binario 0: No, 1: Sí N/A No
meds Medicamentos administrados Binario 0: No, 1: Sí N/A No
thrombolytics Trombolíticos administrados Binario 0: No, 1: Sí N/A No
aids Diagnóstico de SIDA Binario 0: No, 1: Sí N/A No
hepaticfailure Falla hepática Binario 0: No, 1: Sí N/A No
lymphoma Linfoma Binario 0: No, 1: Sí N/A No
metastaticcancer Cáncer metastásico Binario 0: No, 1: Sí N/A No
leukemia Leucemia Binario 0: No, 1: Sí N/A No
immunosuppression Inmunosupresión Binario 0: No, 1: Sí N/A No
cirrhosis Cirrosis Binario 0: No, 1: Sí N/A No
activetx Tratamiento activo Binario 0: No, 1: Sí N/A No
readmit Reingreso hospitalario Binario 0: No, 1: Sí N/A No
ima Infarto de miocardio agudo Binario 0: No, 1: Sí N/A No
midur Duración de IM Binario 0: No, 1: Sí N/A No
ventday1 Ventilación mecánica día 1 Binario 0: No, 1: Sí N/A No
oobventday1 Ventilación fuera de cama día 1 Binario 0: No, 1: Sí N/A No
oobintubday1 Intubación fuera de cama día 1 Binario 0: No, 1: Sí N/A No
diabetes Diabetes mellitus Binario 0: No, 1: Sí N/A No
managementsystem Sistema de gestión Binario 0: No, 1: Sí N/A No
var03hspxlos Variable 03 HSP X LOS Binario 0: No, 1: Sí N/A No
comorb_diabetes Comorbilidad: Diabetes Binario 0: No, 1: Sí N/A No
comorb_hipertension Comorbilidad: Hipertensión Binario 0: No, 1: Sí N/A No
comorb_renal Comorbilidad: Enfermedad renal Binario 0: No, 1: Sí N/A No
comorb_cardiaca Comorbilidad: Enfermedad cardíaca Binario 0: No, 1: Sí N/A No
comorb_pulmonar Comorbilidad: Enfermedad pulmonar Binario 0: No, 1: Sí N/A No
mortalidad_hospitalaria Mortalidad hospitalaria (objetivo) Binario 0: Sobrevive, 1: Fallece N/A
78 Variables totales
22 Numéricas
16 Categóricas
40 Binarias
Objetivo: Mortalidad (mortalidad_hospitalaria)
Datos ausentes: 0%

📈 Distribución de la variable objetivo en el conjunto original

📖 Leyenda de Variables Categóricas

Esta sección detalla los códigos y significados de las variables categóricas y binarias presentes en el conjunto de datos. Comprender estas codificaciones es fundamental para la correcta interpretación de los resultados clínicos.

gender_x Categórica
Código Significado
0Desconocido
1Female (Femenino)
2Male (Masculino)
age_x Categórica

Edad del paciente en años

015 años
116 años
217 años
318 años
419 años
520 años
621 años
722 años
823 años
924 años
1025 años
1126 años
1227 años
1328 años
1429 años
1530 años
1631 años
1732 años
1833 años
1934 años
2035 años
2136 años
2237 años
2338 años
2439 años
2540 años
2641 años
2742 años
2843 años
2944 años
3045 años
3146 años
3247 años
3348 años
3449 años
3550 años
3651 años
3752 años
3853 años
3954 años
4055 años
4156 años
4257 años
4358 años
4459 años
4560 años
4661 años
4762 años
4863 años
4964 años
5065 años
5166 años
5267 años
5368 años
5469 años
5570 años
5671 años
5772 años
5873 años
5974 años
6075 años
6176 años
6277 años
6378 años
6479 años
6580 años
6681 años
6782 años
6883 años
6984 años
7085 años
7186 años
7287 años
7388 años
7489 años
75> 89 años
76Desconocido
💡

Nota: Los códigos representan la edad exacta del paciente en años, con excepción del código 75 (>89 años) y 76 (Desconocido).

ethnicity Categórica
Código Significado
0African American (Afroamericana)
1Asian (Asiática)
2Caucasian (Caucásica/Blanca)
3Desconocido
4Hispanic (Hispana/Latina)
5Native American (Nativa Americana)
6Other/Unknown (Otra/Desconocida)
apacheadmissiondx Categórica

Diagnósticos APACHE de admisión

0ARDS - Síndrome de distrés respiratorio agudo
1Abdomen only trauma (Trauma abdominal)
2Abdomen/extremity trauma
3Abdomen/multiple trauma
4Ablación cardíaca
5Absceso neurológico
6Alteración ácido-base/electrolitos
7Adrenalectomía
8Síndrome de abstinencia alcohólica
9Anafilaxia
10Anemia
11Aneurisma aórtico abdominal
14Aneurisma aórtico torácico
16Angina estable
17Angina inestable
18Reemplazo válvula aórtica y mitral
19Reemplazo válvula aórtica (aislado)
22Paro respiratorio
23Asma
25Hemorragia GI por várices esofágicas
26Hemorragia GI - ubicación desconocida
27Hemorragia GI baja
28Hemorragia GI alta
33CABG - Bypass coronario
38Insuficiencia cardíaca congestiva
39ACV - Accidente cerebrovascular
47Paro cardíaco
48Miocardiopatía
51Celulitis
64Colangitis
67Coma/alteración del nivel de conciencia
76Desconocido
77Coma hiperosmolar no cetósico
78Cetoacidosis diabética
86Embolia pulmonar
87Enfisema/bronquitis
88Encefalitis
90Encefalopatía hepática
92Endarterectomía carotídea
127Hematoma subdural
131Hemorragia/hematoma intracraneal
144Infarto agudo de miocardio (IAM)
148Reemplazo total de rodilla
151Linfoma no Hodgkin
153Meningitis
154Trastorno metabólico/endocrino
155Reparación de válvula mitral
156Reemplazo de válvula mitral
171Sobredosis de alcoholes
177Pancreatitis
184Neumonía por aspiración
185Neumonía bacteriana
186Neumonía - otra
187Neumonía viral
191Insuficiencia renal aguda
196Enfermedad pulmonar restrictiva
200Convulsiones
201Sepsis GI
204Sepsis pulmonar
207Shock cardiogénico
215Hemorragia subaracnoidea/aneurisma
⚠️

Más de 100 códigos de diagnóstico APACHE disponibles. Se muestran los más representativos. Ver documentación completa para detalles.

hospitaladmitsource Categórica
Código Significado
0Acute Care/Floor (Cuidados agudos/Piso)
1Chest Pain Center (Centro de dolor torácico)
2Desconocido
3Direct Admit (Admisión directa)
4Emergency Department (Emergencias)
5Floor (Piso/Sala)
6ICU (UCI)
7ICU to SDU (UCI a unidad de step-down)
8Operating Room (Quirófano)
9Other Hospital (Otro hospital)
10Other ICU (Otra UCI)
11PACU (Unidad de recuperación post-anestésica)
12Recovery Room (Sala de recuperación)
13Step-Down Unit (SDU) (Unidad de step-down)
hospitaldischargelocation Categórica
Código Significado
0Death (Fallecimiento)
1Desconocido
2Home (Casa)
3Nursing Home (Residencia/Asilo)
4Other (Otro)
5Other External (Otro externo)
6Other Hospital (Otro hospital)
7Rehabilitation (Rehabilitación)
8Skilled Nursing Facility (Centro de enfermería especializada)
unittype Categórica
Código Significado
0CCU-CTICU (Unidad de Cuidados Coronarios-Cardiotorácica)
1CSICU (Unidad de Cuidados Intensivos Cardioquirúrgica)
2CTICU (Unidad de Cuidados Intensivos Cardiotorácica)
3Cardiac ICU (UCI Cardíaca)
4MICU (Unidad de Cuidados Intensivos Médicos)
5Med-Surg ICU (UCI Médico-Quirúrgica)
6Neuro ICU (UCI Neurológica)
7SICU (Unidad de Cuidados Intensivos Quirúrgicos)
unitadmitsource Categórica
Código Significado
0Acute Care/Floor (Cuidados agudos/Piso)
1Chest Pain Center (Centro de dolor torácico)
2Desconocido
3Direct Admit (Admisión directa)
4Emergency Department (Emergencias)
5Floor (Piso/Sala)
6ICU (UCI)
7ICU to SDU (UCI a unidad de step-down)
8Operating Room (Quirófano)
9Other Hospital (Otro hospital)
10Other ICU (Otra UCI)
11PACU (Unidad de recuperación post-anestésica)
12Recovery Room (Sala de recuperación)
13Step-Down Unit (SDU) (Unidad de step-down)
unitstaytype Categórica
Código Significado
0admit (Admisión)
1readmit (Reingreso)
2stepdown/other (Step-down/otro)
3transfer (Transferencia)
unitdischargelocation Categórica
Código Significado
0Acute Care/Floor (Cuidados agudos/Piso)
1Death (Fallecimiento)
2Desconocido
3Floor (Piso/Sala)
4Home (Casa)
5ICU (UCI)
6Nursing Home (Residencia/Asilo)
7Other (Otro)
8Other External (Otro externo)
9Other Hospital (Otro hospital)
10Other ICU (Otra UCI)
11Other Internal (Otro interno)
12Rehabilitation (Rehabilitación)
13Skilled Nursing Facility (Centro de enfermería especializada)
14Step-Down Unit (SDU) (Unidad de step-down)
15Telemetry (Telemetría)
unitdischargestatus Categórica
Código Significado
0Alive (Vivo)
1Desconocido
2Expired (Fallecido)
admitdiagnosis Categórica

Códigos de diagnóstico de admisión

ACIDBASETrastorno ácido-base
ACUHEPFAILFalla hepática aguda
AMIInfarto agudo de miocardio
ANAPHYLAXAnafilaxia
ARDSSíndrome de distrés respiratorio agudo
ARENFAILInsuficiencia renal aguda
ASTHMAAsma
ATELECTASAtelectasia
CARDARRESTParo cardíaco
CARDIOMYOPMiocardiopatía
CARDSHOCKShock cardiogénico
CHFInsuficiencia cardíaca congestiva
COMAComa
CVASTROKEACV/Accidente cerebrovascular
DKACetoacidosis diabética
DVTTrombosis venosa profunda
EMPHYSBRONEnfisema/bronquitis
ENCEPHALITEncefalitis
ENCEPHALOPEncefalopatía
HEPENCEPHEncefalopatía hepática
ICHHemorragia intracraneal
MENINGITISMeningitis
PANCRITISPancreatitis
PERITONITPeritonitis
PNEUMBACTNeumonía bacteriana
PNEUMOTHORNeumotórax
PULMEMBOLEmbolia pulmonar
RESPARRESTParo respiratorio
SAH/IANEURHemorragia subaracnoidea/aneurisma
SEIZURESConvulsiones
SEPSISSepsis
DesconocidoDiagnóstico desconocido
⚠️

Más de 200 códigos de diagnóstico disponibles. Se muestran los más representativos.

categoria_diagnostico Categórica
Código Significado
0Infeccioso/Sepsis
1Neurológico
2Otro
3Renal
4Respiratorio
5Traumático
💡

Nota: Esta variable agrupa los diagnósticos en categorías clínicas principales.

Variables Binarias Binario

Formato común: 0 = No, 1 = Sí

saps3day1SAPS3 día 1
saps3todaySAPS3 actual
saps3yesterdaySAPS3 ayer
teachtypeHospital docente
regionRegión geográfica
medsMedicamentos administrados
thrombolyticsTrombolíticos
aidsSIDA
hepaticfailureFalla hepática
lymphomaLinfoma
metastaticcancerCáncer metastásico
leukemiaLeucemia
immunosuppressionInmunosupresión
cirrhosisCirrosis
activetxTratamiento activo
readmitReingreso
imaInfarto agudo de miocardio
midurDuración de IM
ventday1Ventilación día 1
oobventday1Ventilación fuera de cama día 1
oobintubday1Intubación fuera de cama día 1
diabetesDiabetes
managementsystemSistema de gestión
var03hspxlosVariable 03 HSP X LOS
comorb_diabetesComorbilidad: Diabetes
comorb_hipertensionComorbilidad: Hipertensión
comorb_renalComorbilidad: Renal
comorb_cardiacaComorbilidad: Cardíaca
comorb_pulmonarComorbilidad: Pulmonar
mortalidad_hospitalaria🎯 Variable Objetivo: Mortalidad hospitalaria
ℹ️

Nota: Todas las variables binarias están codificadas como 0 = No y 1 = Sí.

📊
Variables categóricas: 13
  • gender_x (3 categorías)
  • age_x (77 códigos de edad)
  • ethnicity (7 categorías)
  • apacheadmissiondx (100+ códigos)
  • hospitaladmitsource (14 categorías)
  • hospitaldischargelocation (9 categorías)
  • unittype (8 categorías)
  • unitadmitsource (14 categorías)
  • unitstaytype (4 categorías)
  • unitdischargelocation (16 categorías)
  • unitdischargestatus (3 categorías)
  • admitdiagnosis (200+ códigos)
  • categoria_diagnostico (6 categorías)
🎯
Variables binarias: 30
  • 3 variables SAPS3
  • 5 variables de administración
  • 10 variables de comorbilidades
  • 5 variables de ventilación
  • 1 variable objetivo: mortalidad_hospitalaria
📈
Variables numéricas: 22
  • Demográficas: wardid, admissionheight, admissionweight
  • Tiempos: hospitaladmitoffset, hospitaldischargeoffset, unitdischargeoffset
  • Puntajes: apachescore, GCS (verbal, motor, eyes, day1*)
  • Laboratorio: creatinine
⚠️
Recomendaciones:
  • Conjunto de datos eICU con alta dimensionalidad
  • Las variables apacheadmissiondx y admitdiagnosis tienen muchos códigos únicos
  • Considerar agrupar diagnósticos por categorías (categoria_diagnostico)
  • La variable age_x contiene la edad exacta en años (0-76)
  • Verificar consistencia entre unitdischargestatus y mortalidad_hospitalaria
  • Las variables de tiempo (offset) están en minutos desde el ingreso

🔬 Metodología de Generación (Reproducibilidad Científica)

📐 Método Principal

SMOTE RSB* Adaptado

Versión: 2.0

DOI: 10.1007/s42979-026-04896-8

📏 Reglas de restricción

  • unitdischargestatus == 2 → mortalidad_hospitalaria = 1
  • hospitaldischargelocation == 0 → mortalidad_hospitalaria = 1
  • mortalidad_hospitalaria == 0 → hospitaldischargelocation ≠ 0
  • unitstaytype == 1 → unitvisitnumber > 1
  • readmit == 1 → unitstaytype = 1
  • apacheadmissiondx == 53 (Cesárea) → gender = 1 (Femenino)
  • apacheadmissiondx == 217 (TURP) → gender = 2 (Masculino)
  • apacheadmissiondx == 53 (Cesárea) → age < 40
  • apacheadmissiondx == 166 (Cirugía Obesidad) → admissionweight > 90
  • apacheadmissiondx == 33 (CABG) → hospitaladmitsource = 8 (Quirófano)
  • apacheadmissiondx == 87 (Enfisema) → comorb_pulmonar = 1
  • verbal == 5 → eyes > 1
  • motor == 6 → verbal > 1
  • eyes == 1 → verbal < 5
  • motor == 1 → ventday1 = 1
  • motor == 1 → apachescore > 10
  • diabetes == 1 → comorb_diabetes = 1
  • cirrhosis == 1 → hepaticfailure = 1
  • aids == 1 → immunosuppression = 1
  • leukemia == 1 → immunosuppression = 1
  • lymphoma == 1 → immunosuppression = 1
  • metastaticcancer == 1 → immunosuppression = 1
  • oobventday1 == 1 → ventday1 = 1
  • thrombolytics == 1 → apachescore > 10
  • categoria_diagnostico == 0 (Sepsis) → apachescore > 0
  • apacheadmissiondx == 135 (Fallo Hepático) → hepaticfailure = 1
  • creatinine > 4 → comorb_renal = 1
  • apacheadmissiondx == 191 (Fallo Renal) → creatinine > 1.2
  • ventday1 == 1 → verbal < 5
  • apachescore < 5 → unitdischargestatus = 0 (Sobrevive UCI)
  • apacheadmissiondx == 112 (Diálisis) → creatinine > 0.5
  • apacheadmissiondx == 9 (Anafilaxis) → apachescore > 0
  • age == 75 (Edad > 89) → apachescore ≥ 5

⚙️ Hiperparámetros SMOTE RSB* Adaptado

Valor escala0.03
Probabilidad Base0.1

🔄 Hiperparámetros CTGAN

epochs500
batch_size50
generator_lr0.0002
discriminator_lr0.0002
pac10
generator_dim(256, 256)
discriminator_dim(256, 256)
embedding_dim128
l2scale1e-05

📊 Hiperparámetros TVAE

epochs 500
batch_size 50
embedding_dim 128
compress_dims (128, 128)
decompress_dims (128, 128)
l2scale 1e-5
loss_factor 2

🔐 Reproducibilidad

Random Seed42
Python3.12.12

Librerías utilizadas:

  • pandas: 2.3.3
  • numpy: 2.4.4
  • scikit-learn: 1.7.2
  • imbalanced-learn: 0.14.0
  • ctgan: 0.11.1
  • torch: 2.9.0
  • sdv: 1.28.0
  • scipy: 1.16.3
  • matplotlib: 3.10.9
📝

Para reproducir exactamente este conjunto de datos, ejecute el script de generación con la semilla aleatoria 42. Los resultados pueden variar ligeramente según la versión de las librerías.

📊 Conjuntos de Datos Derivados

El conjunto original ha sido sometido a un proceso de balanceo de clases y generación sintética para mejorar la representación de clases minoritarias. Nota: se ha empleado un conjunto de validación para evaluar el índice de fidelidad. Se han generado tres familias de conjuntos:

  • 📊 Balanceados: Conjuntos creados mediante técnicas de sobremuestreo
  • 🔮 Sintéticos Puros: Conjuntos generados completamente con modelos generativos
  • ✨ Aumentados: Combinación del conjunto original + datos sintéticos

El mejor conjunto de cada etapa fue seleccionado mediante el índice TabDSFidelity.

📊 Conjuntos Balanceados 8 conjuntos

Algoritmo Ratio N° Ejemplos AUC-ROC F1 Accuracy TabDSFidelity Jensen-Shannon Kolmogorov-Smirnov Kullback-Leibler Correlación Tiempo Total (s) Dist. Promedio Copias Exactas Ataque MIA Mejor
Random Oversampling 1 1100 1.000 0.973 0.975 3.660 0.146 0.370 0.051 0.953 94.355 0 1100 0.545
Smote 1 1100 1.000 0.984 0.985 3.889 0.220 0.293 0.061 0.954 89.165 0.054 600 0.561
Borderline SMOTE 1 1100 1.000 0.990 0.990 4.489 0.224 0.272 0.063 0.951 100.320 0.054 600 0.470
ADASYN 1.015 1108 1.000 0.984 0.985 3.885 0.216 0.266 0.058 0.956 112.479 0.054 600 0.558
SMOTE RSB* Adaptado 1 1100 1.000 0.995 0.995 6.109 0.205 0.338 0.052 0.958 109.542 0.060 600 0.551
SMOTE RSB* Adaptado + Reglas 1 1100 1.000 1.000 1.000 6.936 0.203 0.347 0.052 0.959 142.943 0.060 600 0.568 🏆
OOF PSO para Balanceo 3.254 719 1.000 1.000 1.000 6.861 0.136 0.304 0.072 0.729 129.671 0.076 600 0.502
OOF PSO para Balanceo + Reglas 1.883 839 1.000 1.000 1.000 4.000 0.227 0.154 0.130 0.683 96.790 0.138 485 0.494
Mejor seleccionado: SMOTE RSB* Adaptado + Reglas del Dominio (TabDSFidelity: 6.936, AUC: 1.000, F1: 1.000, MIA: 0.568). Nota: Ratio <= 1.5 = Conjunto Balanceado.

🔮 Conjuntos Sintéticos Puros 10 conjuntos

Algoritmo Ratio N° Ejemplos AUC-ROC F1 Accuracy TabDSFidelity Jensen-Shannon Kolmogorov-Smirnov Kullback-Leibler Correlación Tiempo Total (s) Dist. Promedio Copias Exactas Ataque MIA Mejor
SMOTE RSB* + Ruido Gaussiano 1.027 9995 1.000 0.995 0.995 9.839 0.276 0.274 0.087 0.947 202.167 0.696 0 0.529
SMOTE RSB* + Ruido Gaussiano + Reglas 1.394 9995 1.000 0.995 0.995 9.838 0.276 0.274 0.099 0.945 615.096 0.696 0 0.508
CTGAN 1.509 10000 0.848 0.785 0.725 3.547 0.283 0.144 0.130 0.922 1674.680 0.158 0 0.506
CTGAN + Reglas del Dominio 2.337 10000 0.997 0.774 0.710 4.766 0.283 0.144 0.146 0.921 2057.510 0.163 0 0.523
TVAE 1.123 10000 0.999 0.985 0.985 8.912 0.332 0.233 0.159 0.940 479.039 0.107 0 0.508
TVAE + Reglas del Dominio 1.297 10000 0.999 0.990 0.990 8.990 0.332 0.233 0.158 0.940 802.684 0.108 0 0.482
OOF PSO para Aumento 1 10000 0.790 0.885 0.870 2.107 0.452 0.143 0.690 0.647 223.717 0.305 0 0.531
OOF PSO para Aumento + Reglas 1.085 10000 0.984 0.919 0.905 4.523 0.452 0.143 0.749 0.661 586.429 0.322 0 0.550
SMOTE RSB* Refinado 1.000 9998 1.000 0.990 0.990 9.810 0.280 0.285 0.088 0.945 183.988 0.683 0 0.505
SMOTE RSB* Refinado + Reglas 1.404 9998 1.000 1.000 1.000 9.969 0.280 0.285 0.100 0.944 554.230 0.684 0 0.498 🏆
Mejor seleccionado: SMOTE RSB* Refinado + Reglas del Dominio (TabDSFidelity: 9.969, AUC: 1.000, F1: 1.000, MIA: 0.498). Nota: Ratio <= 1.5 = Conjunto Balanceado.

✨ Conjuntos Aumentados 10 conjuntos

Algoritmo Ratio N° Ejemplos AUC-ROC F1 Accuracy TabDSFidelity Jensen-Shannon Kolmogorov-Smirnov Kullback-Leibler Correlación Tiempo Total (s) Dist. Promedio Copias Exactas Ataque MIA Mejor
SMOTE RSB* + Ruido Gaussiano 1.025 11095 1.000 0.995 0.995 9.096 0.267 0.277 0.082 0.947 420.293 0.696 0 0.523
SMOTE RSB* + Ruido Gaussiano + Reglas 1.348 11095 1.000 1.000 1.000 9.890 0.267 0.277 0.092 0.946 813.121 0.696 0 0.522
CTGAN 1.447 11100 0.992 0.975 0.975 3.124 0.267 0.171 0.076 0.928 1879.250 0.145 120 0.496
CTGAN + Reglas del Dominio 2.129 11100 1.000 0.990 0.990 7.552 0.267 0.171 0.090 0.928 2248.710 0.149 120 0.486
TVAE 1.110 11100 1.000 0.995 0.995 8.463 0.311 0.240 0.109 0.948 649.599 0.102 120 0.513
TVAE + Reglas del Dominio 1.264 11100 1.000 1.000 1.000 9.261 0.311 0.240 0.111 0.947 983.006 0.103 120 0.510
OOF PSO para Aumento 1 11100 1.000 0.990 0.990 4.340 0.414 0.143 0.516 0.668 415.126 0.278 120 0.523
OOF PSO para Aumento + Reglas 1.076 11100 1.000 1.000 1.000 6.046 0.414 0.143 0.560 0.681 779.166 0.294 120 0.519
SMOTE RSB* Refinado 1.000 11098 0.999 0.984 0.985 7.351 0.271 0.287 0.083 0.946 378.072 0.683 0 0.552
SMOTE RSB* Refinado + Reglas 1.357 11098 1.000 1.000 1.000 9.934 0.271 0.287 0.093 0.945 746.863 0.683 0 0.521 🏆
Mejor seleccionado: SMOTE RSB* Refinado + Reglas del Dominio (TabDSFidelity: 9.934, AUC: 1.000, F1: 1.000, MIA: 0.521). Nota: Ratio <= 1.5 = Conjunto Balanceado.

📈 Diagrama del Proceso de Generación

Conjunto Original
CD_12
Balanceo
(8 métodos)
↓ Selección por TabDSFidelity
⭐ Mejor Balanceado
SMOTE RSB* Adaptado + Reglas del Dominio
Generación Sintética
(10 métodos)
↓ Evaluación TabDSFidelity
⭐ Mejor Sintético
SMOTE RSB* Refinado + Reglas del Dominio
⭐ Mejor Aumentado
SMOTE RSB* Refinado + Reglas del Dominio
Conjunto Sintético Final
Seleccionado por calidad

📊 Guía de Métricas de Evaluación

Para interpretar correctamente los resultados de los conjuntos de datos generados, es fundamental comprender qué mide cada métrica y cómo se relacionan entre sí. A continuación, se detalla cada una de las métricas utilizadas en la evaluación:

🎯 Métricas de Rendimiento Predictivo

AUC-ROC (0.5 - 1.0)

¿Qué mide? Capacidad del modelo para distinguir entre clases (Ej: mortalidad vs supervivencia).

Interpretación:

  • 0.5: Sin capacidad predictiva (aleatorio)
  • 0.7-0.8: Aceptable
  • 0.8-0.9: Excelente
  • >0.9: Sobresaliente

Ejemplo: AUC-ROC = 0.82 significa que hay un 82% de probabilidad de que el modelo clasifique correctamente un paciente fallecido frente a uno superviviente.

F1-Score (0 - 1.0)

¿Qué mide? Media armónica entre precisión y sensibilidad (recall).

Interpretación:

  • 0.7-0.8: Buen equilibrio entre precisión y sensibilidad
  • 0.8-0.9: Muy buen equilibrio
  • >0.9: Excelente equilibrio

Ejemplo: F1 = 0.76 indica que el modelo mantiene un buen balance entre identificar correctamente a los pacientes que fallecen (sensibilidad) y no etiquetar erróneamente a los que sobreviven (precisión).

Accuracy (0 - 1.0)

¿Qué mide? Proporción de predicciones correctas sobre el total.

Interpretación:

  • 0.7-0.8: Buen rendimiento general
  • 0.8-0.9: Muy buen rendimiento
  • >0.9: Excelente rendimiento

Ejemplo: Accuracy = 0.75 significa que el 75% de las predicciones del modelo son correctas.

⚠️ Nota: En conjuntos desbalanceados, esta métrica puede ser engañosa. Es mejor usar F1-Score o AUC-ROC.

🔬 Índice de Fidelidad del Conjunto

TabDSFidelity (0 - 10+)

¿Qué mide? Calidad global del conjunto sintético comparado con el original.

Interpretación:

  • < 3.0: Baja fidelidad (poca similitud con el original)
  • 3.0 - 6.0: Fidelidad moderada
  • 6.0 - 8.0: Alta fidelidad
  • > 8.0: Muy alta fidelidad (excelente representación)

Ejemplo: TabDSFidelity = 8.08 indica que el conjunto sintético mantiene una alta similitud con el original, preservando las relaciones y distribuciones de los datos reales, además de maximizar su eficacia predictiva.

💡 Importante: Este es el índice para seleccionar el mejor conjunto de datos sintéticos. Para este caso, el peso empleado para las métricas "AUC-ROC", "F1-Score" y "Accuracy" fue (2) y para el resto de las métricas fue (1).

📊 Métricas de Similitud de Distribuciones

Jensen-Shannon (Promedio) (0 - 1.0)

¿Qué mide? Similitud entre las distribuciones de variables numéricas del conjunto sintético y el original.

Interpretación:

  • Cerca de 0: Distribuciones muy similares (ideal)
  • 0.1 - 0.3: Diferencias moderadas
  • > 0.3: Diferencias significativas

Ejemplo: JS = 0.118 indica que las distribuciones de las variables numéricas (edad, presión arterial, etc.) son bastante similares a las del conjunto original.

📌 Nota: Es el promedio de la divergencia de Jensen-Shannon calculada para todas las variables numéricas.

Kolmogorov-Smirnov (p-valor promedio) (0 - 1.0)

¿Qué mide? Probabilidad estadística de que las muestras numéricas del conjunto sintético provengan de la misma distribución continua que el original.

Interpretación:

  • Cerca de 1.0: Altísima probabilidad de que sean la misma distribución (ideal)
  • > 0.05: Similitud aceptable (no se rechaza que sean iguales)
  • < 0.05: Diferencias estadísticamente significativas

Ejemplo: KS p-valor = 0.753 indica que hay evidencia fuerte a favor de que las distribuciones acumulativas de la variable sintética y la original son equivalentes.

📌 Nota: Se reporta el promedio de los p-valores obtenidos mediante la prueba de Kolmogorov-Smirnov de dos muestras para las variables numéricas.

Kullback-Leibler (Promedio) (0 - ∞)

¿Qué mide? Divergencia entre las distribuciones de variables categóricas del conjunto sintético y el original.

Interpretación:

  • Cerca de 0: Distribuciones muy similares (ideal)
  • 0.01 - 0.1: Diferencias pequeñas
  • > 0.1: Diferencias notables

Ejemplo: KL = 0.014 indica que la distribución de las variables categóricas (género, mortalidad) es muy similar a la del conjunto original.

📌 Nota: Es el promedio de la divergencia de Kullback-Leibler para todas las variables categóricas. A diferencia de JS y KS, esta métrica se aplica solo a variables categóricas.

📊 Métricas de Estructura

Similitud de Correlación (0 - 1.0)

¿Qué mide? Preservación de las relaciones entre variables del conjunto original.

Interpretación:

  • Cerca de 1.0: Las relaciones entre variables se mantienen casi idénticas
  • > 0.9: Excelente preservación de relaciones
  • 0.7 - 0.9: Buena preservación
  • < 0.7: Pérdida significativa de relaciones

Ejemplo: Correlación = 0.976 significa que las relaciones entre variables (ej. edad y mortalidad) se mantienen en un 97.6% respecto al conjunto original.

⏱️ Métricas de Rendimiento Temporal

Tiempo Total (s) (segundos)

¿Qué mide? Tiempo total de ejecución del proceso de generación del conjunto.

Interpretación:

  • < 100s: Generación rápida
  • 100-300s: Tiempo moderado
  • > 300s: Proceso lento (puede ser aceptable para conjuntos grandes)

Ejemplo: Tiempo total = 69.45s significa que el proceso completo de generación del conjunto balanceado tomó aproximadamente 1.16 minutos.

⏱️ Nota: Incluye el tiempo de generación sintética + cálculo de métricas.

🔒 Métricas de Privacidad

Estas métricas evalúan el riesgo de exposición de información sensible y la capacidad de un atacante para inferir datos de los pacientes a partir del conjunto de datos sintéticos.

Distancia al Registro Más Cercano (≥ 0)

¿Qué mide? La distancia promedio entre cada registro sintético y su registro más cercano en el conjunto de datos original.

Interpretación:

  • Cerca de 0: Los datos sintéticos son muy similares a los originales → ⚠️ ALTO RIESGO de privacidad
  • 0.01 - 0.05: Similaridad moderada → Riesgo moderado
  • > 0.05: Buena separación de los datos originales → ✅ BAJO RIESGO de privacidad

Ejemplo: Distancia promedio = 0.015 en SMOTE indica que los registros sintéticos están relativamente cerca de los originales, lo que podría implicar un riesgo de privacidad moderado.

🔬

Metodología: Calculada utilizando la Distancia de Gower, la cual maneja internamente tipos de datos mixtos, normalizando las variables numéricas y penalizando diferencias categóricas para devolver un índice estandarizado entre 0 y 1.

💡

Recomendación: Valores < 0.01 deben ser evaluados con precaución. Idealmente, buscar valores > 0.02 para garantizar la privacidad.

Copias Exactas (≥ 0)

¿Qué mide? Número de registros sintéticos que son copias idénticas de registros en el conjunto de datos original.

Interpretación:

  • 0: Ninguna copia exacta → ✅ SEGURO
  • 1 - 10: Pocas copias → Riesgo bajo
  • 11 - 50: Copias moderadas → ⚠️ RIESGO MODERADO
  • > 50: Muchas copias → 🔴 ALTO RIESGO de reidentificación

Ejemplo: SMOTE RSB* Refinado genera 76 copias exactas de 8817 registros (0.86%), lo que representa un riesgo de privacidad que debe ser evaluado.

⚠️

Importante: La presencia de copias exactas es uno de los indicadores más críticos de fuga de datos. Idealmente, este valor debe ser 0.

Ataque de Inferencia de Membresía (MIA) (0 - 1.0)

¿Qué mide? Tasa de éxito (medida en AUC-ROC) de un atacante para determinar si un registro específico pertenece al conjunto de datos original.

Interpretación:

  • 0.5: Aleatorio (ideal) → ✅ PRIVACIDAD ÓPTIMA
  • 0.5 - 0.55: Riesgo bajo
  • 0.55 - 0.6: Riesgo moderado → ⚠️ PRIVACIDAD CUESTIONABLE
  • > 0.6: Riesgo alto → 🔴 PRIVACIDAD COMPROMETIDA

Ejemplo: MIA = 0.553 significa que el atacante tiene un éxito ligeramente superior al 50% aleatorio, lo que indica un riesgo de privacidad bajo/moderado.

🎯

Objetivo: Buscar valores lo más cercanos a 0.5. Valores > 0.6 indican que el conjunto sintético no protege adecuadamente la privacidad.

📝 Resumen Rápido para Selección

🏆
Para seleccionar el mejor conjunto:
  • Priorizar TabDSFidelity más alto
  • Buscar AUC-ROC y F1 altos
  • Valores de divergencia JS y KL cercanos a 0
  • P-valor de KS lo más cercano a 1.0 posible (>0.05)
  • Correlación > 0.9
⚖️
Balance entre calidad y tiempo:
  • Un TabDSFidelity > 8.0 indica excelente calidad
  • Tiempos de generación < 200s son aceptables
  • La Correlación > 0.95 asegura buena preservación de relaciones
🔒
Para garantizar la privacidad:
  • MIA lo más cercano a 0.5 (ideal)
  • Copias exactas = 0 (ideal) o lo más bajo posible
  • Distancia promedio > 0.02 para buena separación
  • Evaluar balance entre calidad (TabDSFidelity) y privacidad (MIA)

📥 Descargar conjuntos y código Python

Formatos incluidos: CSV.

📚 Cómo citar este conjunto

Díaz Bastida, M., Pérez Vázquez, R. A., & Bello Pérez, R. (2026). High-Fidelity Synthetic Dataset for Multicentric Mortality Prediction (Version 1). figshare. https://doi.org/10.6084/m9.figshare.32931113.v1