JuveYell

Preliminares

Para este ejercicio, 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:

Estructura del dataframe

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  17 variables:
##  $ X       : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ id      : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ 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
id Identificador único del paciente
age Edad del paciente en años
sex Género del paciente (Male/Female)
dataset Fuente del registro (Cleveland, Hungary, etc.)
cp Tipo de dolor de pecho
trestbps Presión arterial en reposo (mm Hg)
chol Colesterol sérico (mg/dl)
fbs Azúcar en sangre en ayunas > 120 mg/dl
restecg Resultado del electrocardiograma en reposo
thalch Frecuencia cardíaca máxima alcanzada
exang Angina inducida por ejercicio
oldpeak Depresión del ST inducida por ejercicio
slope Pendiente del segmento ST
ca Número de vasos principales coloreados por fluoroscopia
thal Resultado de la prueba de talio
num Diagnóstico de enfermedad cardíaca (0–4)

Se muestran las primeras observaciones de la tabla:

X id age sex dataset cp trestbps chol fbs restecg thalch exang oldpeak slope ca thal num
1 1 63 Male Cleveland typical angina 145.000 233 TRUE lv hypertrophy 150 FALSE 1.9826 downsloping 0 fixed defect 0
2 2 67 Male Cleveland asymptomatic 159.652 286 FALSE lv hypertrophy 108 TRUE 1.5000 flat 3 normal 2
3 3 67 Male Cleveland asymptomatic 120.000 229 FALSE lv hypertrophy 129 TRUE 1.9826 flat 2 reversable defect 1
4 4 37 Male Cleveland non-anginal 130.000 250 FALSE normal 187 FALSE 1.9826 downsloping 0 normal 0
5 5 41 Female Cleveland atypical angina 130.000 204 FALSE lv hypertrophy 172 FALSE 1.4000 upsloping 0 normal 0
6 6 56 Male Cleveland atypical angina 120.000 236 FALSE normal 178 FALSE 0.8000 upsloping 0 normal 0

Vamos a realizar el resumen numérico de cada variable del dataframe:

## Error in table(names(candidates))[["tested"]]: subíndice fuera de  los límites

Descriptive Statistics

N: 920
age chol oldpeak thalch trestbps
Mean 53.51 214.84 0.77 136.81 131.59
Std.Dev 9.42 76.70 0.83 25.41 16.24
Min 28.00 86.60 -0.98 82.66 100.35
Q1 47.00 177.00 0.00 119.00 120.00
Median 54.00 223.00 0.50 139.00 130.00
Q3 60.00 269.00 1.55 156.00 140.00
Max 77.00 359.40 1.98 195.34 159.65
MAD 9.64 68.20 0.74 28.17 14.83
IQR 13.00 92.00 1.52 37.00 20.00
CV 0.18 0.36 1.08 0.19 0.12
Skewness -0.20 -0.36 0.31 -0.09 0.14
SE.Skewness 0.08 0.08 0.08 0.08 0.08
Kurtosis -0.39 -0.67 -1.44 -0.72 -0.82
N.Valid 920 920 920 920 920
N 920 920 920 920 920
Pct.Valid 100.00 100.00 100.00 100.00 100.00

Generated by summarytools 1.1.4 (R version 4.5.1)
2025-11-11

De la tabla anterior, podemos obtener lo siguiente:

Análisis detallado de variables numéricas del dataset heart

