Para este ejercicio, se utilizaron los resultados obtenidos en la Actividad 4, que se enfocaron en obtener un análisis y visualizaciones avanzadad sobre el dataset Heart Disease UCI.
A continuación se presenta el detalle de estructura del dataframe Heart Disease UCI, para verificar la asignación correcta del tipo de dato.
str(heart)
## 'data.frame': 920 obs. of 15 variables:
## $ age : int 63 67 67 37 41 56 62 57 63 53 ...
## $ sex : chr "Male" "Male" "Male" "Male" ...
## $ dataset : chr "Cleveland" "Cleveland" "Cleveland" "Cleveland" ...
## $ cp : chr "typical angina" "asymptomatic" "asymptomatic" "non-anginal" ...
## $ trestbps: num 145 160 120 130 130 ...
## $ chol : num 233 286 229 250 204 236 268 354 254 203 ...
## $ fbs : logi TRUE FALSE FALSE FALSE FALSE FALSE ...
## $ restecg : chr "lv hypertrophy" "lv hypertrophy" "lv hypertrophy" "normal" ...
## $ thalch : num 150 108 129 187 172 178 160 163 147 155 ...
## $ exang : logi FALSE TRUE TRUE FALSE FALSE FALSE ...
## $ oldpeak : num 1.98 1.5 1.98 1.98 1.4 ...
## $ slope : chr "downsloping" "flat" "flat" "downsloping" ...
## $ ca : int 0 3 2 0 0 0 2 0 1 0 ...
## $ thal : chr "fixed defect" "normal" "reversable defect" "normal" ...
## $ num : int 0 2 1 0 0 0 3 0 2 1 ...
Se obtiene un resumen de las variables que conforman el dataframe:
| Variable | Descripcion |
|---|---|
| age | Edad del paciente en años |
| sex | Sexo del paciente (0 = mujer, 1 = hombre) |
| dataset | Fuente del registro (Cleveland, Hungary, etc.) |
| cp | Tipo de dolor torácico (0–3) |
| trestbps | Presión arterial en reposo (mm Hg) |
| chol | Colesterol sérico (mg/dl) |
| fbs | Azúcar en sangre en ayunas > 120 mg/dl (1 = sí, 0 = no) |
| restecg | Resultado del electrocardiograma en reposo (0–2) |
| thalch | Frecuencia cardíaca máxima alcanzada |
| exang | Angina inducida por ejercicio (1 = sí, 0 = no) |
| oldpeak | Depresión del segmento ST inducida por ejercicio |
| slope | Pendiente del segmento ST durante el esfuerzo (0–2) |
| ca | Número de vasos principales coloreados por fluoroscopia (0–3) |
| thal | Tipo de talasemia (3, 6, 7) |
| num | Diagnóstico de enfermedad cardíaca (0 = sano, 1–4 = enfermo) |
El presente reporte tiene como
objetivo analizar el dataset
heart, el cual contiene información
clínica de pacientes provenientes de distintos centros
médicos. Las variables incluidas abarcan aspectos como la
edad (age), el
sexo (sex), el
tipo de dolor torácico
(cp), niveles de
colesterol (chol),
presión arterial en reposo
(trestbps), frecuencia
cardíaca máxima alcanzada
(thalch), entre otras. La variable
de interés principal es num, que
indica la presencia y severidad de enfermedad cardíaca.
El análisis exploratorio de datos
(EDA) previo, permitió identificar
patrones relevantes. Por ejemplo, se observó que los
pacientes con valores distintos de
cero en num (indicativos de
enfermedad) son más frecuentes que aquellos
sin enfermedad. Asimismo, las
visualizaciones facetadas mostraron que la
prevalencia de enfermedad cardíaca tiende a
concentrarse en pacientes hombres con
dolor torácico asintomático, reforzando la
hipótesis de una alta prevalencia en
la muestra.
Este contexto motiva el planteamiento de un problema inferencial que busca validar estadísticamente lo observado en el EDA.
Durante el análisis exploratorio del dataset
heart, se identificó que existen 411
pacientes sin enfermedad cardíaca
(num = 0) frente a 509 pacientes
con algún grado de enfermedad cardíaca
(num > 0: 265 con
grado 1, 109 con grado
2, 107 con grado 3 y
28 con grado 4).
Esta diferencia sugiere que la proporción de pacientes con enfermedad cardíaca podría superar el 50%, lo que motiva el planteamiento de un problema inferencial para validar estadísticamente lo observado en el EDA.
Además, al visualizar la variable num
en relación con el tipo de dolor torácico
(cp) y el sexo
(sex), se evidenció que los casos
de enfermedad se concentran especialmente en
pacientes con dolor asintomático* y en
hombres. Dichos hallazgos fueron
reforzados mediante un gráfico de barras
facetado por sexo:
Estos resultados exploratorios conducen a la siguiente pregunta inferencial:
num > 0) en el dataset
heart supera el
50%?Este planteamiento será evaluado mediante una prueba de proporciones, contrastando la hipótesis nula de que la proporción es igual o menor al 50% contra la hipótesis alternativa de que es mayor.
Esta pregunta busca explorar cómo
una variable categórica (tipo de dolor) y una
continua (colesterol) se relacionan con el
diagnóstico final, considerando además otras
variables relevantes como el ritmo cardíaco
máximo (thalch) y el tipo
de talasemia (thal).
num > 0) es menor o
igual al 50%.num > 0) es mayor al
50%.| Indicador | Valor |
|---|---|
| Total pacientes | 920 |
| Pacientes con enfermedad | 509 |
| Proporción observada | 0.5533 |
| Hipótesis alternativa | p > 0.5 |
| Estadístico Chi² | 10.439 |
| Grados de libertad | 1 |
| Valor p | 6e-04 |
| IC 95% inferior | 0.5262 |
| IC 95% superior | 1 |
Se rechaza H₀. Hay evidencia suficiente para afirmar que la proporción de pacientes con enfermedad cardíaca supera el 50%.
Se realizó una prueba de hipótesis para evaluar si la proporción de pacientes con enfermedad supera el 50%. Los resultados indican lo siguiente:
Estos resultados sugieren que la prevalencia de la enfermedad en la muestra es significativamente superior al 50%, con evidencia estadística robusta.
¿Qué pasó en el primer
análisis?:
En el primer análisis se evaluó si la proporción de pacientes con
enfermedad cardíaca (num > 0)
superaba el 50%. Este contraste permitió
establecer una visión general sobre la
prevalencia de la enfermedad en el dataset
heart.
Profundización en las
características clínicas:
Este segundo análisis se plantea como una
extensión natural del primero, con el
objetivo de explorar si las
variables continuas (como colesterol,
presión arterial y edad) presentan diferencias
significativas entre los distintos niveles de
la variable categórica
num.
Metodología aplicada:
num tiene dos
niveles, se aplica la prueba t de
Student para comparar medias.num tiene más de dos
niveles, se utiliza una ANOVA de una
vía para contrastar las
medias entre grupos.Valor agregado del segundo análisis:
Continuación del primer
análisis: En el primer análisis se
evaluó si la proporción de pacientes con enfermedad cardíaca
(num > 0) superaba el 50%.
Este contraste permitió establecer una visión
general sobre la prevalencia de la enfermedad
en el dataset heart.
Necesidad del segundo
análisis:
Para complementar la información anterior, se buscó
determinar si las variables clínicas continuas (como
colesterol y presión arterial) presentan
diferencias significativas entre los grupos
definidos por la variable categórica
num.
Prueba t de Student:
num tiene
dos niveles (ejemplo:
0 = sano,
1 = enfermo).ANOVA (Análisis de Varianza):
Se utiliza cuando la variable num
tiene más de dos niveles (ejemplo:
0 = sano,
1 = leve,
2 = moderado,
3 = severo).
Permite comparar simultáneamente las medias de varios grupos para identificar si al menos una difiere significativamente.
Hipótesis nula
(H₀):
Las medias de las variables clínicas continuas (por
ejemplo, colesterol, presión arterial, edad)
son iguales entre los grupos definidos
por la variable num.
Hipótesis alternativa
(Hₐ):
Al menos una de las medias de las variables clínicas continuas
difiere significativamente entre los grupos
definidos por num.
Nivel de
significancia:
Se establece en 0.05, lo que implica un 5% de
tolerancia al error tipo I.
Tipo de contraste:
Si num tiene dos
niveles, se aplica un contraste bilateral
mediante la prueba t de Student.
Si num tiene más de dos
niveles, se aplica un ANOVA de una vía, que
evalúa simultáneamente todas las medias.
numConversión de variable categórica:
La variable num se convierte en
factor para tratarla como categórica. Esto
permite agrupar a los pacientes según el nivel
de enfermedad cardíaca y realizar comparaciones
estadísticas entre grupos.
Tabla de frecuencia:
Se calcula la cantidad de pacientes en cada nivel de
num, este paso permite visualizar
la distribución de la muestra y verificar el
tamaño de cada grupo.
num)| Var1 | Freq |
|---|---|
| 0 | 411 |
| 1 | 265 |
| 2 | 109 |
| 3 | 107 |
| 4 | 28 |
| num | n | age_media | chol_media | trestbps_media |
|---|---|---|---|---|
| 0 | 411 | 50.54745 | 230.8360 | 129.6928 |
| 1 | 265 | 53.52830 | 213.9179 | 131.6464 |
| 2 | 109 | 57.57798 | 181.6737 | 134.2493 |
| 3 | 107 | 59.21495 | 190.8339 | 134.7895 |
| 4 | 28 | 59.21429 | 209.6430 | 136.2826 |
numnum):0 (411 casos), lo
que indica ausencia de enfermedad cardíaca. Los niveles
1 y 2
también tienen representación significativa
(265 y 109 casos, respectivamente), mientras que los
niveles 3 y
4 son menos frecuentes
(107 y 28 casos).
age_media):num = 0: 50.5 añosnum = 4: 59.2 añoschol_media):num = 0 (230.8 mg/dl),
pero disminuye en num = 1
(2013.9) y vuelve a subir en
num = 4 (209.6).trestbps_media):num = 4 (136.2 mmHg),
seguida de fluctuaciones en los niveles
superiores.
# Pruebas de hipótesis (ANOVA o t-test según niveles)
niveles_num <- unique(na.omit(heart$num))
if (length(niveles_num) > 2) {
if ("chol" %in% names(heart)) {
aov_col <- aov(chol ~ num, data = heart)
kable(tidy(aov_col), caption = "ANOVA: Colesterol según niveles de num")
}
if ("trestbps" %in% names(heart)) {
aov_presion <- aov(trestbps ~ num, data = heart)
kable(tidy(aov_presion), caption = "ANOVA: Presión arterial según niveles de num")
}
} else if (length(niveles_num) == 2) {
if ("chol" %in% names(heart)) {
t_col <- t.test(chol ~ num, data = heart)
resultados_tcol <- data.frame(
Estadístico = round(t_col$statistic, 3),
`Valor p` = round(t_col$p.value, 4)
)
kable(resultados_tcol, caption = "Prueba t para colesterol")
}
if ("trestbps" %in% names(heart)) {
t_presion <- t.test(trestbps ~ num, data = heart)
resultados_tpres <- data.frame(
Estadístico = round(t_presion$statistic, 3),
`Valor p` = round(t_presion$p.value, 4)
)
kable(resultados_tpres, caption = "Prueba t para presión arterial")
}
} else {
cat("<p><b>La variable 'num'</b> no tiene <b>suficientes niveles</b> para <b>pruebas de hipótesis</b>.</p>")
}
| term | df | sumsq | meansq | statistic | p.value |
|---|---|---|---|---|---|
| num | 4 | 3962.926 | 990.7316 | 3.803022 | 0.0044913 |
| Residuals | 915 | 238368.151 | 260.5116 | NA | NA |
La prueba ANOVA evalúa si existen
diferencias significativas en la presión arterial en
reposo (trestbps) entre los
distintos niveles de enfermedad cardíaca
(num).
El valor p obtenido (0.0044) es menor al nivel de significancia convencional (α = 0.05), lo que indica que: > Se rechaza la hipótesis nula.
Esto significa que al menos una de las medias de presión
arterial difiere significativamente entre los niveles de
num.
El estadístico F = 3.80 refleja una variabilidad explicada por el grupo mayor que la variabilidad residual, lo que respalda la significancia del resultado.
Conclusión: La presión arterial en reposo está asociada con la severidad de la enfermedad cardíaca.
Los pacientes en distintos niveles denumpresentan diferencias clínicas reales en este indicador.
Este hallazgo refuerza la utilidad de
num como variable categórica
explicativa en el análisis clínico del dataset
heart.
Esta visualización muestra la distribución del
colesterol para cada nivel de la
variable num, que representa la
severidad de enfermedad cardíaca. Cada
boxplot resume la mediana, los cuartiles y los
valores atípicos del colesterol en cada grupo.
El gráfico sugiere que la relación entre colesterol y severidad de enfermedad cardíaca no es lineal:
num = 1, 2, 3) muestran medianas más
bajas o similares al grupo sano.num = 4) muestra
una mediana elevada, lo que podría indicar un
repunte en los casos más graves.| Indicador | Valor |
|---|---|
| Total pacientes | 920 |
| Pacientes con enfermedad | 509 |
| Proporción observada.p | 0.5533 |
| Hipótesis alternativa | p > 0.50 |
| Estadístico Chi².X-squared | 10.439 |
| Grados de libertad.df | 1 |
| Valor p | 6.17e-04 |
| IC 95% inferior | 0.5262 |
| IC 95% superior | 1 |
La proporción observada de pacientes con
enfermedad fue 55.3%, superior al
valor de referencia (50%).
La prueba de hipótesis con (chi^2 =
10.439), (df = 1) y un valor
p de 6.17 × 10⁻⁴ indica una diferencia
estadísticamente significativa.
El intervalo de confianza del 95% para
la proporción va de 0.5262 a 1.0000,
lo que excluye la hipótesis nula y respalda la
hipótesis alternativa:
La proporción verdadera de pacientes con enfermedad es mayor a 0.5.
Este resultado sugiere una prevalencia elevada y estadísticamente confirmada de la condición bajo estudio.
La proporción de pacientes con enfermedad
cardíaca (num > 0) fue del
55.3%, significativamente superior al
50% esperado bajo la hipótesis nula.
→ Esto indica una prevalencia elevada y estadísticamente
confirmada** de enfermedad en la muestra analizada.
La variable num, que representa la
severidad de enfermedad cardíaca, mostró
asociaciones significativas con indicadores
clínicos clave:
trestbps): Presenta
diferencias significativas entre niveles de
num (ANOVA, p = 0.0044), lo que
respalda su valor como marcador clínico.chol): Aunque su
distribución varía entre niveles, no sigue un
patrón lineal claro. El análisis visual
sugiere que podría estar implicado en los extremos de
severidad, pero requiere validación inferencial.El análisis descriptivo y las pruebas
estadísticas confirman que num es una
variable explicativa útil para caracterizar diferencias
clínicas en la población estudiada.