PROYECTO ANÁLISIS DE ENFERMEDAD CARDIACA
El conjunto de datos que se va a trabajar corresponde a una base
clínica llamada heart.csv, ampliamente utilizada para
el estudio de enfermedad cardiaca en pacientes adultos.
La base contiene información de 918 pacientes y
12 variables relacionadas con factores de riesgo
cardiovascular y hallazgos clínicos, tales como edad, sexo, presión
arterial, colesterol, frecuencia cardiaca máxima, tipo de dolor en el
pecho, resultados de ECG en reposo, presencia de angina de esfuerzo y
depresión del segmento ST, entre otros.
El objetivo principal es analizar cómo estos factores se relacionan con el diagnóstico final de enfermedad cardiaca, representado en la variable HeartDisease (0 = sin enfermedad, 1 = con enfermedad).
| VARIABLE | DESCRIPCIÓN | TIPO | ESCALA DE MEDICIÓN | UNIDAD DE MEDICIÓN |
|---|---|---|---|---|
| Age | Edad del paciente | Cuantitativa | Razón | Años |
| Sex | Sexo del paciente (Hombre / Mujer) | Cualitativa | Nominal | No aplica |
| ChestPainType | Tipo de dolor en el pecho (ATA, NAP, ASY, TA) | Cualitativa | Nominal | No aplica |
| RestingBP | Presión arterial en reposo | Cuantitativa | Razón | mmHg |
| Cholesterol | Colesterol sérico total | Cuantitativa | Razón | mg/dL |
| FastingBS | Glucemia en ayunas > 120 mg/dL (0 = No, 1 = Sí) | Cualitativa dicotómica | Nominal | No aplica |
| RestingECG | Resultado del electrocardiograma en reposo | Cualitativa | Nominal | No aplica |
| MaxHR | Frecuencia cardiaca máxima alcanzada | Cuantitativa | Razón | Latidos/min |
| ExerciseAngina | Presencia de angina inducida por el ejercicio (Y/N) | Cualitativa dicotómica | Nominal | No aplica |
| Oldpeak | Depresión del segmento ST respecto al nivel de reposo | Cuantitativa | Intervalo | mm |
| ST_Slope | Pendiente del segmento ST (Up, Flat, Down) | Cualitativa ordinal | Ordinal | No aplica |
| HeartDisease | Diagnóstico de enfermedad cardiaca (0 = No, 1 = Sí) | Cualitativa dicotómica | Nominal | No aplica |
PROYECTO ANÁLISIS DE ENFERMEDAD CARDIACA
Age Sex ChestPainType RestingBP
Min. :28.00 Length:918 Length:918 Min. : 0.0
1st Qu.:47.00 Class :character Class :character 1st Qu.:120.0
Median :54.00 Mode :character Mode :character Median :130.0
Mean :53.51 Mean :132.4
3rd Qu.:60.00 3rd Qu.:140.0
Max. :77.00 Max. :200.0
Cholesterol FastingBS RestingECG MaxHR
Min. : 0.0 Min. :0.0000 Length:918 Min. : 60.0
1st Qu.:173.2 1st Qu.:0.0000 Class :character 1st Qu.:120.0
Median :223.0 Median :0.0000 Mode :character Median :138.0
Mean :198.8 Mean :0.2331 Mean :136.8
3rd Qu.:267.0 3rd Qu.:0.0000 3rd Qu.:156.0
Max. :603.0 Max. :1.0000 Max. :202.0
ExerciseAngina Oldpeak ST_Slope HeartDisease
Length:918 Min. :-2.6000 Length:918 Min. :0.0000
Class :character 1st Qu.: 0.0000 Class :character 1st Qu.:0.0000
Mode :character Median : 0.6000 Mode :character Median :1.0000
Mean : 0.8874 Mean :0.5534
3rd Qu.: 1.5000 3rd Qu.:1.0000
Max. : 6.2000 Max. :1.0000
### grafico distribucion
PROYECTO ANÁLISIS DE ENFERMEDAD CARDIACA
PROYECTO ANÁLISIS DE ENFERMEDAD CARDIACA
* El modelo ajustado fue:
\[
\text{Cholesterol} = 257.93 - 1.10 \times \text{Age}
\]
Pendiente (-1.10):
Indica que por cada año adicional de edad, el
colesterol total disminuye en promedio aproximadamente
1.10 mg/dL.
La magnitud es pequeña, por lo que la relación lineal entre la edad y el
colesterol es débil.
Intercepto (257.93):
Representa el valor estimado del colesterol cuando la edad es 0
años.
Aunque no tiene un significado clínico real (nadie tiene 0 años en la
base), sirve como punto de referencia matemático para la ecuación de la
recta.
PROYECTO ANÁLISIS DE ENFERMEDAD CARDIACA
0 1
F 143 50
M 267 458
Eso muestra cuántos pacientes hay en cada combinación:
La tabla cruzada muestra la relación entre el sexo y la presencia de enfermedad cardiaca. En general, se observa que: En el grupo de hombres, la cantidad de pacientes con enfermedad cardiaca suele ser mayor que la de pacientes sin enfermedad. En el grupo de mujeres, la proporción de no enfermedad suele ser más alta o más equilibrada frente a los casos con enfermedad. Esto sugiere que, en esta base de datos, el sexo masculino presenta una mayor carga de enfermedad cardiaca, lo cual es consistente con lo que se reporta en muchos estudios clínicos sobre riesgo cardiovascular.
PROYECTO ANÁLISIS DE ENFERMEDAD CARDIACA
### Interpretación
El diagrama de barras apiladas muestra la relación entre el tipo de dolor en el pecho y la presencia de enfermedad cardiaca:
En conjunto, la gráfica sugiere que el tipo de dolor en el pecho está relacionado con el riesgo de enfermedad cardiaca y que ser asintomático no significa necesariamente estar sano. ```
Debido a la ausencia de una serie temporal o de registros secuenciales, no es posible aplicar modelos de pronóstico en el tiempo (como ARIMA, Holt-Winters o redes neuronales recurrentes), ya que estos requieren observar tendencias, estacionalidad o variaciones temporales para poder predecir valores futuros. En este caso, el análisis es principalmente descriptivo y de asociación, más que de predicción temporal.
CONCLUSIONES
Los resultados evidencian que variables clínicas como la presión arterial en reposo, el colesterol, la frecuencia cardiaca máxima y la depresión del segmento ST (Oldpeak) se relacionan de forma importante con la presencia de enfermedad cardiaca.
Variables demográficas como la edad y el *sexo, combinadas con los hallazgos clínicos, permiten caracterizar mejor el **perfil de riesgo cardiovascular* de los pacientes.
Se observaron patrones en los cuales ciertos tipos de dolor en el pecho, especialmente los pacientes asintomáticos (ASY), concentran una proporción elevada de casos con enfermedad, mostrando que la falta de síntomas típicos no garantiza un corazón sano.
El cruce entre sexo y enfermedad cardiaca sugiere que los hombres presentan una mayor carga de enfermedad en esta base de datos, lo cual coincide con múltiples estudios epidemiológicos sobre riesgo cardiovascular.
Aunque la base heart.csv no permite hacer pronósticos en el tiempo, la combinación de variables cualitativas (síntomas, resultados de pruebas) y cuantitativas (presión arterial, colesterol, edad, frecuencia cardiaca) ofrece una visión completa del estado cardiaco actual, y sirve como punto de partida para estrategias de prevención y detección temprana.
---
title: "Dashboard"
author: "Manuela Rincón Maldonado, Ana Sofía Figueroa Ledezma"
date: "2025-11-13"
output:
flexdashboard::flex_dashboard:
orientation: rows
social: menu
source_code: embed
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(dplyr)
library(ggplot2)
```
Información de los datos
====================================================================================
<div style="text-align: center; font-size: 28px; font-weight: bold; margin-top: 2px;">
PROYECTO ANÁLISIS DE ENFERMEDAD CARDIACA
</div>
Row
------------------------------------------------------------------------------------
### **Descripción de los datos**
El conjunto de datos que se va a trabajar corresponde a una base clínica llamada **heart.csv**, ampliamente utilizada para el estudio de enfermedad cardiaca en pacientes adultos.
La base contiene información de **918 pacientes** y **12 variables** relacionadas con factores de riesgo cardiovascular y hallazgos clínicos, tales como edad, sexo, presión arterial, colesterol, frecuencia cardiaca máxima, tipo de dolor en el pecho, resultados de ECG en reposo, presencia de angina de esfuerzo y depresión del segmento ST, entre otros.
El objetivo principal es analizar cómo estos factores se relacionan con el diagnóstico final de enfermedad cardiaca, representado en la variable **HeartDisease (0 = sin enfermedad, 1 = con enfermedad)**.
### **Enfermedad cardiaca**

Row
------------------------------------------------------------------------------------
### **descripcion de los datos**
| **VARIABLE** | **DESCRIPCIÓN** | **TIPO** | **ESCALA DE MEDICIÓN** | **UNIDAD DE MEDICIÓN** |
| -------------- | ----------------------------------------------------- | ---------------------- | ---------------------- | ---------------------- |
| Age | Edad del paciente | Cuantitativa | Razón | Años |
| Sex | Sexo del paciente (Hombre / Mujer) | Cualitativa | Nominal | No aplica |
| ChestPainType | Tipo de dolor en el pecho (ATA, NAP, ASY, TA) | Cualitativa | Nominal | No aplica |
| RestingBP | Presión arterial en reposo | Cuantitativa | Razón | mmHg |
| Cholesterol | Colesterol sérico total | Cuantitativa | Razón | mg/dL |
| FastingBS | Glucemia en ayunas > 120 mg/dL (0 = No, 1 = Sí) | Cualitativa dicotómica | Nominal | No aplica |
| RestingECG | Resultado del electrocardiograma en reposo | Cualitativa | Nominal | No aplica |
| MaxHR | Frecuencia cardiaca máxima alcanzada | Cuantitativa | Razón | Latidos/min |
| ExerciseAngina | Presencia de angina inducida por el ejercicio (Y/N) | Cualitativa dicotómica | Nominal | No aplica |
| Oldpeak | Depresión del segmento ST respecto al nivel de reposo | Cuantitativa | Intervalo | mm |
| ST_Slope | Pendiente del segmento ST (Up, Flat, Down) | Cualitativa ordinal | Ordinal | No aplica |
| HeartDisease | Diagnóstico de enfermedad cardiaca (0 = No, 1 = Sí) | Cualitativa dicotómica | Nominal | No aplica |
Análisis descriptivos
====================================================================================
<div style="text-align: center; font-size: 28px; font-weight: bold; margin-top: 2px;">
PROYECTO ANÁLISIS DE ENFERMEDAD CARDIACA
</div>
Row
------------------------------------------------------------------------------------
### **Summary**
```{r summary, echo=FALSE}
heart <- read.csv("heart.csv", stringsAsFactors = FALSE)
summary(heart)
```
row
-----------------------------
### **graficos distribucion edad**
```{r, echo=FALSE}
library(dplyr)
library(ggplot2)
ggplot(heart, aes(x = Age)) +
geom_histogram(bins = 20, fill = "skyblue", color = "black") +
labs(
x = "Edad (años)",
y = "Frecuencia",
title = "Distribución de la edad de los pacientes"
)
```
### **grafico distribucion**
```{r piechart_target, echo=FALSE}
library(dplyr)
library(ggplot2)
estado_data <- heart %>%
mutate(HeartDisease = factor(HeartDisease,
levels = c(0, 1),
labels = c("No enfermedad", "Enfermedad"))) %>%
group_by(HeartDisease) %>%
summarise(count = n()) %>%
mutate(
prop = count / sum(count),
label = paste0(HeartDisease, " (", round(prop * 100, 1), "%)")
)
ggplot(estado_data, aes(x = "", y = prop, fill = HeartDisease)) +
geom_col(color = "white") +
coord_polar(theta = "y") +
labs(fill = "Estado cardiaco") +
geom_text(aes(label = label), position = position_stack(vjust = 0.5)) +
scale_fill_manual(values = c("No enfermedad" = "turquoise3",
"Enfermedad" = "salmon")) +
theme_void()
```
analisis descriptivo3
====================================================================================
<div style="text-align: center; font-size: 28px; font-weight: bold; margin-top: 2px;">
PROYECTO ANÁLISIS DE ENFERMEDAD CARDIACA
</div>
row
-------------------
```{r g2, echo=FALSE}
ggplot(heart, aes(y = RestingBP)) +
geom_boxplot(fill = "lightblue", color = "black") +
labs(
title = "Distribución de la presión arterial en reposo",
y = "Presión arterial en reposo (mmHg)"
)
```
```{r g3, echo=FALSE}
ggplot(heart, aes(y = Cholesterol)) +
geom_boxplot(fill = "lightgreen", color = "black") +
labs(
title = "Distribución del colesterol",
y = "Colesterol (mg/dL)"
)
```
row
--------------------
```{r g4, echo=FALSE}
ggplot(heart, aes(y = MaxHR)) +
geom_boxplot(fill = "lightpink", color = "black") +
labs(
title = "Distribución de la frecuencia cardiaca máxima",
y = "Frecuencia cardiaca máxima (latidos/min)"
)
```
```{r g5, echo=FALSE}
ggplot(heart, aes(y = Oldpeak)) +
geom_boxplot(fill = "purple", color = "black") +
labs(
title = "Distribución de Oldpeak (depresión del ST)",
y = "Oldpeak (mm)"
)
```
analisis descriptivo 2
====================================================================================
<div style="text-align: center; font-size: 28px; font-weight: bold; margin-top: 2px;">
PROYECTO ANÁLISIS DE ENFERMEDAD CARDIACA
</div>
### **matriz correlacion**
```{r matriz_cor, echo=FALSE}
# Seleccionamos solo variables numéricas de interés
base_num <- heart[, c("Age", "RestingBP", "Cholesterol",
"MaxHR", "Oldpeak")]
matriz_cor <- cor(base_num, use = "complete.obs", method = "pearson")
# round(matriz_cor, 2)
if (!require(corrplot)) install.packages("corrplot")
library(corrplot)
corrplot(matriz_cor, method = "color", addCoef.col = "black",
tl.col = "black", tl.srt = 45)
```
row
-----------------------------------
```{r grafico_age_chol, echo=FALSE}
ggplot(heart, aes(x = Age, y = Cholesterol)) +
geom_point(color = "steelblue", alpha = 0.6) +
geom_smooth(method = "lm", color = "red", se = TRUE) +
labs(
title = "Diagrama de dispersión entre Edad y Colesterol",
x = "Edad (años)",
y = "Colesterol (mg/dL)"
) +
theme_minimal()
```
* El modelo ajustado fue:
\[
\text{Cholesterol} = 257.93 - 1.10 \times \text{Age}
\]
* **Pendiente (-1.10):**
Indica que por **cada año adicional de edad**, el **colesterol total** disminuye en promedio aproximadamente **1.10 mg/dL**.
La magnitud es pequeña, por lo que la relación lineal entre la edad y el colesterol es **débil**.
* **Intercepto (257.93):**
Representa el valor estimado del colesterol cuando la edad es 0 años.
Aunque no tiene un significado clínico real (nadie tiene 0 años en la base), sirve como punto de referencia matemático para la ecuación de la recta.
Gráfico 1
====================================================================================
<div style="text-align: center; font-size: 28px; font-weight: bold; margin-top: 2px;">
PROYECTO ANÁLISIS DE ENFERMEDAD CARDIACA
</div>
Row
----------------------------
### **Diagrama de cajas por grupos**
```{r grafico1, echo=FALSE}
ggplot(heart,
aes(x = Sex, y = Cholesterol)) +
geom_boxplot(fill = "skyblue", color = "darkblue", alpha = 1) +
labs(
title = "Colesterol según sexo",
x = "Sexo",
y = "Colesterol (mg/dL)"
) +
theme_minimal()
```
row
------------------------------------
### **toma de variables cualitativas**
```{r tabla_cualitativas, echo=FALSE}
table(heart$Sex, heart$HeartDisease)
```
Eso muestra cuántos pacientes hay en cada combinación:
- Hombre / No enfermedad
- Hombre / Enfermedad
- Mujer / No enfermedad
- Mujer / Enfermedad
### **interpretacion**
La tabla cruzada muestra la relación entre el sexo y la presencia de enfermedad cardiaca.
En general, se observa que:
En el grupo de hombres, la cantidad de pacientes con enfermedad cardiaca suele ser mayor que la de pacientes sin enfermedad.
En el grupo de mujeres, la proporción de no enfermedad suele ser más alta o más equilibrada frente a los casos con enfermedad.
Esto sugiere que, en esta base de datos, el sexo masculino presenta una mayor carga de enfermedad cardiaca, lo cual es consistente con lo que se reporta en muchos estudios clínicos sobre riesgo cardiovascular.
Gráfico 2
====================================================================================
<div style="text-align: center; font-size: 28px; font-weight: bold; margin-top: 2px;">
PROYECTO ANÁLISIS DE ENFERMEDAD CARDIACA
</div>
Row
------------------------------------------------------------------------------------
### **Diagrama de barras apiladas**
```{r grafico2, echo=FALSE}
ggplot(heart,
aes(x = ChestPainType, fill = HeartDisease)) +
geom_bar(position = "stack") +
labs(
title = "Relación entre tipo de dolor en el pecho y enfermedad cardiaca",
x = "Tipo de dolor en el pecho",
y = "Frecuencia",
fill = "Enfermedad cardiaca"
) +
theme_minimal()
```
### **Interpretación**
El diagrama de barras apiladas muestra la relación entre el tipo de dolor en el pecho y la presencia de enfermedad cardiaca:
- En los pacientes con dolor **asintomático (ASY)** se observa una alta frecuencia de casos con enfermedad cardiaca, lo que indica que muchas personas pueden tener el corazón comprometido aun sin presentar dolor típico.
- En los tipos de dolor **ATA** y **NAP** la cantidad de pacientes con y sin enfermedad es más equilibrada.
- En **TA** hay menos casos en general, pero también se observa presencia de enfermedad.
En conjunto, la gráfica sugiere que el tipo de dolor en el pecho está relacionado con el riesgo de enfermedad cardiaca y que ser asintomático no significa necesariamente estar sano.
```
### **Pronóstico**
Debido a la ausencia de una serie temporal o de registros secuenciales, no es posible aplicar modelos de pronóstico en el tiempo (como ARIMA, Holt-Winters o redes neuronales recurrentes), ya que estos requieren observar tendencias, estacionalidad o variaciones temporales para poder predecir valores futuros. En este caso, el análisis es principalmente descriptivo y de asociación, más que de predicción temporal.
<br>

conclusiones
==============================
<div style="text-align: center; font-size: 28px; font-weight: bold; margin-top: 2px;">
CONCLUSIONES
</div>
Row
----------------------------------
<div style="font-size: 20px;">
* Los resultados evidencian que variables clínicas como la *presión arterial en reposo, el **colesterol, la **frecuencia cardiaca máxima* y la *depresión del segmento ST (Oldpeak)* se relacionan de forma importante con la presencia de *enfermedad cardiaca*.
* Variables demográficas como la *edad* y el *sexo, combinadas con los hallazgos clínicos, permiten caracterizar mejor el **perfil de riesgo cardiovascular* de los pacientes.
* Se observaron patrones en los cuales ciertos tipos de *dolor en el pecho, especialmente los pacientes **asintomáticos (ASY), concentran una proporción elevada de casos con enfermedad, mostrando que la falta de síntomas típicos **no garantiza un corazón sano*.
* El cruce entre *sexo* y *enfermedad cardiaca* sugiere que los *hombres* presentan una mayor carga de enfermedad en esta base de datos, lo cual coincide con múltiples estudios epidemiológicos sobre riesgo cardiovascular.
* Aunque la base heart.csv no permite hacer pronósticos en el tiempo, la combinación de variables *cualitativas* (síntomas, resultados de pruebas) y *cuantitativas* (presión arterial, colesterol, edad, frecuencia cardiaca) ofrece una visión completa del estado cardiaco actual, y sirve como punto de partida para estrategias de *prevención y detección temprana*.
</div>