Para este reporte final, se utilizaron los resultados obtenidos en la Actividad 2, que se enfocaron a corregir los problemas con el dataset Heart Disease UCI, para el cual se realizó lo siguiente:
str), resumen estadístico
(summary,
skim) y duplicados. Se detectaron valores
ausentes en algunas variables.mice, generando 5
datasets y eligiendo el segundo.disease.Para este ejercicio, se utilizaron los resultados obtenidos en la Actividad 5, que se enfocaron en aplicar estadística inferencial, que buscaba que aprendiéramos a ajustar, interpretar y evaluar modelos lineales y logísticos con R, usando lo que aprendido en la exploración y la inferencia estadística. Esto permitió reforzar la conexión entre inferencia y predicción, basados en 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.
library(tibble)
library(purrr)
library(knitr)
library(htmltools)
library(tidyr)
summary_table <- tibble(
Variable = names(heart),
Tipo = map_chr(as.list(heart), ~ class(.x)[1]),
Ejemplo = map_chr(as.list(heart), ~ paste(head(.x, 3), collapse = ", "))
)
kable(summary_table, caption = "Resumen de variables del dataset")| Variable | Tipo | Ejemplo |
|---|---|---|
| age | integer | 63, 67, 67 |
| sex | character | Male, Male, Male |
| dataset | character | Cleveland, Cleveland, Cleveland |
| cp | character | typical angina, asymptomatic, asymptomatic |
| trestbps | numeric | 145, 159.652, 120 |
| chol | numeric | 233, 286, 229 |
| fbs | logical | TRUE, FALSE, FALSE |
| restecg | character | lv hypertrophy, lv hypertrophy, lv hypertrophy |
| thalch | numeric | 150, 108, 129 |
| exang | logical | FALSE, TRUE, TRUE |
| oldpeak | numeric | 1.9826, 1.5, 1.9826 |
| slope | character | downsloping, flat, flat |
| ca | integer | 0, 3, 2 |
| thal | character | fixed defect, normal, reversable defect |
| num | integer | 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) |
¿Existe una relación entre el tipo de dolor torácico
(cp), el nivel de
colesterol (chol) y la presencia
de enfermedad cardíaca
(num) en pacientes del dataset
heart_limpio?
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).
chol
(colesterol), thalch
(frecuencia cardíaca máxima)cp
(tipo de dolor torácico),
thal (tipo de talasemia),
num (diagnóstico de enfermedad
cardíaca)La gráfica muestra la relación entre
colesterol (chol) y
frecuencia cardíaca máxima
(thalch), diferenciando por
diagnóstico (num)
mediante color. Cada punto representa un paciente, y los colores indican
cinco categorías diagnósticas: 0, 1, 2, 3 y 4.
Interpretación:
No se observa una correlación lineal clara entre colesterol y frecuencia cardíaca máxima, lo que sugiere que estas variables pueden variar de forma independiente en el dataset analizado.
Los grupos de diagnóstico muestran dispersión interna considerable, indicando que ni el colesterol ni la frecuencia cardíaca máxima por sí solos permiten distinguir claramente entre estados clínicos.
Algunos pacientes presentan valores extremos de
colesterol
(>300 mg/dl) o frecuencia
cardíaca (<100 bpm), lo que
podría reflejar casos clínicos particulares o
errores de medición.
La distribución de puntos sugiere que
ciertos diagnósticos (por ejemplo,
num = 0 vs
num = 4) tienden a agruparse en
zonas distintas del gráfico, lo que podría indicar
patrones clínicos latentes que requieren análisis
multivariado.
Vamos a agregar facetado por tipo de dolor torácico
(cp) para ver si los síntomas
modifican la relación entre
colesterol y frecuencia cardíaca:
En la gráfica, cada panel representa un subtipo de dolor:
asintomático, angina típica, angina atípica y
dolor no anginoso. Los puntos están coloreados según el
diagnóstico (num).
Interpretación:
La dispersión de los datos varía entre tipos de dolor, lo que sugiere que los síntomas podrían influir en el perfil clínico de colesterol y frecuencia cardíaca.
En pacientes asintomáticos, se observa una mayor concentración de diagnósticos graves (colores más claros), con menor frecuencia cardíaca.
Los tipos de dolor menos típicos muestran mayor variabilidad, lo que podría indicar perfiles clínicos más heterogéneos.
No se aprecia una correlación lineal clara entre colesterol y frecuencia cardíaca en ningún grupo, por lo que se podría complementar con un análisis multivariado.
La gráfica muestra la distribución de los niveles de
colesterol (chol) según
el tipo de dolor torácico
(cp) y la condición de
talasemia (thal). Cada grupo de
talasemia —defecto fijo, normal y defecto
reversible— contiene boxplots para los cuatro tipos de
dolor: asintomático, angina típica,
angina atípica y dolor no anginoso.
Interpretación:
En pacientes con defecto fijo, los niveles de colesterol tienden a ser más elevados, especialmente en los casos asintomáticos, lo que podría indicar un perfil clínico de riesgo silencioso.
Los pacientes con talasemia normal muestran una dispersión más homogénea del colesterol entre los tipos de dolor, sin diferencias marcadas.
En el grupo con defecto reversible, se observa una mayor variabilidad, con algunos tipos de dolor (como angina típica) mostrando valores extremos de colesterol.
La combinación de dolor torácico y tipo de talasemia parece influir en la distribución del colesterol, lo que sugiere que estas variables podrían interactuar en el perfil metabólico del paciente.
La gráfica muestra la distribución proporcional de los
diagnósticos (num) en función del
tipo de dolor torácico
(cp). Cada barra representa un tipo de
dolor —asintomático, angina típica, angina
atípica y dolor no anginoso— y está segmentada por los
cinco niveles de diagnóstico (de 0 a
4), indicados por colores.
Interpretación:
El dolor asintomático presenta una mayor proporción de diagnósticos graves (num = 3 o 4), lo que sugiere que la ausencia de síntomas no implica menor riesgo clínico.
En contraste, los pacientes con angina típica o dolor no anginoso muestran una mayor proporción de diagnósticos leves (num = 0 o 1), lo que podría reflejar una percepción más temprana de síntomas.
El tipo de dolor torácico parece estar asociado con el perfil diagnóstico, lo que podría ayudar en la estratificación de riesgo y en la toma de decisiones clínicas.
chol) por tipo de dolor torácico
(cp) y diagnóstico
(num)La gráfica muestra la distribución de los niveles de
colesterol (chol)
mediante curvas de densidad, facetadas por tipo de dolor
torácico (cp) y coloreadas por
diagnóstico (num). Cada panel
representa un subtipo de dolor: asintomático,
angina típica, angina atípica y
dolor no anginoso.
Interpretación:
En pacientes asintomáticos, se observa una mayor concentración de diagnósticos graves (num = 3 o 4) en rangos de colesterol más altos, lo que podría indicar un perfil de riesgo silencioso.
Los pacientes con angina típica muestran una distribución más amplia, con presencia de todos los niveles de diagnóstico, lo que sugiere una mayor heterogeneidad.
En el grupo con dolor no anginoso, los diagnósticos leves (num = 0 o 1) predominan en rangos de colesterol más bajos, lo que podría reflejar un perfil metabólico más favorable.
La superposición de curvas indica que el colesterol por sí solo no discrimina completamente entre diagnósticos, pero su interacción con el tipo de dolor podría ser clínicamente relevante.
El análisis sugiere que el tipo de dolor torácico* modula la distribución de colesterol según el diagnóstico, lo que podría ser útil para estratificación de riesgo.
chol) y frecuencia cardíaca máxima (thalch)
por tipo de talasemia (thal)La gráfica muestra la relación entre
colesterol (chol) y
frecuencia cardíaca máxima
(thalch), facetada por tipo de
talasemia (thal) y coloreada por
diagnóstico (num). Cada panel
representa una condición de talasemia: defecto fijo,
normal y defecto reversible.
Interpretación:
En el grupo con defecto fijo, se observa una mayor concentración de diagnósticos graves (num = 3 o 4) en pacientes con colesterol elevado y frecuencia cardíaca reducida, lo que podría indicar un perfil clínico de alto riesgo.
Los pacientes con talasemia normal presentan una distribución más dispersa, con presencia de todos los niveles de diagnóstico, lo que sugiere una mayor heterogeneidad metabólica.
En el grupo con defecto reversible, los diagnósticos leves (num = 0 o 1) predominan en rangos de colesterol más bajos y frecuencia cardíaca más alta, lo que podría reflejar un perfil clínico más favorable.
La interacción entre colesterol, frecuencia cardíaca máxima y tipo de talasemia parece influir en el perfil diagnóstico, lo que podría ser útil para estratificación de riesgo y personalización del tratamiento.
La gráfica presenta un mapa de calor que
cruza el tipo de dolor torácico
(cp) con el diagnóstico
clínico (num), mostrando en cada
celda el conteo de pacientes y coloreando según el
colesterol promedio
(chol).
Interpretación:
El tipo de dolor asintomático aparece en combinación con todos los niveles de diagnóstico, pero con colesterol promedio más bajo en los casos leves (num = 0) y más alto en los graves (num = 3), lo que sugiere un perfil de riesgo silencioso.
La categoría angina atípica muestra el mayor conteo de pacientes en diagnóstico leve (num = 0), con colesterol promedio elevado, lo que podría indicar una población metabólicamente vulnerable.
En el grupo angina típica, los casos graves (num = 2 o 3) son menos frecuentes, pero presentan colesterol bajo, lo que podría reflejar un perfil clínico distinto.
El dolor no anginoso se asocia principalmente con diagnósticos leves (num = 0), y colesterol moderado, lo que sugiere un perfil clínico más benigno.
thalch) por tipo de talasemia
(thal) y diagnóstico
(num)La gráfica muestra un mapa de calor
que cruza el tipo de talasemia
(thal) con el diagnóstico
clínico (num), coloreando cada
celda según la frecuencia cardíaca máxima promedio
(thalch).
Interpretación:
En pacientes con talasemia normal, se observa una frecuencia cardíaca más elevada en los diagnósticos leves (num = 0 o 1), lo que podría reflejar un perfil funcional más saludable.
Los casos con defecto fijo presentan frecuencias cardíacas más bajas en los diagnósticos graves (num = 3 o 4), lo que sugiere una posible asociación entre disfunción cardíaca.
En el grupo con defecto reversible, la frecuencia cardíaca se mantiene en rangos intermedios, con menor variabilidad entre diagnósticos, lo que podría indicar una respuesta más estable ante el esfuerzo.
La interacción entre tipo de talasemia y diagnóstico parece influir en la capacidad funcional del corazón, lo que podría ser útil para estratificación de riesgo y seguimiento terapéutico.
La gráfica muestra la relación entre
colesterol (chol) y
frecuencia cardíaca máxima
(thalch) en pacientes con
enfermedad cardíaca, facetada por tipo de dolor
torácico (cp) y coloreada por
diagnóstico (num). Cada
panel incluye una línea de tendencia
que permite visualizar el patrón de asociación en cada
subtipo de dolor.
Interpretación:
En pacientes asintomáticos, se observa una tendencia ligeramente positiva: a mayor colesterol, mayor frecuencia cardíaca máxima, especialmente en diagnósticos más graves (num = 3 o 4), lo que podría indicar un perfil clínico de riesgo silencioso.
En el grupo con angina típica, la relación parece más plana, con menor variación en frecuencia cardíaca, lo que sugiere una posible estabilidad funcional en este subtipo.
Los pacientes con angina atípica muestran una dispersión amplia y una pendiente menos definida, lo que podría reflejar heterogeneidad clínica.
En el grupo con dolor no anginoso, la pendiente es ligeramente positiva, lo que podría indicar que en este subtipo, el colesterol no se asocia negativamente con la capacidad funcional cardíaca.
La interacción entre colesterol, frecuencia cardíaca máxima y tipo de dolor torácico podría ser útil para estratificación de riesgo y personalización del tratamiento en pacientes con enfermedad cardíaca.
cp), color por diagnóstico (num), tamaño por
colesterol (chol)La gráfica muestra la relación entre
edad (age) y
frecuencia cardíaca máxima
(thalch), facetada por tipo de dolor
torácico (cp), con cada punto
representando un paciente. El color indica el
diagnóstico (num) y el
tamaño del punto representa el
colesterol (chol).
Interpretación:
En pacientes asintomáticos, se observa una tendencia a menor frecuencia cardíaca en edades avanzadas, especialmente en diagnósticos más graves (num = 3 o 4) y con colesterol elevado (círculos grandes).
En el grupo con angina típica, los pacientes tienden a tener frecuencia cardíaca más conservada, incluso en edades mayores, lo que podría reflejar un perfil funcional más estable.
Los pacientes con angina atípica muestran una dispersión amplia en edad y frecuencia cardíaca, con presencia de todos los niveles de diagnóstico.
En el grupo con dolor no anginoso, predominan los diagnósticos leves (num = 0 o 1) en pacientes más jóvenes, con colesterol moderado, lo que podría indicar un perfil metabólico más favorable.
La interacción entre edad, frecuencia cardíaca, colesterol y tipo de dolor torácico permite visualizar perfiles clínicos diferenciados, útiles para estratificación de riesgo y personalización del tratamiento.
La gráfica muestra la relación entre
edad (age) y
frecuencia cardíaca máxima
(thalch), facetada por tipo de dolor
torácico (cp) y coloreada por
diagnóstico (num). Cada panel
representa un subtipo de dolor: asintomático, angina
típica, angina atípica y dolor no anginoso.
Interpretación:
En pacientes asintomáticos, se observa una tendencia descendente: a mayor edad, menor frecuencia cardíaca máxima, especialmente en diagnósticos más graves (num = 3 o 4), lo que podría indicar deterioro funcional silencioso.
En el grupo con angina típica, la frecuencia cardíaca se mantiene relativamente estable en distintos rangos de edad, lo que sugiere una posible compensación fisiológica o menor impacto del envejecimiento.
Los pacientes con angina atípica presentan una dispersión amplia en edad y frecuencia cardíaca, con presencia de todos los niveles de diagnóstico, lo que refleja una alta heterogeneidad clínica.
En el grupo con dolor no anginoso, predominan los diagnósticos leves (num = 0 o 1) en pacientes más jóvenes, lo que podría indicar un perfil clínico más favorable.
La interacción entre edad, frecuencia cardíaca máxima y tipo de dolor torácico permite identificar patrones funcionales diferenciados que pueden ser útiles para estratificación de riesgo y personalización del tratamiento.
El uso de tooltips interactivos permite acceder a información clínica detallada al pasar el cursor sobre cada punto, enriqueciendo la interpretación visual. En este caso, el tooltip incluye:
Esto permite identificar perfiles individuales dentro de cada grupo, facilitando el análisis de casos extremos o patrones ocultos. Ayuda a detectar combinaciones de riesgo, como pacientes jóvenes con colesterol alto y diagnóstico grave.
Tras revisar múltiples visualizaciones que exploran la interacción entre variables clínicas como edad, colesterol, frecuencia cardíaca máxima, tipo de dolor torácico, diagnóstico y talasemia, se identifican los siguientes patrones y recomendaciones:
La presente sección 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.
En esta sección se presenta un análisis predictivo utilizando el dataset de enfermedades cardíacas (heart), ampliamente empleado en estudios clínicos. El objetivo principal es formular una pregunta predictiva basada en patrones identificados durante la exploración de datos y el análisis inferencial previo.
El enfoque metodológico se centra en la construcción de un modelo estadístico que permita estimar la probabilidad de presencia de enfermedad coronaria a partir de variables de riesgo clásicas como edad, colesterol, presión arterial en reposo y sexo.
La estructura del documento incluye:
- Importación y preparación de datos.
- Definición de la pregunta predictiva.
- Ajuste del modelo estadístico (GLM binomial o LM
según la naturaleza de la variable respuesta).
- Interpretación de coeficientes, significancia y métricas
globales.
- Conclusiones sobre la calidad y utilidad del
modelo.
Este análisis busca no solo evaluar la significancia estadística de los predictores, sino también su relevancia práctica en el contexto clínico, aportando evidencia sobre cómo los factores de riesgo contribuyen a la detección temprana y prevención de la enfermedad cardíaca.
num > 0) a partir de sus
factores de riesgo clásicos como edad,
colesterol, presión arterial en reposo y sexo?La variable respuesta será
binaria:
- num_bin = 1 si
num > 0 (enfermedad
presente).
- num_bin = 0 si
num == 0 (sin
enfermedad).
Se crea una nueva variable binaria
(num_bin) y se
seleccionan las variables predictoras más
relevantes:
- Edad (age)
- Colesterol (chol)
- Presión arterial en reposo
(trestbps)
- Sexo (sex)
Esto permite estructurar el dataset para el ajuste del modelo.
Se ajusta un modelo de regresión logística con la
función glm(family = binomial), donde la
variable respuesta es
num_bin y las variables
predictoras son edad, colesterol, presión arterial
y sexo.
El modelo estima la probabilidad de enfermedad coronaria en función de estos factores de riesgo.
##
## Call:
## glm(formula = num_bin ~ age + chol + trestbps + sex, family = binomial,
## data = modelo_data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -4.435103 0.728814 -6.085 1.16e-09 ***
## age 0.062305 0.008396 7.421 1.17e-13 ***
## chol -0.003868 0.001002 -3.859 0.000114 ***
## trestbps 0.007323 0.004712 1.554 0.120140
## sexMale 1.521881 0.192050 7.924 2.29e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1264.9 on 919 degrees of freedom
## Residual deviance: 1086.2 on 915 degrees of freedom
## AIC: 1096.2
##
## Number of Fisher Scoring iterations: 4
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -4.435103182 0.728814145 -6.085369 1.162231e-09
## age 0.062304820 0.008396253 7.420550 1.166346e-13
## chol -0.003868185 0.001002350 -3.859116 1.137979e-04
## trestbps 0.007323236 0.004711937 1.554188 1.201396e-01
## sexMale 1.521880733 0.192050169 7.924392 2.292662e-15
El modelo ajustado
(glm binomial) estima la
probabilidad de presentar enfermedad coronaria
(num_bin = 1) en función de edad,
colesterol, presión arterial en reposo y sexo.
El modelo muestra que edad y sexo
masculino son predictores significativos y
clínicamente coherentes. El colesterol
aparece con un efecto negativo inesperado, lo que
sugiere revisar la estructura del dataset o
posibles interacciones. La presión
arterial no resultó significativa en
este ajuste.
En conjunto, el modelo tiene un ajuste razonable
(reducción de deviance y AIC moderado) y
aporta evidencia útil para responder la
pregunta predictiva, aunque requiere
refinamiento para mejorar su coherencia
clínica.
El análisis de los coeficientes del modelo logístico muestra lo siguiente:
Edad (p < 0.001)*
Altamente significativa. Confirma que la
edad es un predictor robusto de
enfermedad coronaria.
Colesterol (p < 0.001) Significativo, aunque con un efecto negativo inesperado. Indica que el colesterol influye en el modelo, pero su interpretación clínica requiere cautela.
Presión arterial en reposo (p = 0.12)
No significativa. No aporta evidencia
estadística suficiente en este ajuste, aunque
clínicamente es un factor de riesgo
reconocido.
Sexo masculino (p < 0.001)
Altamente significativo. Ser hombre incrementa
la probabilidad de enfermedad coronaria, coherente con la
epidemiología clásica.
El modelo identifica a edad y sexo masculino como predictores estadísticamente sólidos y clínicamente coherentes. El colesterol también resulta significativo, aunque con un efecto contraintuitivo que sugiere revisar la estructura del dataset. La presión arterial no mostró significancia estadística en este ajuste.
## [1] 1096.241
## fitting null model for pseudo-r2
## llh llhNull G2 McFadden r2ML r2CU
## -543.1204621 -632.4659249 178.6909256 0.1412653 0.1765309 0.2362750
El ajuste del modelo logístico se evalúa con varios indicadores:
El modelo logra una mejora
significativa respecto al modelo nulo, con
indicadores que muestran un ajuste moderado.
Aunque no explica toda la variabilidad, es útil para
identificar patrones de riesgo y aporta
evidencia práctica sobre la influencia
de edad, colesterol y
sexo en la probabilidad de enfermedad
coronaria.
El modelo logístico ajustado aporta evidencia útil para la práctica clínica:
En conjunto, el modelo tiene un ajuste moderado (AIC ≈ 1096, pseudo R² ≈ 0.14–0.23), lo que significa que no explica toda la variabilidad pero sí permite identificar patrones de riesgo relevantes.
Este modelo puede servir como una herramienta de apoyo para la detección temprana y la priorización de pacientes en riesgo, integrando factores clásicos como edad y sexo. Sin embargo, debe complementarse con otros indicadores clínicos y pruebas diagnósticas para una evaluación integral y confiable.
El modelo aporta evidencia estadística y práctica sobre la influencia de la edad y el sexo en la probabilidad de enfermedad coronaria, mostrando un valor predictivo moderado y destacando la necesidad de integrar más variables para mejorar su capacidad explicativa.
El objetivo es refinar el modelo preliminar de regresión logística, evaluando correlaciones y colinealidad, comparando al menos dos especificaciones y seleccionando un modelo final con justificación basada en métricas y coherencia clínica.
Criterios de éxito: menor AIC, mayor AUC y pR², coeficientes interpretables y ausencia de colinealidad problemática.
| term | estimate | std.error | statistic | p.value |
|---|---|---|---|---|
| (Intercept) | -4.4351 | 0.7288 | -6.0854 | 0.0000 |
| age | 0.0623 | 0.0084 | 7.4206 | 0.0000 |
| chol | -0.0039 | 0.0010 | -3.8591 | 0.0001 |
| trestbps | 0.0073 | 0.0047 | 1.5542 | 0.1201 |
| sexMale | 1.5219 | 0.1921 | 7.9244 | 0.0000 |
Coeficientes y significancia
(Intercept) (-4.43, p < 0.001)
Representa la probabilidad base de enfermedad coronaria cuando todas
las variables predictoras son cero.
Interpretación: El valor negativo y
altamente significativo indica que la
probabilidad inicial sin factores de
riesgo es muy baja.
Edad (0.062, p < 0.001)
Coeficiente positivo y altamente significativo.
Cada año adicional de edad aumenta los
log-odds de enfermedad coronaria.
Interpretación: La edad es un
fuerte predictor, consistente con la literatura
clínica.
Colesterol (-0.0039, p < 0.001)
Coeficiente negativo y significativo.
Este resultado es contraintuitivo: sugiere que a
mayor colesterol, menor probabilidad
de enfermedad.
Interpretación: puede deberse a sesgos
en el dataset (pacientes tratados, variabilidad entre bases). Aunque
estadísticamente significativo,
clínicamente debe interpretarse con
cautela.
Presión arterial en reposo (0.0073, p =
0.12)
Coeficiente positivo pero no significativo.
Interpretación: No aporta evidencia estadística
suficiente en este modelo. Aunque clínicamente
relevante, en este dataset no mejora la
predicción.
Sexo masculino (1.52, p < 0.001)
Coeficiente positivo y altamente significativo.
Interpretación: Ser hombre aumenta
considerablemente la probabilidad de enfermedad
coronaria, lo cual es consistente con
evidencia clínica.
| Métrica | Valor |
|---|---|
| Null deviance | 1264.932 |
| Residual deviance | 1086.241 |
| AIC | 1096.241 |
| Iteraciones | 4.000 |
Indicadores globales del modelo
Null deviance: 1264.9 → Residual deviance:
1086.2
El modelo reduce la desviación, lo que
indica que explica parte de la variabilidad respecto al
modelo nulo.
AIC: 1096.2
Valor de referencia para comparar con modelos aumentados.
Moderado, el modelo tiene
ajuste aceptable pero no
óptimo.
Conclusión del modelo original
##
## Call:
## glm(formula = num_bin ~ age + chol + trestbps + sex + thalch +
## exang + cp + restecg + slope + ca + thal + oldpeak + fbs,
## family = binomial, data = heart)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.163993 1.420188 -0.115 0.90807
## age 0.001530 0.013023 0.117 0.90646
## chol -0.003001 0.001534 -1.956 0.05044 .
## trestbps 0.003572 0.006603 0.541 0.58859
## sexMale 0.738916 0.289060 2.556 0.01058 *
## thalch -0.002847 0.004913 -0.579 0.56228
## exangTRUE 0.982888 0.239158 4.110 3.96e-05 ***
## cpatypical angina -1.606569 0.311475 -5.158 2.50e-07 ***
## cpnon-anginal -1.249476 0.253383 -4.931 8.17e-07 ***
## cptypical angina -1.102012 0.394939 -2.790 0.00527 **
## restecgnormal -0.359745 0.276274 -1.302 0.19287
## restecgst-t abnormality -0.003250 0.351380 -0.009 0.99262
## slopeflat 0.463854 0.364513 1.273 0.20318
## slopeupsloping -0.806463 0.411232 -1.961 0.04987 *
## ca 1.225826 0.155692 7.873 3.45e-15 ***
## thalnormal -0.899687 0.314233 -2.863 0.00419 **
## thalreversable defect 0.347382 0.278635 1.247 0.21250
## oldpeak 0.456589 0.141996 3.215 0.00130 **
## fbsTRUE -0.013391 0.303831 -0.044 0.96485
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1264.9 on 919 degrees of freedom
## Residual deviance: 627.6 on 901 degrees of freedom
## AIC: 665.6
##
## Number of Fisher Scoring iterations: 6
## [1] 665.602
| term | estimate | std.error | statistic | p.value |
|---|---|---|---|---|
| (Intercept) | -0.1640 | 1.4202 | -0.1155 | 0.9081 |
| age | 0.0015 | 0.0130 | 0.1175 | 0.9065 |
| chol | -0.0030 | 0.0015 | -1.9562 | 0.0504 |
| trestbps | 0.0036 | 0.0066 | 0.5409 | 0.5886 |
| sexMale | 0.7389 | 0.2891 | 2.5563 | 0.0106 |
| thalch | -0.0028 | 0.0049 | -0.5795 | 0.5623 |
| exangTRUE | 0.9829 | 0.2392 | 4.1098 | 0.0000 |
| cpatypical angina | -1.6066 | 0.3115 | -5.1579 | 0.0000 |
| cpnon-anginal | -1.2495 | 0.2534 | -4.9312 | 0.0000 |
| cptypical angina | -1.1020 | 0.3949 | -2.7903 | 0.0053 |
| restecgnormal | -0.3597 | 0.2763 | -1.3021 | 0.1929 |
| restecgst-t abnormality | -0.0032 | 0.3514 | -0.0092 | 0.9926 |
| slopeflat | 0.4639 | 0.3645 | 1.2725 | 0.2032 |
| slopeupsloping | -0.8065 | 0.4112 | -1.9611 | 0.0499 |
| ca | 1.2258 | 0.1557 | 7.8734 | 0.0000 |
| thalnormal | -0.8997 | 0.3142 | -2.8631 | 0.0042 |
| thalreversable defect | 0.3474 | 0.2786 | 1.2467 | 0.2125 |
| oldpeak | 0.4566 | 0.1420 | 3.2155 | 0.0013 |
| fbsTRUE | -0.0134 | 0.3038 | -0.0441 | 0.9648 |
El modelo ajustado incluye múltiples
predictores clínicos y demográficos para
explicar la probabilidad de enfermedad cardíaca
(num_bin). A continuación se presentan los
resultados más relevantes:
age): No significativa
(p = 0.906). La edad no mostró
efecto independiente en este
modelo.chol): Efecto negativo
marginalmente significativo (p ≈ 0.050).
Niveles más altos de colesterol se asocian con una
ligera reducción en la probabilidad de
enfermedad, lo cual puede reflejar confusión
con otros factores.trestbps):
No significativa (p = 0.589).sexMale):
Significativo y positivo (p = 0.010).
Ser hombre aumenta la probabilidad de
enfermedad cardíaca.thalch):
No significativa (p = 0.562).exangTRUE): Altamente significativa y
positiva (p < 0.001). La
presencia de angina durante el
ejercicio incrementa fuertemente el
riesgo.cp):
restecg): No significativo en sus
categorías.slope):
ca):
Altamente significativo y positivo (p
< 0.001). A mayor número de vasos
afectados, mayor probabilidad de
enfermedad.thal):
oldpeak):
Significativo y positivo (p = 0.001).
Mayor depresión del ST se asocia con mayor
riesgo.fbsTRUE): No
significativa (p = 0.965).| Métrica | Valor |
|---|---|
| Null deviance | 1264.932 |
| Residual deviance | 627.602 |
| AIC | 665.602 |
| Iteraciones | 6.000 |
Indicadores globales del modelo aumentado
Null deviance: 1264.9
Representa el ajuste del modelo sin predictores. Un
valor alto indica que la variable
dependiente (*enfermedad cardíaca) tiene
bastante variabilidad que necesita ser
explicada**.
Residual deviance: 627.6
Mide el ajuste del modelo con todos los predictores incluidos.
La reducción respecto al null deviance
(de 1264.9 a 627.6) muestra que el
modelo explica una gran parte de la
variabilidad en la respuesta. Esta diferencia
es evidencia de que los predictores aportan
información relevante.
AIC: 665.6
Criterio de información de Akaike. Un valor más
bajo indica mejor ajuste relativo entre
modelos comparables. Aquí el AIC
sugiere que el modelo es
razonablemente parsimonioso y con buen poder
explicativo.
Número de iteraciones: 6
Cantidad de pasos que necesitó el algoritmo de Fisher scoring para
converger. Un número bajo (como 6) indica que el
modelo alcanzó estabilidad
rápidamente, lo cual es una señal de buen
comportamiento numérico.
Conclusión del modelo aumentado
El modelo logra una reducción sustancial de la desviación respecto al modelo nulo, lo que confirma que los predictores seleccionados aportan información valiosa.
El AIC relativamente bajo refuerza la idea de un ajuste adecuado y parsimonioso. En conjunto, estos indicadores sugieren que el modelo es estadísticamente sólido y estable, capaz de capturar patrones relevantes en la probabilidad de enfermedad cardíaca.
El modelo muestra que las variables más relevantes para predecir enfermedad cardíaca son:
Sexo masculino,
Angina inducida por ejercicio,
Tipo de dolor torácico,
Número de vasos coloreados,
Thalassemia normal,
Depresión del ST (oldpeak).
Estas variables tienen un impacto clínico claro y estadísticamente significativo, mientras que otras como edad, presión arterial en reposo y glucosa en ayunas no aportan evidencia independiente en este ajuste.
## Analysis of Deviance Table
##
## Model 1: num_bin ~ age + chol + trestbps + sex
## Model 2: num_bin ~ age + chol + trestbps + sex + thalch + exang + cp +
## restecg + slope + ca + thal + oldpeak + fbs
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 915 1086.2
## 2 901 627.6 14 458.64 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Se compararon dos modelos
logísticos para predecir la
probabilidad de enfermedad cardíaca
(num_bin):
thalch), angina inducida por ejercicio
(exang), tipo de dolor torácico
(cp), electrocardiograma en reposo
(restecg), pendiente del ST
(slope), número de vasos coloreados
(ca), tipo de thalassemia
(thal), depresión del ST
(oldpeak) y glucosa en ayunas
(fbs).Resultados del análisis de desviación
Interpretación
La inclusión de variables clínicas adicionales en el Modelo 2 mejora significativamente el ajuste del modelo. La reducción de la desviación residual indica que el modelo explica mucho mejor la variabilidad en el diagnóstico de enfermedad cardíaca. El valor p extremadamente bajo confirma que esta mejora no es atribuible al azar.
Conclusión:
El Modelo 2 es estadísticamente
superior al Modelo 1. Las variables
clínicas adicionales aportan información
relevante y deben ser consideradas en
cualquier análisis predictivo o
diagnóstico.
## Area under the curve: 0.746
## Area under the curve: 0.9276
Se compararon dos modelos de regresión logística mediante sus curvas ROC, evaluando su capacidad para discriminar entre casos positivos y negativos de enfermedad cardíaca.
Conclusión
La inclusión de variables clínicas adicionales mejora notablemente el desempeño del modelo. El aumento en el AUC demuestra que el modelo aumentado tiene una mayor sensibilidad y especificidad, lo que lo convierte en una herramienta más confiable para apoyar decisiones diagnósticas en contextos clínicos.
| Variable | value |
|---|---|
| age | 1.061 |
| chol | 1.039 |
| trestbps | 1.071 |
| sex | 1.030 |
| Variable | GVIF | Df | GVIF^(1/(2*Df)) |
|---|---|---|---|
| age | 1.431 | 1 | 1.196 |
| chol | 1.293 | 1 | 1.137 |
| trestbps | 1.117 | 1 | 1.057 |
| sex | 1.225 | 1 | 1.107 |
| thalch | 1.449 | 1 | 1.204 |
| exang | 1.288 | 1 | 1.135 |
| cp | 1.240 | 3 | 1.037 |
| restecg | 1.427 | 2 | 1.093 |
| slope | 1.536 | 2 | 1.113 |
| ca | 1.254 | 1 | 1.120 |
| thal | 1.620 | 2 | 1.128 |
| oldpeak | 1.251 | 1 | 1.119 |
| fbs | 1.150 | 1 | 1.072 |
Modelo Original
Modelo Aumentado
Conclusión:
Tras el análisis de coeficientes, indicadores globales, curvas ROC y diagnóstico de multicolinealidad, se seleccionaron las siguientes variables para el modelo aumentado de predicción de enfermedad cardíaca:
Variables mantenidas por relevancia clínica, aunque
no significativas en este ajuste:
- Edad (age)
- Colesterol (chol)
- Presión arterial en reposo (trestbps)
- Frecuencia cardíaca máxima (thalch)
- Electrocardiograma en reposo (restecg)
- Glucosa en ayunas (fbs)
- Thal (defecto reversible)
El modelo aumentado incorpora variables demográficas, metabólicas, funcionales y clínicas que en conjunto ofrecen una mejor capacidad predictiva (AUC = 0.9276 frente a 0.746 del modelo original). La ausencia de multicolinealidad confirma que las estimaciones son estables y confiables. Por ello, estas variables serán consideradas en el modelo final para la predicción de enfermedad cardíaca.
Antes de ajustar el modelo logístico, se aplicaron pasos de depuración y transformación para garantizar la validez de los datos y mejorar la interpretabilidad de los coeficientes:
Tratamiento de valores no válidos:
Se eliminó el caso de colesterol = 0*, ya que
clínicamente no es posible y se considera un
valor faltante o erróneo. Esto
evita sesgos en el modelo y
problemas en las transformaciones
posteriores.
Transformación del colesterol
(chol):
Se aplicó la función logaritmo
natural
(log_chol = log(chol)), con el
objetivo de:
Centrado de la edad
(age_centered):
Se restó la media de la edad, dejando
la variable centrada en cero. Esto permite:
Estas transformaciones aseguran que el modelo se base en datos clínicamente válidos, con predictores más estables y coeficientes más interpretables. El preprocesamiento fortalece la calidad del análisis y la confiabilidad de las inferencias estadísticas.
| Variable | Tipo | Ejemplo |
|---|---|---|
| age | integer | 63, 67, 67 |
| sex | character | Male, Male, Male |
| dataset | character | Cleveland, Cleveland, Cleveland |
| cp | character | typical angina, asymptomatic, asymptomatic |
| trestbps | numeric | 145, 159.652, 120 |
| chol | numeric | 233, 286, 229 |
| fbs | logical | TRUE, FALSE, FALSE |
| restecg | character | lv hypertrophy, lv hypertrophy, lv hypertrophy |
| thalch | numeric | 150, 108, 129 |
| exang | logical | FALSE, TRUE, TRUE |
| oldpeak | numeric | 1.9826, 1.5, 1.9826 |
| slope | character | downsloping, flat, flat |
| ca | integer | 0, 3, 2 |
| thal | character | fixed defect, normal, reversable defect |
| num | integer | 0, 2, 1 |
| num_bin | numeric | 0, 1, 1 |
| log_chol | numeric | 5.4510384535657, 5.65599181081985, 5.43372200355424 |
| age_centered | numeric | 9.48913043478261, 13.4891304347826, 13.4891304347826 |
## ca oldpeak
## ca 1.00 0.24
## oldpeak 0.24 1.00
| Modelo | AIC | McFadden_pR2 | AUC |
|---|---|---|---|
| M1 (base) | 665.6020 | 0.5038452 | 0.9275618 |
| M2 (refinado) | 662.1313 | 0.5081701 | 0.9286039 |
| Modelo | Variable | GVIF | Df | GVIF_adj |
|---|---|---|---|---|
| M1 (base) | age | 1.430975 | 1 | 1.196 |
| M1 (base) | chol | 1.292609 | 1 | 1.137 |
| M1 (base) | trestbps | 1.116943 | 1 | 1.057 |
| M1 (base) | sex | 1.225146 | 1 | 1.107 |
| M1 (base) | thalch | 1.448895 | 1 | 1.204 |
| M1 (base) | exang | 1.288291 | 1 | 1.135 |
| M1 (base) | cp | 1.240161 | 3 | 1.037 |
| M1 (base) | restecg | 1.426981 | 2 | 1.093 |
| M1 (base) | slope | 1.536070 | 2 | 1.113 |
| M1 (base) | ca | 1.254498 | 1 | 1.120 |
| M1 (base) | thal | 1.619726 | 2 | 1.128 |
| M1 (base) | oldpeak | 1.251406 | 1 | 1.119 |
| M1 (base) | fbs | 1.150125 | 1 | 1.072 |
| M2 (refinado) | age_centered | 5.358155 | 1 | 2.315 |
| M2 (refinado) | sex | 1.230603 | 1 | 1.109 |
| M2 (refinado) | log_chol | 1.328776 | 1 | 1.153 |
| M2 (refinado) | trestbps | 1.113315 | 1 | 1.055 |
| M2 (refinado) | thalch | 1.462604 | 1 | 1.209 |
| M2 (refinado) | exang | 1.290813 | 1 | 1.136 |
| M2 (refinado) | cp | 1.242084 | 3 | 1.037 |
| M2 (refinado) | restecg | 1.459774 | 2 | 1.099 |
| M2 (refinado) | slope | 1.554907 | 2 | 1.117 |
| M2 (refinado) | ca | 1.266072 | 1 | 1.125 |
| M2 (refinado) | thal | 1.649478 | 2 | 1.133 |
| M2 (refinado) | oldpeak | 1.257382 | 1 | 1.121 |
| M2 (refinado) | fbs | 1.153218 | 1 | 1.074 |
| M2 (refinado) | age_centered:sex | 5.199054 | 1 | 2.280 |
| Variable | OR | IC_low | IC_high | p_value | Modelo |
|---|---|---|---|---|---|
| ca | 3.4069789 | 2.5457670 | 4.6924934 | 0.0000000 | M1 (base) |
| cpatypical angina | 0.2005746 | 0.1071557 | 0.3647627 | 0.0000002 | M1 (base) |
| cpnon-anginal | 0.2866549 | 0.1736190 | 0.4695856 | 0.0000008 | M1 (base) |
| exangTRUE | 2.6721616 | 1.6748190 | 4.2826070 | 0.0000396 | M1 (base) |
| oldpeak | 1.5786803 | 1.1959787 | 2.0885760 | 0.0013022 | M1 (base) |
| thalnormal | 0.4066968 | 0.2184993 | 0.7504033 | 0.0041949 | M1 (base) |
| cptypical angina | 0.3322020 | 0.1516389 | 0.7177357 | 0.0052654 | M1 (base) |
| sexMale | 2.0936641 | 1.1924781 | 3.7114847 | 0.0105800 | M1 (base) |
| slopeupsloping | 0.4464345 | 0.1976237 | 0.9936717 | 0.0498684 | M1 (base) |
| chol | 0.9970031 | 0.9939898 | 0.9999964 | 0.0504362 | M1 (base) |
| restecgnormal | 0.6978540 | 0.4044720 | 1.1968672 | 0.1928705 | M1 (base) |
| slopeflat | 1.5901913 | 0.7704838 | 3.2278707 | 0.2031840 | M1 (base) |
| thalreversable defect | 1.4153573 | 0.8187264 | 2.4448800 | 0.2124975 | M1 (base) |
| thalch | 0.9971570 | 0.9876018 | 1.0068361 | 0.5622781 | M1 (base) |
| trestbps | 1.0035781 | 0.9906693 | 1.0166919 | 0.5885920 | M1 (base) |
| age | 1.0015313 | 0.9762432 | 1.0274631 | 0.9064648 | M1 (base) |
| (Intercept) | 0.8487479 | 0.0522466 | 13.8018885 | 0.9080704 | M1 (base) |
| fbsTRUE | 0.9866985 | 0.5439927 | 1.7934501 | 0.9648461 | M1 (base) |
| restecgst-t abnormality | 0.9967554 | 0.4991288 | 1.9834858 | 0.9926205 | M1 (base) |
| ca | 3.2410691 | 2.4299629 | 4.4494003 | 0.0000000 | M2 (refinado) |
| cpatypical angina | 0.2026317 | 0.1080732 | 0.3694193 | 0.0000003 | M2 (refinado) |
| cpnon-anginal | 0.2810466 | 0.1695546 | 0.4619542 | 0.0000007 | M2 (refinado) |
| exangTRUE | 2.7540783 | 1.7227067 | 4.4240873 | 0.0000248 | M2 (refinado) |
| oldpeak | 1.5866898 | 1.2000794 | 2.1027906 | 0.0012306 | M2 (refinado) |
| thalnormal | 0.3776292 | 0.2008614 | 0.7027363 | 0.0022625 | M2 (refinado) |
| log_chol | 0.4421542 | 0.2537213 | 0.7612254 | 0.0035261 | M2 (refinado) |
| cptypical angina | 0.3378902 | 0.1542367 | 0.7305946 | 0.0060337 | M2 (refinado) |
| sexMale | 1.9827671 | 1.1221297 | 3.5357610 | 0.0191364 | M2 (refinado) |
| (Intercept) | 35.5097234 | 0.9807950 | 1374.6928973 | 0.0529659 | M2 (refinado) |
| slopeupsloping | 0.4532087 | 0.1993394 | 1.0160300 | 0.0563621 | M2 (refinado) |
| restecgnormal | 0.6491192 | 0.3746853 | 1.1171576 | 0.1203245 | M2 (refinado) |
| slopeflat | 1.6442983 | 0.7939103 | 3.3525646 | 0.1748822 | M2 (refinado) |
| thalreversable defect | 1.3676926 | 0.7903655 | 2.3643713 | 0.2618634 | M2 (refinado) |
| age_centered:sexMale | 0.9694561 | 0.9176808 | 1.0233897 | 0.2632675 | M2 (refinado) |
| age_centered | 1.0261578 | 0.9769891 | 1.0784245 | 0.3035386 | M2 (refinado) |
| trestbps | 1.0039370 | 0.9909705 | 1.0171188 | 0.5535862 | M2 (refinado) |
| thalch | 0.9978477 | 0.9882051 | 1.0076261 | 0.6638362 | M2 (refinado) |
| restecgst-t abnormality | 0.8941366 | 0.4440640 | 1.7922049 | 0.7528254 | M2 (refinado) |
| fbsTRUE | 1.0251806 | 0.5649173 | 1.8647692 | 0.9348288 | M2 (refinado) |
| Variable | OR_M1 | OR_M2 |
|---|---|---|
| ca | 3.4069789 | 3.2410691 |
| cpatypical angina | 0.2005746 | 0.2026317 |
| cpnon-anginal | 0.2866549 | 0.2810466 |
| exangTRUE | 2.6721616 | 2.7540783 |
| oldpeak | 1.5786803 | 1.5866898 |
| thalnormal | 0.4066968 | 0.3776292 |
| cptypical angina | 0.3322020 | 0.3378902 |
| sexMale | 2.0936641 | 1.9827671 |
| slopeupsloping | 0.4464345 | 0.4532087 |
| chol | 0.9970031 | NA |
| restecgnormal | 0.6978540 | 0.6491192 |
| slopeflat | 1.5901913 | 1.6442983 |
| thalreversable defect | 1.4153573 | 1.3676926 |
| thalch | 0.9971570 | 0.9978477 |
| trestbps | 1.0035781 | 1.0039370 |
| age | 1.0015313 | NA |
| (Intercept) | 0.8487479 | 35.5097234 |
| fbsTRUE | 0.9866985 | 1.0251806 |
| restecgst-t abnormality | 0.9967554 | 0.8941366 |
| log_chol | NA | 0.4421542 |
| age_centered:sexMale | NA | 0.9694561 |
| age_centered | NA | 1.0261578 |
Conclusión: M2 es un refinamiento con mejor ajuste y mantiene la capacidad predictiva, aunque la ganancia es modesta.
age_centered y la interacción
age_centered:sex muestran GVIF ajustados elevados (~2.3) →
cierta tensión en edad e interacción.Conclusión: El refinamiento introduce correlación en edad e interacción, pero sigue dentro de márgenes aceptables (<5).
Conclusión: Los predictores más robustos y clínicamente relevantes son ca, exang, oldpeak, cp, thal normal y sexo masculino.
age_centered:sex no resulta
significativa.En resumen: M2 es un refinamiento válido y ligeramente superior, con los mismos predictores clínicamente relevantes y un mejor manejo del colesterol.
Conclusión: M2 es preferible por su ajuste más eficiente y su capacidad predictiva equivalente.
age_centered y
age_centered:sex muestran GVIF ajustados elevados (~2.3) →
correlación moderada, pero aceptable.Conclusión: No hay multicolinealidad crítica. El refinamiento introduce correlación en edad e interacción, pero dentro de márgenes seguros.
Incrementan el riesgo: - ca (vasos coloreados): OR > 3 → fuerte incremento del riesgo cardiovascular. - exangTRUE (angina inducida por ejercicio): OR ~2.7 → dobla el riesgo. - oldpeak (depresión ST): OR ~1.58 → riesgo creciente con mayor depresión. - sexMale: OR ~2.0 → mayor riesgo en hombres.
Protegen frente al riesgo: - cp (dolor torácico): - atypical angina: OR ~0.20 - non-anginal: OR ~0.28 - typical angina: OR ~0.33 - thalnormal: OR ~0.38 → protector claro. - log_chol (solo en M2): OR ~0.44 → efecto protector del colesterol log-transformado.
Conclusión: Los predictores clínicamente
robustos y estables son:
ca, exangTRUE,
oldpeak, cp,
thalnormal, sexMale, y
log_chol (en M2).
log_chol en M2 mejora la significancia respecto a
chol en M1.age_centered:sex no aporta valor
predictivo.Este análisis respalda el uso de M2 como modelo clínico más claro, robusto y eficiente.
El modelo logístico desarrollado tiene como objetivo predecir
la presencia de enfermedad cardíaca en pacientes, a partir de
variables clínicas y de pruebas diagnósticas.
La variable dependiente es binaria (presencia vs ausencia de
enfermedad), lo que permite estimar la probabilidad de riesgo
individual.
log_chol y centrado de edad, mejorando la significancia de
algunos predictores.log_chol mejora la significancia del colesterol como
predictor.age_centered:sex no resultó significativa.Las curvas ROC muestran la capacidad de cada modelo para distinguir correctamente entre pacientes con y sin enfermedad cardíaca, evaluando su rendimiento en términos de: - Sensibilidad (verdaderos positivos). - Especificidad (verdaderos negativos).
Una curva más alejada de la diagonal indica mejor
discriminación.
La línea diagonal representa un modelo sin capacidad predictiva (AUC
= 0.5).
| Indicador | M1 (base) | M2 (refinado) | Interpretación |
|---|---|---|---|
| AIC | 665.600 | 662.130 | M2 tiene menor AIC → mejor ajuste penalizado por complejidad. |
| Pseudo‑R² (McFadden) | 0.504 | 0.508 | M2 explica ligeramente más variabilidad en el modelo. |
| AUC (ROC) | 0.928 | 0.929 | Ambos modelos tienen excelente discriminación (>0.92). M2 mejora marginalmente. |
La curva ROC respalda el uso de M2 como modelo clínico refinado, sin pérdida de poder predictivo.