Warning: package 'readxl' was built under R version 4.2.3
library(dplyr)
Warning: package 'dplyr' was built under R version 4.2.3
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
library(ggplot2)
Warning: package 'ggplot2' was built under R version 4.2.3
library(FactoClass)
Warning: package 'FactoClass' was built under R version 4.2.3
Loading required package: ade4
Warning: package 'ade4' was built under R version 4.2.3
Loading required package: ggrepel
Warning: package 'ggrepel' was built under R version 4.2.3
Loading required package: xtable
Warning: package 'xtable' was built under R version 4.2.3
Loading required package: scatterplot3d
Warning: package 'scatterplot3d' was built under R version 4.2.3
library(plotly)
Warning: package 'plotly' was built under R version 4.2.3
Attaching package: 'plotly'
The following object is masked from 'package:ggplot2':
last_plot
The following object is masked from 'package:stats':
filter
The following object is masked from 'package:graphics':
layout
library(knitr)
Warning: package 'knitr' was built under R version 4.2.3
library(htmlwidgets)
Warning: package 'htmlwidgets' was built under R version 4.2.3
Introducción
La atención a pacientes en estado crítico representa uno de los mayores desafíos en la medicina, especialmente cuando se trata de enfermedades que potencialmente son mortales. Comprender las tasas de supervivencia a corto y mediano plazo en pacientes hospitalizados en unidades de cuidados intensivos (UCI), y las características socio demográficas y fisiológicas que pueden apaciguar/atenuar el avance de estas ensfermedades, permite plantear estrategias que busquen disminuir las tasas de mortalidad en este tipo de pacientes.
Descripción de datos
El estudio cuenta con 9105 individuos ingresados a hospitales de 5 centros médicos de Estados Unidos entre 1989 y 1994, a los cuales les fueron medidas 45 variables socio-demográficas, fisiológicas y relacionadas a su estancia en el hospital.
Los individuos de estudio corresponden a personas con al menos una de 9 enfermedades graves o potencialmente mortales, véase insuficiencia respiratoria aguda, enfermedad pulmonar obstructiva crónica, insuficiencia cardíaca congestiva, enfermedad hepática, coma, cáncer de colon, cáncer de pulmón, insuficiencia multiorgánica con malignidad e insuficiencia multiorgánica con sepsis, y a los que les fue estimado un índice de supervivencia una vez pasados 2 y 6 meses fuera del hospital.
El conjunto de datos proviene del experimento SUPPORT, donde se evaluaba el efecto de la toma de decisiones y pronósticos para personas con enfermedades graves buscando evitar el sufrimiento al final de la vida.
Población de estudio
La población objetivo del estudio corresponde a los pacientes graves de alguna de las 9 enfermedades estudiadas dentro de los cinco centros médicos en cuestión, ingresados entre 1989 y 1994.
datos <-read_excel("SUPPPORT2.xlsx")head(datos)
# A tibble: 6 × 45
age sex dzgroup dzclass num.co edu income scoma charges totcst totmcst
<dbl> <chr> <chr> <chr> <dbl> <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 62.8 male Lung Ca… Cancer 0 11 $11-$… 0 9715 NA NA
2 60.3 female Cirrhos… COPD/C… 2 12 $11-$… 44 34496 NA NA
3 52.7 female Cirrhos… COPD/C… 2 12 under… 0 41094 NA NA
4 42.4 female Lung Ca… Cancer 2 11 under… 0 3075 NA NA
5 79.9 female ARF/MOS… ARF/MO… 1 NA <NA> 26 50127 NA NA
6 93.0 male Coma Coma 1 14 <NA> 55 6884 NA NA
# ℹ 34 more variables: avtisst <dbl>, race <chr>, sps <dbl>, aps <dbl>,
# surv2m <dbl>, surv6m <dbl>, hday <dbl>, diabetes <dbl>, dementia <dbl>,
# ca <chr>, prg2m <dbl>, prg6m <dbl>, dnr <chr>, dnrday <dbl>, meanbp <dbl>,
# wblc <dbl>, hrt <dbl>, resp <dbl>, temp <dbl>, pafi <dbl>, alb <dbl>,
# bili <dbl>, crea <dbl>, sod <dbl>, ph <dbl>, glucose <dbl>, bun <dbl>,
# urine <dbl>, adlp <dbl>, adls <dbl>, adlsc <dbl>, death <dbl>,
# hospdead <dbl>, sfdm2 <chr>
Diccionario de datos
Age: Edad
Death: Momento de la muerte
Sex: Sexo
hospdead: Si muere en el hospital.
Slos: Días desde ingreso hasta alta.
d.time: Días de seguimiento.
dzgroup: Subcategoría enfermedad del paciente.
dzclass: Categoría enfermedad del paciante.
num.co: Número de enfermedades o comorbilidades simultáneas.
edu: Años de educación.
income: Ingreso del paciente.
scoma: score de soporte de coma.
charges: Cargos de hospital.
totcst: Costo total.
totmcst: Micro costo total.
avtisst: Puntuación promedio de TISS.
race: Raza del paciente.
sps: Score de soporte psicológico.
aps: Puntuación de fisiología.
surv2m: Estimación de supervivencia a los 2 meses.
surv6m: Estimación de supervivencia a los 6 meses.
hday: Día en que entra al hospital.
diabetes: Si el paciente tiene diabetes.
dementia: Si el paciente tiene demencia.
ca: Si el paciente tiene cáncer.
prg2m: Estimación del médico para supervivencia a 2 meses.
prg6m: Estimación del médico para supervivencia a 6 meses.
dnr: Si el paciente ha tenido orden de resucitación.
dnrday: Día de la orden de resucitación.
meanbp: Presión arterial.
wblc: Conteo de glóbulos blancos.
hrt: Frecuencia cardiaca.
resp: Frecuencia respiratoria.
temp: Temperatura del paciente.
pafi: Relación de presión de oxígeno arterial y fracción de oxigeno inspirado.
alb: Nivel de albumina sérica.
bili: Niveles de bilirrubina.
crea: Niveles de creatinina.
sod: COncentración de sodio.
ph: pH de la presión arterial.
glucosa: Nivel de glucosa.
bun: Niveles de nitrógeno uréico.
urine: Producción de orina.
adlp: Índice de actividad diaria.
adls: Índice de actividad diaria hecha por un sustituto.
Se cuenta con 15 variables categóricas y 30 variables numéricas, aunque algunas variables como edad, que en el conjunto de datos se encuentra medida en escala continua se podría categorizar. Mismo caso para variables como años de educación.
Análisis variables categóricas
for (i in categoricas1) { col_data <-as.factor(datos[[i]]) # Asegurarse de que sea un factor freqs <-table(col_data) percs <-round(prop.table(freqs) *100, 1)# Crear gráfico de barrasbarplot( freqs,horiz =TRUE,col =rainbow(length(freqs)),main =colnames(datos)[i], # Usa el nombre directamentexlab ="Frecuencia",cex.main =1, # Reducir el tamaño del títulocex.lab =1, # Reducir el tamaño de etiquetascex.axis =1,las =1# Rotar las etiquetas del eje vertical )# Agregar porcentajes como etiquetastext(freqs, seq_along(freqs), labels =paste0(percs, "%"), pos =4, cex =0.7, col ="black")}
par(mfrow =c(3, 2), mai =c(0.6, 1, 0.4, 0.1)) # Márgenes más amplios a la izquierdafor (i in categoricas2) { col_data <-as.factor(datos[[i]]) # Asegurarse de que sea un factor freqs <-table(col_data) percs <-round(prop.table(freqs) *100, 1)# Crear gráfico de barrasbarplot( freqs,horiz =TRUE,col =rainbow(length(freqs)),main =colnames(datos)[i], # Usa el nombre directamentexlab ="Frecuencia",cex.main =1, # Reducir el tamaño del títulocex.lab =1, # Reducir el tamaño de etiquetascex.axis =0.8,las =1# Rotar las etiquetas del eje vertical )# Agregar porcentajes como etiquetastext(freqs, seq_along(freqs), labels =paste0(percs, "%"), pos =4, cex =0.7, col ="black")}
Se puede observar que la categoría y subcategoría de enfermedad que más se repite es falla renal aguda y falla multiorgánica. Además, la mayoría de los pacientes del estudio fallecieron, pero un mayor número fuera del hospital.
Adicionalmente, la mayoría de los pacientes no presentaban enfermedades como diabetes, demencia o cáncer.
par(mfrow=c(2,3), mai=c(0.3,0.4,0.3,0.1), las=1, bty="n")for(i in numericas1) hist(numericas[,i], main=names(numericas)[i], col=colores[i])
par(mfrow=c(2,3), mai=c(0.3,0.4,0.3,0.1), las=1, bty="n")for(i in numericas2) hist(numericas[,i], main=names(numericas)[i], col=colores[i])
par(mfrow=c(2,3), mai=c(0.3,0.4,0.3,0.1), las=1, bty="n")for(i in numericas3) hist(numericas[,i], main=names(numericas)[i], col=colores[i])
par(mfrow=c(2,3), mai=c(0.3,0.4,0.3,0.1), las=1, bty="n")for(i in numericas4) hist(numericas[,i], main=names(numericas)[i], col=colores[i])
par(mfrow=c(2,3), mai=c(0.3,0.4,0.3,0.1), las=1, bty="n")for(i in numericas5) hist(numericas[,i], main=names(numericas)[i], col=colores[i])
Se observa que la edad de los pacientes de estudio se sitúa en promedio alrededor de 60 años. Además, la mayoría de distribuciones se concentran hacia la izquierda, lo que en la mayoría de casos se interpreta como condiciones “anormales” o graves de salud.
par(mfrow=c(2,3), mai=c(0.3,0.4,0.3,0.1), las=1, bty="n")for(i in numericas1) boxplot(numericas[,i], main=names(numericas)[i], col= colores[i])
par(mfrow=c(2,3), mai=c(0.3,0.4,0.3,0.1), las=1, bty="n")for(i in numericas2) boxplot(numericas[,i], main=names(numericas)[i], col=colores[i])
par(mfrow=c(2,3), mai=c(0.3,0.4,0.3,0.1), las=1, bty="n")for(i in numericas3) boxplot(numericas[,i], main=names(numericas)[i], col=colores[i])
par(mfrow=c(2,3), mai=c(0.3,0.4,0.3,0.1), las=1, bty="n")for(i in numericas4) boxplot(numericas[,i], main=names(numericas)[i], col=colores[i])
par(mfrow=c(2,3), mai=c(0.3,0.4,0.3,0.1), las=1, bty="n")for(i in numericas5) boxplot(numericas[,i], main=names(numericas)[i], col=colores[i])
Para la mayoría de variables numéricas se presenta una gran cantidad de datos atípicos, lo que se traduce como una gran cantidad de pacientes que ingresan en condiciones muy graves, y costos hospitalarios muy elevados en algunos casos, probablemente por parte de los mismos pacientes.
datos_faltantes <-function(x){ r <-sum(is.na(x))return(r)}table(apply(datos,2,datos_faltantes))
Algunas variables cuentan con muchos datos faltantes, en especial las relacionadas con mediciones de componentes en la sangre, o variables relacionadas con actividades luego de la salida del hospital (probablemente por parte de los pacientes que fallecieron allí).
Para el caso del ingreso, que también cuenta con muchos datos faltantes, se puede llegar a considerar una categorización tomando el dato faltante como una categoría, o extraer a dichos individuos del estudio.
Posibles Análisis estadísticos
Aprendizaje no supervisado:
Se plantea implementar modelos de aprendizaje no supervisado para explorar relaciones y agrupaciones de individuos y variables, como pueden ser por ejemplo que las personas con mayor nivel de ingresos tiendan tener mayores gastos hospitalarios y tengan mas probabilidades de sobrevivir, o que se asocien algunas condiciones como niveles de componentes en la sangre, diabetes, glucosa y demás a ciertas enfermedades particularmente.
Aprendizaje supervisado:
Se plantea implementar modelos que permitan predecir los valores de alguna variable en base a la información disponible. El ejemplo más lógico sería tomar como variable de respuesta la muerte o supervivencia del paciente, e implementar un modelo de clasificación que permita determinar si un paciente sobrevivirá en base a características como el número de comorbilidades simultáneas que posee, niveles de componentes en sangre, costos hospitalarios, edad, etc.
También se podrían plantear modelos tomando la variable de muerte en el hospital como respuesta, para separar a los individuos que sobrevivieron dentro del hospital de los que no, y analizar a estos individuos por separado.