Variable Media_Mediana Rango_IQR Variabilidad Forma_Distribucion Observaciones
age Media: 53.51, Mediana: 56 → distribución ligeramente sesgada a la izquierda Rango: 47–60, IQR: 13 → dispersión moderada CV: 0.18 → baja variabilidad relativa Skewness: -0.20, Kurtosis: -0.39 → distribución casi simétrica, menos concentración en la media Distribución centrada en adultos de edad media. No hay extremos clínicamente preocupantes.
chol Media: 214.84, Mediana: 223 → leve sesgo negativo Rango: 177–269, IQR: 92 → alta dispersión con valores extremos CV: 0.36 → variabilidad alta Skewness: -0.36, Kurtosis: -0.67 → leve sesgo negativo, distribución más plana Colesterol moderado en promedio, pero con amplia dispersión. Revisar valores extremos.
oldpeak Media: 0.77, Mediana: 0.50 → fuerte sesgo positivo Rango: 0.00–1.55, IQR: 1.52 → dispersión alta con acumulación en cero CV: 1.08 → variabilidad extrema Skewness: 0.31, Kurtosis: -1.44 → leve sesgo positivo, distribución muy plana La mayoría de los pacientes no presenta depresión ST, pero algunos tienen valores elevados.
thalach Media: 136.81, Mediana: 139 → leve sesgo negativo Rango: 119–156, IQR: 37 → buena dispersión CV: 0.19 → variabilidad moderada Skewness: -0.09, Kurtosis: -0.72 → casi simétrica, leve concentración en la media Frecuencia cardíaca dentro de rangos funcionales, con algunos pacientes por debajo del promedio.
trestbps Media: 131.59, Mediana: 130 → leve sesgo positivo Rango: 120–140, IQR: 20 → dispersión moderada CV: 0.12 → baja variabilidad Skewness: 0.14, Kurtosis: -0.82 → leve sesgo positivo, distribución más plana Presión arterial en reposo ligeramente elevada en promedio, con casos que podrían indicar hipertensión.

Gráficas y análisis por variables

Variable Edad (age)

Se puede observar que hay una distribución centrada en adultos de edad media, con leve sesgo negativo. Dispersión moderada y sin valores extremos clínicamente preocupantes.

Variable: Colesterol (chol)

Se puede observar que la variable Colesterol tiene amplia dispersión y valores extremos con un leve sesgo negativo, pero clínicamente relevante por los valores altos.

Variable: Depresión ST (oldpeak)

Se puede observar que la variable tiene una fuerte dispersión con acumulación en cero, tiene un sesgo positivo y valores clínicamente relevantes en el extremo superior.

Variable Frecuencia cardíaca máxima (thalch)

Se puede observar que la variable tiene una distribución casi simétrica, con buena dispersión. Algunos pacientes presentan valores bajos que podrían indicar baja capacidad funcional.

Variable Presión arterial en reposo (trestbps)

Se puede observar que la variable un leve sesgo positivo, con valores elevados que podrían indicar hipertensión, con dispersión moderada y concentración en la media.

Resumen de variables categóricas

La función dfSummary() del paquete summarytools genera un resumen completo y visualmente atractivo de todas las variables en un data frame, incluyendo estadísticas, tipos de datos, valores únicos, valores faltantes y gráficos embebidos.

Data Frame Summary

heart_limpio

Dimensions: 920 x 15
Duplicates: 0
Variable Stats / Values Freqs (% of Valid) Graph Missing
age [integer]
Mean (sd) : 53.5 (9.4)
min ≤ med ≤ max:
28 ≤ 54 ≤ 77
IQR (CV) : 13 (0.2)
50 distinct values 0 (0.0%)
sex [factor]
1. Female
2. Male
194(21.1%)
726(78.9%)
0 (0.0%)
dataset [factor]
1. Cleveland
2. Hungary
3. Switzerland
4. VA Long Beach
304(33.0%)
293(31.8%)
123(13.4%)
200(21.7%)
0 (0.0%)
cp [factor]
1. asymptomatic
2. atypical angina
3. non-anginal
4. typical angina
496(53.9%)
174(18.9%)
204(22.2%)
46(5.0%)
0 (0.0%)
trestbps [numeric]
Mean (sd) : 131.6 (16.2)
min ≤ med ≤ max:
100.3 ≤ 130 ≤ 159.7
IQR (CV) : 20 (0.1)
43 distinct values 0 (0.0%)
chol [numeric]
Mean (sd) : 214.8 (76.7)
min ≤ med ≤ max:
86.6 ≤ 223 ≤ 359.4
IQR (CV) : 92 (0.4)
195 distinct values 0 (0.0%)
fbs [factor]
1. FALSE
2. TRUE
769(83.6%)
151(16.4%)
0 (0.0%)
restecg [factor]
1. lv hypertrophy
2. normal
3. st-t abnormality
188(20.4%)
553(60.1%)
179(19.5%)
0 (0.0%)
thalch [numeric]
Mean (sd) : 136.8 (25.4)
min ≤ med ≤ max:
82.7 ≤ 139 ≤ 195.3
IQR (CV) : 37 (0.2)
108 distinct values 0 (0.0%)
exang [factor]
1. FALSE
2. TRUE
548(59.6%)
372(40.4%)
0 (0.0%)
oldpeak [numeric]
Mean (sd) : 0.8 (0.8)
min ≤ med ≤ max:
-1 ≤ 0.5 ≤ 2
IQR (CV) : 1.5 (1.1)
27 distinct values 0 (0.0%)
slope [factor]
1. downsloping
2. flat
3. upsloping
89(9.7%)
502(54.6%)
329(35.8%)
0 (0.0%)
ca [factor]
1. 0
2. 1
3. 2
4. 3
581(63.2%)
102(11.1%)
155(16.8%)
82(8.9%)
0 (0.0%)
thal [factor]
1. fixed defect
2. normal
3. reversable defect
205(22.3%)
316(34.3%)
399(43.4%)
0 (0.0%)
num [factor]
1. 0
2. 1
3. 2
4. 3
5. 4
411(44.7%)
265(28.8%)
109(11.8%)
107(11.6%)
28(3.0%)
0 (0.0%)

