1. Instrucciones

Este documento contiene las instrucciones y enunciados asociados a la Prueba Especial Programada 2 (PEP2) del curso de Estadística Computacional modalidad diurna. Con respecto a ello:

  • La prueba tiene un total de 60 puntos, lo que sumado al puntaje base permitirá calcular directamente su nota final sumando un máximo de 70 puntos.
  • Se dispone de todo el bloque de clases para realizar la evaluación. Esta deberá ser desarrollada en R/RStudio.
  • Las respuestas escritas empleando RMarkdown deberán ser cargadas en Moodle en la sección habilitada para este fin.
  • La prueba está diseñada para ser trabajada en parejas. Solo uno(a) de los(as) integrantes debe subir la evaluación en Moodle, indicando claramente los nombres de ambos(as) participantes.
  • Puede usar apuntes y material disponible en Moodle como apoyo.
  • Cualquier sospecha de falta ética será castigada directamente con nota 1.0 en la evaluación. Uso de ChatGPT o equivalente implica nota 1.0.

2. Preguntas

A ustedes se les ha pedido estudiar el conjunto de datos asociado al diagnóstico de enfermedad arterial coronaria (Detrano et al. 1989) (disponible en UCI Machine Learning Repository), en particular el asociado a la base de datos de Cleveland (processed.cleveland.data). Para esto deberá realizar las siguientes actividades, contextualizando todas sus respuestas con relación al problema:

Pregunta 1

Enunciado

Caracterización del conjunto de datos (15 puntos). Realice una descripción detallada del conjunto de datos, explicando el significado de cada variable. Asegúrese de incluir una discusión sobre el tipo de variable (numérica, categórica) y cualquier valor faltante o inusual que deba tenerse en cuenta durante el análisis. Se espera una caracterización completa y precisa, que incluya una tabla resumen con las estadísticas descriptivas de las variables numéricas y una breve explicación de su relevancia en el contexto del diagnóstico de enfermedades cardíacas. Asegúrese de incluir gráficos.

Respuesta

El conjunto de datos a trabajar durante la evaluación posee las siguientes variables:

Tabla 1. Descripción general de variables
Nombre_de_variable Tipo_de_dato Descripción
age Numérico, discreto Edad de pacientes en años
sex Categórico Sexo (1: hombre, 0: mujer)
cp Categórico Tipo de dolor de pecho (1: angina típica, 2: angina atípica, 3: dolor no anginoso, 4: asintomático)
trestbps Numérico, discreto Presión arterial en reposo medida al ingresar al hospital (mm Hg)
chol Numérico, discreto Nivel de colesterol sérico (mg/dl)
fbs Categórico Nivel de azúcar en sangre en ayunas > 120 mg/dl (1: verdadero, 0: falso)
restecg Categórico Resultados del electrocardiograma en reposo (0: normal, 1: anomalía ST-T, 2: hipertrofia ventricular izquierda)
thalach Numérico, discreto Frecuencia cardíaca máxima alcanzada
exang Categórico Angina inducida por ejercicio (1: sí, 0: no)
oldpeak Numérico, discreto Depresión del segmento ST inducida por ejercicio respecto al reposo
slope Categórico Pendiente del segmento ST (0: descendente, 1: plano, 2: ascendente)
ca Numérico, discreto Número de vasos principales coloreados por fluoroscopia (0-3)
thal Categórico Tipo de talasemia (3: normal, 6: defecto fijo, 7: defecto reversible)
num Categórico Presencia de enfermedad cardíaca (0: no, 1 a 4 presencia de enfermedad) - Variable dependiente

La documentación asociada al conjunto de datos indica que la variable objetivo (dependiente) es “num”, por lo que se puede caracterizar cada una del resto de las varibles independientes con base a esta.

1.1. Variable age

La variable “age” describe la edad de los pacientes en años, con un rango de 29 a 77 años y un promedio de 54.44 ± 9.04 años. La distribución de esta variable con respecto a la variable dependiente “num” se presenta a continuación:

1.2. Variable sex

La variable “sex” corresponde al sexo biológico de los(as) pacientes, distribuyéndose en 97 mujeres (0) y 206 hombres (1). La distribución de esta variable en relación con la variable dependiente “num” se presenta a continuación:

1.3. Variable cp

La variable “cp”, asociada al tipo de dolor de pecho, se distribuye de la siguiente manera: 23 casos de angina típica (1), 50 casos de angina atípica (2), 86 casos de dolor no anginoso (3) y 144 casos asintomáticos (4). La distribución de esta variable en relación con la variable dependiente “num” se detalla a continuación:

1.4. Variable trestbps

Esta variable describe la presión arterial en reposo de los(as) pacientes medida al ingresar al hospital. Su rango va desde 94 a 200 mmHg y un promedio de 131.69 ± 17.6 mmHg. La distribución de esta variable con respecto a la variable dependiente “num” se presenta a continuación:

1.5. Variable chol

Esta variable describe el nivel de colesterol sérico en mg/dl de los(as) pacientes medido al ingresar al hospital. Su rango va desde 126 a 564 mg/dl y un promedio de 246.69 ± 51.78 mg/dl. La distribución de esta variable con respecto a la variable dependiente “num” se presenta a continuación:

1.6. Variable fbs

Esta variable describe si la glucosa en ayunas es mayor a 120 mg/dl (1 = verdadero; 0 = falso). Se distribuye en 45 pacientes con glucosa en ayunas mayor a 120 mg/dl (1) y 258 pacientes con glucosa en ayunas menor o igual a 120 mg/dl (0). La distribución de esta variable con respecto a la variable dependiente “num” se presenta a continuación:

1.7. Variable restecg

La variable “restecg” describe los resultados del electrocardiograma en reposo, con las siguientes categorías: 151 casos con un electrocardiograma normal (0), 4 casos con una anomalía de la onda ST-T (1), y 148 casos con hipertrofia ventricular izquierda probable o definitiva (2). La distribución de esta variable con respecto a la variable dependiente “num” se presenta a continuación:

1.8. Variable thalach

La variable “thalach” describe la frecuencia cardíaca máxima alcanzada durante el ejercicio, medida en latidos por minuto (bpm). Su rango va desde 71 a 202 bpm, con un promedio de 149.61 ± 22.88 bpm. La distribución de esta variable con respecto a la variable dependiente “num” se presenta a continuación:

1.9. Variable exang

La variable “exang” indica si el paciente experimentó angina inducida por el ejercicio (1 = Sí, 0 = No). Se distribuye en 99 pacientes que experimentaron angina inducida por el ejercicio (1) y 204 pacientes que no la experimentaron (0). La distribución de esta variable con respecto a la variable dependiente “num” se presenta a continuación:

1.10. Variable oldpeak

La variable “oldpeak” representa la depresión del segmento ST inducida por el ejercicio en relación con el reposo, medida en milímetros. Su rango va desde 0 a 6.2 mm, con un promedio de 1.04 ± 1.16 mm. La distribución de esta variable con respecto a la variable dependiente “num” se presenta a continuación:

1.11. Variable slope

La variable “slope” describe la pendiente del segmento ST en el electrocardiograma durante el ejercicio, con las siguientes categorías: 142 casos con pendiente ascendente (1), 140 casos con pendiente plana (2), y 21 casos con pendiente descendente (3). La distribución de esta variable con respecto a la variable dependiente “num” se presenta a continuación:

1.12. Variable ca

La variable “ca” representa el número de vasos principales (de 0 a 3) coloreados por fluoroscopia. Su rango va desde 0 a 3, con un promedio de 0.67 ± 0.93. Este conjunto presenta 4 casos faltantes de valores, los que fueron reemplazados por el valor promedio de estos datos. La distribución de esta variable con respecto a la variable dependiente “num” se presenta a continuación:

1.13. Variable thal

La variable “thal” describe el tipo de talasemia con las siguientes categorías: 168 casos con talasemia normal (3), 18 casos con defecto fijo (6), y 117 casos con defecto reversible (7). En este caso, existen dos datos “NA”, que fueron reemplazador por la mediana de los datos. La distribución de esta variable con respecto a la variable dependiente “num” se presenta a continuación:

1.14. Variable num (Target)

La variable num indica la presencia y severidad de la enfermedad cardíaca, categorizada de la siguiente manera: 164 casos sin enfermedad cardíaca (0) y 139 casos con enfermedad cardíaca (1 a 4, con severidad creciente). Después de reemplazar los valores NA con la moda, la distribución de esta variable es la siguiente:

Pregunta 2

Enunciado

Análisis de relación entre variables (20 puntos). Investigue si existe una relación significativa entre la edad de los(as) pacientes y las siguientes variables: presión arterial en reposo, colesterol sérico, frecuencia cardíaca máxima alcanzada, y diagnóstico de enfermedad cardíaca. Construya modelos de regresión lineal y realice una interpretación de los resultados.

