Introducción e Índices de Fibrosis

Este documento presenta un análisis exploratorio de datos (EDA) centrado en la relación entre el grado de fibrosis y los niveles de Fosfatasa Alcalina (FA) y Bilirrubina Total.

Indices de Fibrosis con respecto a Fosfatasa Alcalina (FA) y Bilirrubina Total

Analisis exploratorio:

Preparación y Estructura de Datos

En esta sección se cargan los datos originales y se realiza una limpieza inicial, eliminando registros incompletos para asegurar la calidad de los resultados.

Analisis General de los Datos:

datos <- read_sav("fibrosis_1.sav")

# Dimensiones del dataframe
dim(datos)
## [1] 328  21
# Estructura de las variables
str(datos)
## tibble [328 × 21] (S3: tbl_df/tbl/data.frame)
##  $ glucemia: num [1:328] 158 112 79 103 126 110 121 110 110 113 ...
##   ..- attr(*, "label")= chr "glucemia"
##   ..- attr(*, "format.spss")= chr "F8.0"
##  $ urea    : num [1:328] 26 31 28 31 26 30 22 34 33 29 ...
##   ..- attr(*, "label")= chr "urea"
##   ..- attr(*, "format.spss")= chr "F8.0"
##  $ creat   : num [1:328] 1.6 1.5 1.5 1.3 1.3 1.5 1 1.9 2 1.6 ...
##   ..- attr(*, "label")= chr "creatitina"
##   ..- attr(*, "format.spss")= chr "F8.2"
##  $ colester: num [1:328] 182 20 188 170 190 193 203 256 337 224 ...
##   ..- attr(*, "label")= chr "colesterol"
##   ..- attr(*, "format.spss")= chr "F8.2"
##  $ trgl    : num [1:328] 218 343 251 265 272 221 130 252 591 301 ...
##   ..- attr(*, "label")= chr "triglicéridos"
##   ..- attr(*, "format.spss")= chr "F8.2"
##  $ got     : num [1:328] 83 20 115 88 67 53 173 45 52 81 ...
##   ..- attr(*, "label")= chr "GOT"
##   ..- attr(*, "format.spss")= chr "F8.2"
##  $ gpt     : num [1:328] 174 36 90 185 185 135 202 64 122 112 ...
##   ..- attr(*, "label")= chr "GPT"
##   ..- attr(*, "format.spss")= chr "F8.2"
##  $ ggt     : num [1:328] 52 42 133 108 96 83 75 102 139 77 ...
##   ..- attr(*, "label")= chr "GGT"
##   ..- attr(*, "format.spss")= chr "F8.2"
##  $ fa      : num [1:328] 35 49 122 91 114 74 58 66 105 79 ...
##   ..- attr(*, "label")= chr "fosfatasa alcalina"
##   ..- attr(*, "format.spss")= chr "F8.2"
##  $ biltotal: num [1:328] 1.7 1.1 1.2 1.1 0.8 1 1.1 0.9 0.9 1.2 ...
##   ..- attr(*, "label")= chr "bilirrubina total"
##   ..- attr(*, "format.spss")= chr "F8.2"
##  $ prottot : num [1:328] 6.8 6.3 7.2 7.9 8.1 8 6.8 6.4 6.4 6.6 ...
##   ..- attr(*, "label")= chr "proteínas totales"
##   ..- attr(*, "format.spss")= chr "F8.2"
##  $ alb     : num [1:328] 4.7 4 4.9 5.3 4.8 4.6 4.2 4.5 4.1 4.7 ...
##   ..- attr(*, "label")= chr "albúmina"
##   ..- attr(*, "format.spss")= chr "F8.2"
##  $ na      : num [1:328] 143 143 141 137 141 140 141 143 145 140 ...
##   ..- attr(*, "label")= chr "sodio"
##   ..- attr(*, "format.spss")= chr "F8.2"
##  $ k       : num [1:328] 4.7 5 4.7 3.9 4.4 4.6 3.8 4.8 4.8 4.7 ...
##   ..- attr(*, "label")= chr "potasio"
##   ..- attr(*, "format.spss")= chr "F8.2"
##  $ leucos  : num [1:328] 4730 5380 3600 4460 4550 3920 5820 4150 5490 3800 ...
##   ..- attr(*, "label")= chr "leucocitos"
##   ..- attr(*, "format.spss")= chr "F8.2"
##  $ hcto    : num [1:328] 48 46 47 49 46 39.2 40 37 37.4 36 ...
##   ..- attr(*, "label")= chr "hematocrito"
##   ..- attr(*, "format.spss")= chr "F5.1"
##  $ plaq    : num [1:328] 88000 147000 99000 104000 73000 68000 156000 170000 230000 163000 ...
##   ..- attr(*, "label")= chr "plaquetas"
##   ..- attr(*, "format.spss")= chr "F8.0"
##  $ iq      : num [1:328] 100 100 100 100 100 100 100 100 100 100 ...
##   ..- attr(*, "label")= chr "índice de Quick"
##   ..- attr(*, "format.spss")= chr "F8.2"
##  $ fibrin  : num [1:328] 245 244 205 220 190 247 205 199 230 278 ...
##   ..- attr(*, "label")= chr "fibrinógeno"
##   ..- attr(*, "format.spss")= chr "F8.2"
##  $ fibrosis: dbl+lbl [1:328] 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...
##    ..@ label        : chr "fibrosis"
##    ..@ format.spss  : chr "F8.0"
##    ..@ display_width: int 12
##    ..@ labels       : Named num [1:4] 0 1 2 3
##    .. ..- attr(*, "names")= chr [1:4] "ausencia" "leve" "moderada" "importante"
##  $ sexo    : dbl+lbl [1:328] 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
##    ..@ format.spss: chr "F8.2"
##    ..@ labels     : Named num [1:2] 1 2
##    .. ..- attr(*, "names")= chr [1:2] "h" "m"
# Eliminamos valores nulos:
datos_na <- na.omit(datos)
estado <- as.factor(datos_na$fibrosis)

Se ha transformado la variable fibrosis en un factor para facilitar su análisis categórico en los niveles: Ausencia, Leve, Moderado e Importante.

Distribución de la Fosfatasa Alcalina (FA)

Utilizamos histogramas para visualizar cómo se distribuyen los valores de FA en cada grupo. Esto permite ver no solo el promedio, sino qué tan dispersos están los datos.

Analisis Fibrosis con FA:

# fa data and categorization by fibrosis:
fa0 <- subset(datos_na$fa, estado==0)
fa1 <- subset(datos_na$fa, estado==1)
fa2 <- subset(datos_na$fa, estado==2)
fa3 <- subset(datos_na$fa, estado==3)

par(mfrow=(c(2,2))) # Layout of 4 spaces.
hist(fa0, col = "lightblue", main = "Ausencia", xlab = "fa")
hist(fa1, col = "lightgreen", main = "Leve", xlab = "fa")
hist(fa2, col = "orange", main = "Moderado", xlab = "fa")
hist(fa3, col = "red", main = "Importante", xlab = "fa")

Variabilidad de la Bilirrubina Total

Para finalizar el análisis exploratorio, se utiliza un diagrama de caja (boxplot) que permite comparar la mediana y los rangos de la Bilirrubina entre grupos.

Analisis Fibrosis con Bilirrubina Total:

# biltotal data and categorization by fibrosis:
par(mfrow=(c(1,1)))
boxplot(datos_na$biltotal~estado,
        col = c("lightblue", "lightgreen", "orange", "tomato"),
        main = "Distribución de Bilirrubina Total por Estado",
        xlab = "Grado de Fibrosis",
        ylab = "Bilirrubina Total",
        xaxt = "n",
        las = 1)

Conclusión del Análisis Gráfico:

El gráfico de cajas confirma visualmente la progresión numérica de las medias. Se observa que el grupo de Importante no solo tiene una mediana más alta, sino que también presenta una mayor variabilidad en los datos comparado con el grupo de Ausencia.

Análisis de Tendencia Central (Medias)

A continuación, se calculan los promedios de los biomarcadores químicos desglosados por cada nivel de fibrosis para identificar patrones numéricos.

Tabla de Medias Resumen

# Calculamos la media de FA y Bilirrubina por cada nivel de fibrosis
media_fa <- aggregate(fa ~ fibrosis, data = datos_na, FUN = mean)
media_bil <- aggregate(biltotal ~ fibrosis, data = datos_na, FUN = mean)

# Asignacion de nombres a los niveles
niveles <- c("Ausencia", "Leve", "Moderada", "Importante")
media_fa$fibrosis <- niveles
media_bil$fibrosis <- niveles

# Mostrar los resultados
print("Medias de Fosfatasa Alcalina (FA) por Categoría:")
## [1] "Medias de Fosfatasa Alcalina (FA) por Categoría:"
print(media_fa)
##     fibrosis        fa
## 1   Ausencia  95.90071
## 2       Leve 111.43119
## 3   Moderada 111.42308
## 4 Importante 125.60000
print("Medias de Bilirrubina Total por Categoría:")
## [1] "Medias de Bilirrubina Total por Categoría:"
print(media_bil)
##     fibrosis biltotal
## 1   Ausencia 1.023404
## 2       Leve 1.232844
## 3   Moderada 1.193269
## 4 Importante 1.436500

Interpretación de los resultados:

Como se observa en las tablas anteriores, existe una tendencia ascendente en la Bilirrubina Total. El valor promedio aumenta de 1.02 (Ausencia) a 1.43 (Importante), lo que sugiere una relación directa entre el progreso de la fibrosis y el incremento de este parámetro en los datos.

Análisis de Dispersión y Frecuencia

# Conteo de pacientes por grupo
conteo_fibrosis <- table(datos_na$fibrosis)
names(conteo_fibrosis) <- niveles
print("Número de pacientes por categoría:")
## [1] "Número de pacientes por categoría:"
print(conteo_fibrosis)
##   Ausencia       Leve   Moderada Importante 
##        141        109         52         20
# Desviación estándar de Bilirrubina por grupo
sd_bil <- aggregate(biltotal ~ fibrosis, data = datos_na, FUN = sd)
sd_bil$fibrosis <- niveles
knitr::kable(sd_bil, caption = "Desviación Estándar de Bilirrubina", digits = 2)
Desviación Estándar de Bilirrubina
fibrosis biltotal
Ausencia 0.47
Leve 0.94
Moderada 1.15
Importante 1.14

Representatividad de la Muestra

Al observar el conteo de pacientes por categoría, se identifica una distribución decreciente:La mayor concentración de datos se encuentra en los estados iniciales: Ausencia (141 pacientes) y Leve (109 pacientes). Los estados avanzados cuentan con una muestra menor: Moderada (52) e Importante (20).Nota estadística: Es importante considerar que los resultados para la categoría “Importante” son más sensibles a variaciones individuales debido a que el tamaño de su muestra (\(n=20\)) es significativamente menor que el de “Ausencia” (\(n=141\)).

Variabilidad y Dispersión (Análisis de la Desviación Estándar)

La Desviación Estándar (SD) nos indica qué tan diferentes son los pacientes entre sí dentro de un mismo grupo: Consistencia en Ausencia: El grupo de “Ausencia” presenta la desviación más baja (0.47), lo que significa que los niveles de bilirrubina en pacientes sin fibrosis son muy similares y constantes. En las categorías “Moderada” (1.15) e “Importante” (1.14), la desviación estándar es más del doble que en el grupo inicial. Esto indica que, a medida que la fibrosis aumenta, los niveles de bilirrubina tienden a volverse más impredecibles y dispersos entre un paciente y otro.

Relación entre Tendencia Central y Dispersión

Comparando la Media (que vimos anteriormente) con la Desviación Estándar, se observa que en el estado “Importante” no solo el valor promedio es el más alto (1.43), sino que los datos están muy extendidos. Esto sugiere que el progreso de la fibrosis no afecta a todos los individuos por igual, generando un rango de respuesta mucho más amplio en las etapas críticas.