Generated by summarytools 1.1.4 (R version 4.5.1)
2025-11-11

De esta tabla, se puede indicar lo siguiente:
Variable Categorías Observaciones
sex Female: 21.1%, Male: 78.9% Distribución sesgada hacia hombres, importante para análisis por sexo.
dataset Cleveland: 33%, Hungary: 31.8%, Switzerland: 13.4%, VA: 21.7% Datos provienen de cuatro fuentes, útil para análisis por centro.
cp Asymptomatic: 53.9%, Atypical angina: 18.9%, Non-anginal: 22.2%, Typical angina: 5% Mayoría asintomática, relevante para diagnóstico clínico.
fbs FALSE: 83.6%, TRUE: 16.4% La mayoría no tiene azúcar en ayunas elevada.
restecg Normal: 60.1%, LV hypertrophy: 20.4%, ST-T abnormality: 19.5% Predominio de ECG normal, pero con presencia de anomalías.
exang FALSE: 59.6%, TRUE: 40.4% 40% presentan angina inducida por ejercicio.
slope Flat: 54.6%, Upsloping: 35.8%, Downsloping: 9.7% Predominio de pendiente plana, relevante para esfuerzo cardíaco.
ca 0: 63.2%, 1: 11.1%, 2: 16.8%, 3: 8.9% Mayoría sin vasos coloreados, pero presencia de obstrucciones.
thal Reversable defect: 43.4%, Normal: 34.3%, Fixed defect: 22.3% Distribución equilibrada entre tipos de defecto.
num 0: 44.7%, 1: 28.8%, 2: 11.8%, 3: 11.6%, 4: 3% Distribución escalonada de severidad de enfermedad cardíaca.

Vamos ahora a obtener las tablas de frecuencia, para las variables categóricas:

Tablas de frecuencia

Frecuencia de: sex

Frequencies
.y
Type: Factor

Freq % Valid % Valid Cum. % Total % Total Cum.
Female 194 21.09 21.09 21.09 21.09
Male 726 78.91 100.00 78.91 100.00
0 0.00 100.00
Total 920 100.00 100.00 100.00 100.00

Frecuencia de: dataset

Frequencies
.y
Type: Factor

Freq % Valid % Valid Cum. % Total % Total Cum.
Cleveland 304 33.04 33.04 33.04 33.04
Hungary 293 31.85 64.89 31.85 64.89
Switzerland 123 13.37 78.26 13.37 78.26
VA Long Beach 200 21.74 100.00 21.74 100.00
0 0.00 100.00
Total 920 100.00 100.00 100.00 100.00

Frecuencia de: cp

Frequencies
.y
Type: Factor

Freq % Valid % Valid Cum. % Total % Total Cum.
asymptomatic 496 53.91 53.91 53.91 53.91
atypical angina 174 18.91 72.83 18.91 72.83
non-anginal 204 22.17 95.00 22.17 95.00
typical angina 46 5.00 100.00 5.00 100.00
0 0.00 100.00
Total 920 100.00 100.00 100.00 100.00

Frecuencia de: fbs