Respuesta

Para investigar la relación entre la edad de los pacientes y las variables presión arterial en reposo, colesterol sérico, frecuencia cardíaca máxima alcanzada y diagnóstico de enfermedad cardíaca, se propone el siguiente análisis:

2.1 Análisis de correlación. Primero, se calculará la matriz de correlación entre la variable “edad” y las variables numéricas seleccionadas (presión arterial en reposo, colesterol sérico, frecuencia cardíaca máxima alcanzada) utilizando el coeficiente de correlación de Pearson. Esto permitirá evaluar la “fuerza” y la dirección de la relación lineal entre estas variables.

Los resultados muestran que no existe una fuerte tendencia entre las variables independientes y la variable “edad” (dependiente), ya que todos los coeficientes de correlación son menores en valor absoluto a |0.5|. Esto indica que las relaciones lineales entre la edad y las variables estudiadas son débiles.

2.2 Modelos de regresión lineal simple. A continuación, se construirá un modelo de regresión lineal para cada variable independiente (presión arterial en reposo, colesterol sérico, frecuencia cardíaca máxima alcanzada) en función de la edad. Es necesario señalar que la variable “diagnóstico de enfermedad cardíaca” es categórica, por lo que debiese usarse otro enfoque para tratar esta variable (spoiler, regresión logística).

  • Variable trestbps (Presión arterial en reposo) vs age (Edad en años)

El modelo de regresión asociado es el siguiente:

## 
## Call:
## lm(formula = age ~ trestbps, data = data_UCI)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -25.192  -6.192   0.540   6.284  23.540 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 35.16759    3.76973   9.329  < 2e-16 ***
## trestbps     0.14634    0.02837   5.157 4.55e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 8.678 on 301 degrees of freedom
## Multiple R-squared:  0.08119,    Adjusted R-squared:  0.07814 
## F-statistic:  26.6 on 1 and 301 DF,  p-value: 4.547e-07

El análisis de regresión lineal entre la presión arterial en reposo (trestbps) y la edad muestra una relación positiva significativa (coeficiente = 0.146, p < 0.001). Sin embargo, la relación es débil, ya que el R-cuadrado ajustado es bajo (0.078), indicando que solo una pequeña proporción de la variabilidad en la edad es explicada por trestbps, por lo que no explica la edad.

  • Variable chol (colesterol sérico) vs age (Edad en años)

El modelo de regresión asociado es el siguiente:

## 
## Call:
## lm(formula = age ~ chol, data = data_UCI)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -23.8817  -6.4804   0.4404   6.3248  23.3737 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 45.44049    2.48015  18.322  < 2e-16 ***
## chol         0.03648    0.00984   3.707  0.00025 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 8.854 on 301 degrees of freedom
## Multiple R-squared:  0.04366,    Adjusted R-squared:  0.04048 
## F-statistic: 13.74 on 1 and 301 DF,  p-value: 0.0002496

El análisis de regresión lineal entre el colesterol sérico (chol) y la edad muestra una relación positiva significativa (coeficiente = 0.036, p < 0.001). Sin embargo, esta relación es débil, ya que el R-cuadrado ajustado es bajo (0.040), indicando que solo alrededor del 4% de la variabilidad en la edad es explicada por el colesterol. El modelo sugiere que, en promedio, la edad aumenta ligeramente con el aumento del colesterol, pero la variabilidad no explicada es considerable.

  • Variable thalach (frecuencia cardíaca máxima alcanzada) vs age (Edad en años)

El modelo de regresión asociado es el siguiente:

## 
## Call:
## lm(formula = age ~ thalach, data = data_UCI)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -22.4899  -6.6559   0.5558   6.3567  24.4894 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 77.71867    3.16826  24.530  < 2e-16 ***
## thalach     -0.15561    0.02093  -7.433 1.11e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 8.322 on 301 degrees of freedom
## Multiple R-squared:  0.1551, Adjusted R-squared:  0.1523 
## F-statistic: 55.25 on 1 and 301 DF,  p-value: 1.109e-12

El análisis de regresión lineal entre la frecuencia cardíaca máxima alcanzada (thalach) y la edad muestra una relación negativa significativa (coeficiente = -0.156, p < 0.001). Esto sugiere que a medida que la edad aumenta, la frecuencia cardíaca máxima disminuye. Aunque la relación es más fuerte que en análisis previos, sigue siendo moderada, con un R-cuadrado ajustado de 0.1523, lo que indica que aproximadamente el 15% de la variabilidad en la edad puede ser explicada por la frecuencia cardíaca máxima alcanzada. La disminución de la frecuencia cardíaca con la edad es consistente con el envejecimiento fisiológico.

  • Variable num (target, diagnóstico de enfermedad cardíaca) vs age (Edad en años)

Si bien, la variable target “num” es categórica, de todas maneras construiremos una aproximación lineal. Esta es la siguiente:

## 
## Call:
## lm(formula = num ~ age, data = data_UCI)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.5904 -0.8937 -0.5302  0.8034  3.5606 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.711676   0.421439  -1.689   0.0923 .  
## age          0.030290   0.007637   3.966 9.14e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.2 on 301 degrees of freedom
## Multiple R-squared:  0.04966,    Adjusted R-squared:  0.04651 
## F-statistic: 15.73 on 1 and 301 DF,  p-value: 9.136e-05

El análisis de regresión lineal simple entre la edad (age) y la variable num (diagnóstico de enfermedad cardíaca) muestra una relación positiva y significativa (coeficiente = 0.030, p < 0.001). Esto indica que, en promedio, a medida que la edad aumenta, el valor de num (que indica la presencia y severidad de la enfermedad cardíaca) también tiende a aumentar. Sin embargo, el coeficiente de determinación ajustado (R-cuadrado ajustado) es bajo (0.0465), lo que sugiere que solo alrededor del 4.65% de la variabilidad en num es explicada por la edad. Esto implica que, aunque la edad tiene un efecto significativo, existen otros factores importantes que afectan el diagnóstico de enfermedad cardíaca y no están capturados por este modelo.

2.3 Análisis de regresión lineal múltiple. Por último, se construirá un modelo de regresión lineal múltiple para evaluar cómo las variables edad, presión arterial en reposo, colesterol sérico y frecuencia cardíaca máxima alcanzada, en conjunto, afectan la variable de diagnóstico de enfermedad cardíaca. Este análisis permitirá determinar la contribución individual de cada variable al modelo y cómo influyen colectivamente en la variable dependiente.

## 
## Call:
## lm(formula = num ~ age + trestbps + chol + thalach, data = data_UCI)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.9237 -0.7617 -0.2875  0.5845  3.9247 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.571582   0.820450   3.134  0.00189 ** 
## age          0.002413   0.008198   0.294  0.76871    
## trestbps     0.008939   0.003806   2.349  0.01949 *  
## chol         0.001166   0.001269   0.919  0.35892    
## thalach     -0.021594   0.003057  -7.064 1.15e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.11 on 298 degrees of freedom
## Multiple R-squared:  0.1945, Adjusted R-squared:  0.1837 
## F-statistic: 17.99 on 4 and 298 DF,  p-value: 3.013e-13

El modelo de regresión lineal múltiple muestra que la frecuencia cardíaca máxima alcanzada (thalach) tiene un impacto significativo y negativo en el diagnóstico de enfermedad cardíaca (num) (coeficiente = -0.022, p < 0.001), mientras que la presión arterial en reposo (trestbps) también tiene un efecto positivo y significativo (coeficiente = 0.009, p = 0.019). Sin embargo, la edad (age) y el colesterol sérico (chol) no son predictores significativos. El R-cuadrado ajustado de 0.184 indica que aproximadamente el 18.4% de la variabilidad en num es explicada por este modelo. Esto sugiere que, aunque el modelo captura parte de la variabilidad, otros factores no incluidos podrían ser importantes.

Pregunta 3

Enunciado

Análisis de diferencias significativas (25 puntos). Determine si existe una diferencia significativa entre alguna variable y el diagnóstico de enfermedad cardíaca. Considere 0 para las personas que no tienen problemas y 1 o más como que presentan alguna condición. Seleccione al menos 5 variables para este análisis y justifique el criterio de selección.

Respuesta

Para realizar este análisis, utilizaremos las cuatro variables estudiadas en la pregunta anterior. Primero, es necesario binarizar la variable dependiente “Diagnóstico de enfermedad cardíaca (num)”, de manera que 0 indique la ausencia de problemas cardíacos y 1 indique la presencia de alguna condición. Esto se puede lograr con el siguiente código:

# Convertir la variable num a binaria
data_UCI$num_binary = ifelse(data_UCI$num >= 1, 1, 0)

Posteriormente es necesario evaluar el cumplimiento de las condiciones paramétricas, normalidad y homocedasticidad, esto puede ser realizado como:

# Evaluación de normalidad por clase
shapiro_age_0 = shapiro.test(data_UCI$age[data_UCI$num_binary == 0])
shapiro_age_1 = shapiro.test(data_UCI$age[data_UCI$num_binary == 1])

shapiro_trestbps_0 = shapiro.test(data_UCI$trestbps[data_UCI$num_binary == 0])
shapiro_trestbps_1 = shapiro.test(data_UCI$trestbps[data_UCI$num_binary == 1])

shapiro_chol_0 = shapiro.test(data_UCI$chol[data_UCI$num_binary == 0])
shapiro_chol_1 = shapiro.test(data_UCI$chol[data_UCI$num_binary == 1])

shapiro_thalach_0 = shapiro.test(data_UCI$thalach[data_UCI$num_binary == 0])
shapiro_thalach_1 = shapiro.test(data_UCI$thalach[data_UCI$num_binary == 1])

# Evaluación de homocedasticidad
library("car")
levene_age = leveneTest(age ~ as.factor(num_binary), data = data_UCI)
levene_trestbps = leveneTest(trestbps ~ as.factor(num_binary), data = data_UCI)
levene_chol = leveneTest(chol ~ as.factor(num_binary), data = data_UCI)
levene_thalach = leveneTest(thalach ~ as.factor(num_binary), data = data_UCI)

# Crear la tabla con los p-valores
p_values = data.frame(
  Variable = rep(c("age", "trestbps", "chol", "thalach"), each = 2),
  Clase = rep(c("Sin enfermedad", "Con enfermedad"), times = 4),
  `Shapiro-Wilk p-value (Normalidad)` = c(shapiro_age_0$p.value, shapiro_age_1$p.value,
                                           shapiro_trestbps_0$p.value, shapiro_trestbps_1$p.value,
                                           shapiro_chol_0$p.value, shapiro_chol_1$p.value,
                                           shapiro_thalach_0$p.value, shapiro_thalach_1$p.value),
  `Levene p-value (Homocedasticidad)` = rep(c(levene_age$`Pr(>F)`[1], 
                                               levene_trestbps$`Pr(>F)`[1], 
                                               levene_chol$`Pr(>F)`[1], 
                                               levene_thalach$`Pr(>F)`[1]), each = 2)
)

names(p_values) = c("Variable","Clase", "Normalidad (SW)","LeveneTest (Homocedasticidad)")

# Mostrar la tabla
p_values %>%
  kbl(caption = "Tabla 2. P-valores para Normalidad por Clase y Homocedasticidad") %>%
  kable_classic_2(full_width = T, html_font = "Cambria", bootstrap_options = "striped")
Tabla 2. P-valores para Normalidad por Clase y Homocedasticidad
Variable Clase Normalidad (SW) LeveneTest (Homocedasticidad)
age Sin enfermedad 0.1320410 0.0051667
age Con enfermedad 0.0022558 0.0051667
trestbps Sin enfermedad 0.0115609 0.1583120
trestbps Con enfermedad 0.0001173 0.1583120
chol Sin enfermedad 0.0000000 0.7032232
chol Con enfermedad 0.4025547 0.7032232
thalach Sin enfermedad 0.0005433 0.0229960
thalach Con enfermedad 0.3523170 0.0229960

Al evaluar los p-valores, ninguna de las variables cumple con las condiciones de normalidad. Por lo tanto, es necesario aplicar la prueba de Mann-Whitney U, que es una prueba no paramétrica adecuada para comparar dos muestras independientes.

library("tidyr")
library("dplyr")

# Calcular estadísticos por clase
stats_summary = data_UCI %>%
  group_by(num_binary) %>%
  summarise(
    age_mean = mean(age, na.rm = TRUE),
    age_sd = sd(age, na.rm = TRUE),
    age_median = median(age, na.rm = TRUE),
    trestbps_mean = mean(trestbps, na.rm = TRUE),
    trestbps_sd = sd(trestbps, na.rm = TRUE),
    trestbps_median = median(trestbps, na.rm = TRUE),
    chol_mean = mean(chol, na.rm = TRUE),
    chol_sd = sd(chol, na.rm = TRUE),
    chol_median = median(chol, na.rm = TRUE),
    thalach_mean = mean(thalach, na.rm = TRUE),
    thalach_sd = sd(thalach, na.rm = TRUE),
    thalach_median = median(thalach, na.rm = TRUE)
  ) %>%
  pivot_longer(cols = -num_binary, names_to = c("Variable", ".value"), names_sep = "_") %>%
  pivot_wider(names_from = num_binary, values_from = c(mean, sd, median))

# Prueba de Mann-Whitney U para cada variable
mann_whitney_age = wilcox.test(age ~ num_binary, data = data_UCI)
mann_whitney_trestbps = wilcox.test(trestbps ~ num_binary, data = data_UCI)
mann_whitney_chol = wilcox.test(chol ~ num_binary, data = data_UCI)
mann_whitney_thalach = wilcox.test(thalach ~ num_binary, data = data_UCI)

# Crear la tabla con los p-valores de Mann-Whitney U
p_values_mann_whitney = data.frame(
  Variable = c("age", "trestbps", "chol", "thalach"),
  `Mann Whitney U Test (p.value)` = c(mann_whitney_age$p.value, 
                                      mann_whitney_trestbps$p.value, 
                                      mann_whitney_chol$p.value, 
                                      mann_whitney_thalach$p.value)
)

# Combinar estadísticos con los p-valores
final_table = left_join(stats_summary, p_values_mann_whitney, by = "Variable")

# Redondear los valores a 3 decimales
final_table = final_table %>%
  mutate(across(where(is.numeric), round, 3))

names(final_table) = c("Variable","Promedio C0","Promedio C1","Desv. Estándar C0","Desv. Estándar C1","Mediana C0","Mediana C1","Mann Whitney UTest (p.value)")
# Mostrar la tabla
final_table %>%
  kbl(caption = "Tabla 3. Estadísticos Descriptivos y P-valores de la Prueba de Mann-Whitney U para Comparación de Grupos 
      (0 = Sin enfermedad, 1 = Con enfermedad)") %>%
  kable_classic_2(full_width = T, html_font = "Cambria", bootstrap_options = "striped")
Tabla 3. Estadísticos Descriptivos y P-valores de la Prueba de Mann-Whitney U para Comparación de Grupos (0 = Sin enfermedad, 1 = Con enfermedad)
Variable Promedio C0 Promedio C1 Desv. Estándar C0 Desv. Estándar C1 Mediana C0 Mediana C1 Mann Whitney UTest (p.value)
age 52.585 56.626 9.512 7.938 52.0 58 0.000
trestbps 129.250 134.568 16.205 18.769 130.0 130 0.026
chol 242.640 251.475 53.457 49.487 234.5 249 0.035
thalach 158.378 139.259 19.199 22.593 161.0 142 0.000

Según los resultados, la edad, la presión arterial en reposo y el colesterol sérico tienden a ser significativamente mayores (con un nivel de confianza del 95%) en los pacientes con enfermedad cardíaca, mientras que la frecuencia cardíaca máxima tiende a ser significativamente menor en este grupo.

Por último, estudiaremos la variable exang, que indica la presencia de angina inducida por el ejercicio. Esta variable posee valores binarios (0: sin angina, 1: con angina). Dado que es una variable categórica, evaluaremos las proporciones en los diferentes grupos utilizando la prueba de Chi-cuadrado. El código para realizar este análisis es el siguiente:

Tabla 4. Tabla de Contingencia de exang y Diagnóstico de Enfermedad Cardíaca
Angina Inducida (exang) Sin Enfermedad Con Enfermedad
Sin angina 0 141 63
Con angina 1 23 76

Según los datos y el valor p obtenido en la prueba de chi-cuadrado, existe una asociación estadísticamente significativa entre la presencia de enfermedad cardíaca y la angina inducida por ejercicio. Esto indica que los pacientes con enfermedad cardíaca tienen una mayor probabilidad de experimentar angina durante el ejercicio en comparación con aquellos sin la enfermedad. Este hallazgo sugiere que la angina inducida por ejercicio puede ser un indicador clínico relevante en el diagnóstico y manejo de enfermedades cardíacas.

3. Nota

La redacción de este documento fue revisado usando ChatGPT, lo mismo que los comentarios de cada código. Por otro lado, todos los códigos están detallados en este enlace.

4. Referencias

Detrano, Robert, Andras Janosi, Walter Steinbrunn, Matthias Pfisterer, Johann-Jakob Schmid, Sarbjit Sandhu, Kern H. Guppy, Stella Lee, and Victor Froelicher. 1989. “International Application of a New Probability Algorithm for the Diagnosis of Coronary Artery Disease.” The American Journal of Cardiology 64 (5): 304–10. https://doi.org/10.1016/0002-9149(89)90524-9.