Frequencies
.y
Type: Factor

Freq % Valid % Valid Cum. % Total % Total Cum.
FALSE 769 83.59 83.59 83.59 83.59
TRUE 151 16.41 100.00 16.41 100.00
0 0.00 100.00
Total 920 100.00 100.00 100.00 100.00

Frecuencia de: restecg

Frequencies
.y
Type: Factor

Freq % Valid % Valid Cum. % Total % Total Cum.
lv hypertrophy 188 20.43 20.43 20.43 20.43
normal 553 60.11 80.54 60.11 80.54
st-t abnormality 179 19.46 100.00 19.46 100.00
0 0.00 100.00
Total 920 100.00 100.00 100.00 100.00

Frecuencia de: exang

Frequencies
.y
Type: Factor

Freq % Valid % Valid Cum. % Total % Total Cum.
FALSE 548 59.57 59.57 59.57 59.57
TRUE 372 40.43 100.00 40.43 100.00
0 0.00 100.00
Total 920 100.00 100.00 100.00 100.00

Frecuencia de: slope

Frequencies
.y
Type: Factor

Freq % Valid % Valid Cum. % Total % Total Cum.
downsloping 89 9.67 9.67 9.67 9.67
flat 502 54.57 64.24 54.57 64.24
upsloping 329 35.76 100.00 35.76 100.00
0 0.00 100.00
Total 920 100.00 100.00 100.00 100.00

Frecuencia de: ca

Frequencies
.y
Type: Factor

Freq % Valid % Valid Cum. % Total % Total Cum.
0 581 63.15 63.15 63.15 63.15
1 102 11.09 74.24 11.09 74.24
2 155 16.85 91.09 16.85 91.09
3 82 8.91 100.00 8.91 100.00
0 0.00 100.00
Total 920 100.00 100.00 100.00 100.00

Frecuencia de: thal

Frequencies
.y
Type: Factor

Freq % Valid % Valid Cum. % Total % Total Cum.
fixed defect 205 22.28 22.28 22.28 22.28
normal 316 34.35 56.63 34.35 56.63
reversable defect 399 43.37 100.00 43.37 100.00
0 0.00 100.00
Total 920 100.00 100.00 100.00 100.00

Frecuencia de: num

Frequencies
.y
Type: Factor

Freq % Valid % Valid Cum. % Total % Total Cum.
0 411 44.67 44.67 44.67 44.67
1 265 28.80 73.48 28.80 73.48
2 109 11.85 85.33 11.85 85.33
3 107 11.63 96.96 11.63 96.96
4 28 3.04 100.00 3.04 100.00
0 0.00 100.00
Total 920 100.00 100.00 100.00 100.00

Comparaciones entre variables, por sexo y diagnóstico

Variable edad

Variable Colesterol (chol)

Variable Depresión ST (oldpeak)

Frecuencia cardíaca máxima (thalch)

Variable Presión arterial en reposo (trestbps)

Agregaciones visuales que revelan comportamientos interesantes en el dataset HEART

**1. Promedios agrupados por sexo y diagnóstico

Interpretación:

Comparación de promedios por sexo
Variable Mujeres Hombres Interpretación
age Menor promedio Mayor promedio Las mujeres tienden a ser diagnosticadas más jóvenes.
chol Más alto Más bajo Mayor colesterol en mujeres, posible riesgo metabólico.
oldpeak Más bajo Más alto Menor isquemia inducida por ejercicio en mujeres.
thalach Más alto Más bajo Mejor capacidad funcional en mujeres.
trestbps Similar Ligeramente mayor Posible mayor prevalencia de hipertensión en hombres.
Comparación de promedios por diagnóstico
Variable Tendencia Interpretación
age Ligeramente creciente Pacientes más graves tienden a ser mayores.
chol Irregular, sin patrón claro El colesterol no discrimina bien entre niveles de diagnóstico.
oldpeak Aumenta con el diagnóstico Mayor isquemia en casos más severos.
thalach Disminuye con el diagnóstico Menor capacidad funcional en pacientes más graves.
trestbps Ligeramente creciente Mayor presión arterial en diagnósticos altos.

2. Boxplots por tipo de dolor de pecho (cp) y angina inducida (exang)

Interpretación:
Frecuencia cardíaca máxima según angina inducida
Grupo Mediana_thalach Dispersión Interpretación
Sin angina inducida (FALSE) Más alta Amplia Mejor capacidad funcional, mayor tolerancia al ejercicio.
Con angina inducida (TRUE) Más baja Estrecha Menor tolerancia al esfuerzo, posible isquemia inducida.
Colesterol según tipo de dolor de pecho
Tipo_dolor Mediana_chol Dispersión Interpretación
Asintomático Más alta Muy amplia Colesterol elevado sin síntomas, posible riesgo silencioso.
Angina atípica Moderada Estrecha Perfil más homogéneo, menos extremos.
No anginoso Similar a atípica Estrecha Colesterol controlado, pero no necesariamente sin riesgo.
Angina típica Más baja Estrecha Menor colesterol, pero con síntomas evidentes de enfermedad cardíaca.

3. Dispersión entre variables numéricas coloreada por diagnóstico

Interpretación:
Relación entre edad y colesterol por diagnóstico
Diagnóstico Patrón_visual Interpretación
0 (sin enfermedad) Dispersos en todo el rango de edad y colesterol Edad y colesterol no predicen ausencia de enfermedad.
1–2 Agrupados en colesterol medio (200–250) Zona de transición entre salud y enfermedad.
3–4 Más frecuentes en colesterol alto (>250) y edad mayor Perfil clínico de mayor riesgo: edad avanzada y colesterol elevado.
Relación entre frecuencia cardíaca y depresión ST por diagnóstico
Diagnóstico Patrón_visual Interpretación
0 (sin enfermedad) Alta thalch, baja oldpeak Buen rendimiento cardíaco, sin signos de isquemia.
1–2 Distribución intermedia Posible deterioro funcional incipiente.
3–4 Baja thalch, alta oldpeak Perfil de alto riesgo: menor capacidad funcional y mayor isquemia.
  • No hay correlación lineal entre edad y colesterol, pero los pacientes con diagnóstico más severo tienden a tener ambos valores elevados.
  • Diagnóstico 0 aparece en todos los rangos, lo que indica que ni edad ni colesterol por sí solos son suficientes para descartar enfermedad.
  • Diagnóstico 4 se concentra en pacientes mayores con colesterol alto, lo que refuerza su valor como marcador de riesgo.
  • A medida que aumenta la depresión ST (oldpeak), disminuye la frecuencia cardíaca máxima (thalch), especialmente en diagnósticos más severos.
  • Diagnóstico 0 se concentra en la zona funcionalmente saludable: alta thalch, baja oldpeak.
  • Diagnóstico 4 se agrupa en la zona de mayor riesgo: baja thalch, alta oldpeak.

Colección de visualizaciones con ggplot para el dataset HEART

DISTRIBUCIONES

Histograma de edad

Interpretación: La mayoría de los pacientes tienen entre 50 y 60 años, lo que indica que la enfermedad cardíaca se concentra en adultos mayores.

Boxplot de colesterol por sexo

Interpretación: Las mujeres presentan una mediana de colesterol más alta y mayor dispersión, lo que puede indicar mayor riesgo metabólico.

RELACIONES

Dispersión: edad vs frecuencia cardíaca máxima

Interpretación: Se observa una ligera tendencia negativa, a mayor edad, menor frecuencia cardíaca máxima alcanzada, lo que refleja deterioro funcional.

Dispersión: colesterol vs oldpeak

Interpretación: No hay una relación clara, pero algunos pacientes con colesterol alto también presentan mayor depresión ST, lo que podría indicar riesgo combinado.

COMPARACIONES

Barras: tipo de dolor de pecho (cp)

Interpretación: La mayoría de los pacientes son asintomáticos, lo que sugiere que muchos casos de enfermedad cardíaca no presentan dolor típico.

Barras: pendiente del segmento ST (slope) por diagnóstico

Interpretación: Los pacientes con pendiente descendente (downsloping) están más asociados a diagnósticos severos, lo que refuerza su valor como indicador clínico.

Conclusiones

El análisis exploratorio del dataset HEART revela patrones clínicamente relevantes que permiten caracterizar perfiles de riesgo cardiovascular en función de diferentes variables: