Carga y limpieza de los datos

## Carga y limpieza de los datos
datos <- read.csv("smoking_health_data_final.csv",
                  header = TRUE,
                  sep = ",",
                  stringsAsFactors = FALSE)

# Revisión rápida de la base
str(datos)
## 'data.frame':    3900 obs. of  7 variables:
##  $ age           : int  54 45 58 42 42 57 43 42 37 49 ...
##  $ sex           : chr  "male" "male" "male" "male" ...
##  $ current_smoker: chr  "yes" "yes" "yes" "yes" ...
##  $ heart_rate    : int  95 64 81 90 62 62 75 66 65 93 ...
##  $ blood_pressure: chr  "110/72" "121/72" "127.5/76" "122.5/80" ...
##  $ cigs_per_day  : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ chol          : int  219 248 235 225 226 223 222 196 188 256 ...
summary(datos)
##       age            sex            current_smoker       heart_rate    
##  Min.   :32.00   Length:3900        Length:3900        Min.   : 44.00  
##  1st Qu.:42.00   Class :character   Class :character   1st Qu.: 68.00  
##  Median :49.00   Mode  :character   Mode  :character   Median : 75.00  
##  Mean   :49.54                                         Mean   : 75.69  
##  3rd Qu.:56.00                                         3rd Qu.: 82.00  
##  Max.   :70.00                                         Max.   :143.00  
##                                                                        
##  blood_pressure      cigs_per_day         chol      
##  Length:3900        Min.   : 0.000   Min.   :113.0  
##  Class :character   1st Qu.: 0.000   1st Qu.:206.0  
##  Mode  :character   Median : 0.000   Median :234.0  
##                     Mean   : 9.169   Mean   :236.6  
##                     3rd Qu.:20.000   3rd Qu.:263.0  
##                     Max.   :70.000   Max.   :696.0  
##                     NA's   :14       NA's   :7
head(datos)
##   age  sex current_smoker heart_rate blood_pressure cigs_per_day chol
## 1  54 male            yes         95         110/72           NA  219
## 2  45 male            yes         64         121/72           NA  248
## 3  58 male            yes         81       127.5/76           NA  235
## 4  42 male            yes         90       122.5/80           NA  225
## 5  42 male            yes         62         119/80           NA  226
## 6  57 male            yes         62     107.5/72.5           NA  223
## Conversión de variables y limpieza

# Convertir variables categóricas
datos$sex <- as.factor(datos$sex)
datos$current_smoker <- as.factor(datos$current_smoker)

# Separar presión arterial en sistólica y diastólica
datos <- datos %>%
  separate(blood_pressure, into = c("systolic", "diastolic"), sep = "/", convert = TRUE)

# Ver estructura final
str(datos)
## 'data.frame':    3900 obs. of  8 variables:
##  $ age           : int  54 45 58 42 42 57 43 42 37 49 ...
##  $ sex           : Factor w/ 2 levels "female","male": 2 2 2 2 2 2 2 2 2 2 ...
##  $ current_smoker: Factor w/ 2 levels "no","yes": 2 2 2 2 2 2 2 2 2 2 ...
##  $ heart_rate    : int  95 64 81 90 62 62 75 66 65 93 ...
##  $ systolic      : num  110 121 128 122 119 ...
##  $ diastolic     : num  72 72 76 80 80 72.5 69 73 77 81.5 ...
##  $ cigs_per_day  : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ chol          : int  219 248 235 225 226 223 222 196 188 256 ...
summary(datos)
##       age            sex       current_smoker   heart_rate        systolic    
##  Min.   :32.00   female:2081   no :1968       Min.   : 44.00   Min.   : 83.5  
##  1st Qu.:42.00   male  :1819   yes:1932       1st Qu.: 68.00   1st Qu.:117.0  
##  Median :49.00                                Median : 75.00   Median :128.0  
##  Mean   :49.54                                Mean   : 75.69   Mean   :132.4  
##  3rd Qu.:56.00                                3rd Qu.: 82.00   3rd Qu.:144.0  
##  Max.   :70.00                                Max.   :143.00   Max.   :295.0  
##                                                                               
##    diastolic       cigs_per_day         chol      
##  Min.   : 48.00   Min.   : 0.000   Min.   :113.0  
##  1st Qu.: 75.00   1st Qu.: 0.000   1st Qu.:206.0  
##  Median : 82.00   Median : 0.000   Median :234.0  
##  Mean   : 82.99   Mean   : 9.169   Mean   :236.6  
##  3rd Qu.: 90.00   3rd Qu.:20.000   3rd Qu.:263.0  
##  Max.   :142.50   Max.   :70.000   Max.   :696.0  
##                   NA's   :14       NA's   :7

Carga y limpieza de los datos

Para iniciar el análisis, se cargó el conjunto de datos Smokers Health Data, el cual contiene información clínica de 3.900 individuos, incluyendo variables relacionadas con edad, sexo, hábito de fumar, presión arterial, frecuencia cardíaca, número de cigarrillos por día y niveles de colesterol. Posteriormente, se realizó una revisión estructural del dataset mediante las funciones str() y summary() con el fin de identificar tipos de datos, valores ausentes y rangos de cada variable.

Se realizaron los siguientes pasos de limpieza y preparación:

En conjunto, estas acciones aseguran que el conjunto de datos se encuentre en condiciones adecuadas para aplicar las pruebas de hipótesis y generar visualizaciones confiables. La estructura final del dataset incluye ocho variables correctamente tipadas y listas para los análisis posteriores.

## ------------------------------------------------------------
## Prueba de hipótesis: Frecuencia cardíaca media
## Objetivo: Evaluar si la media poblacional de heart_rate es
##           diferente de 75 lpm.
##
## Hipótesis:
##   H0: μ = 75
##   H1: μ ≠ 75   (prueba bilateral)
##
## Supuestos:
##   - Heart_rate ~ aproximadamente normal (n = 3900 → TCL)
##   - Datos independientes
##   - Nivel de significancia: α = 0.05
## ------------------------------------------------------------
prueba_hr_75 <- t.test(datos$heart_rate,
                       mu = 75,
                       alternative = "two.sided",
                       conf.level = 0.95)

prueba_hr_75
## 
##  One Sample t-test
## 
## data:  datos$heart_rate
## t = 3.5809, df = 3899, p-value = 0.0003465
## alternative hypothesis: true mean is not equal to 75
## 95 percent confidence interval:
##  75.31176 76.06619
## sample estimates:
## mean of x 
##  75.68897

Prueba de hipótesis sobre la frecuencia cardíaca media

Se aplicó una prueba t de una muestra para evaluar si la frecuencia cardíaca media de la población es igual a 75 lpm (H₀: μ = 75) frente a la alternativa de que sea diferente (H₁: μ ≠ 75), con un nivel de significancia de α = 0.05.

La prueba arrojó un valor p de 3.47^{-4}, con una media muestral de 75.69 lpm y un intervalo de confianza del 95% entre 75.31 y 76.07 lpm.

Dado que el valor p es menor que 0.05, se rechaza la hipótesis nula. En consecuencia, existe evidencia estadísticamente significativa de que la frecuencia cardíaca promedio de los individuos del estudio es distinta de 75 lpm, siendo en este caso ligeramente superior.

## ------------------------------------------------------------
## Prueba de hipótesis: Colesterol medio mayor a 200 mg/dL
## Objetivo:
##   Determinar si el colesterol promedio de la población es
##   significativamente mayor a 200 mg/dL.
##
## Hipótesis:
##   H0: μ ≤ 200  (el colesterol medio NO supera 200)
##   H1: μ > 200  (el colesterol medio es MAYOR a 200)
##   -> Prueba t unilateral (cola derecha)
##
## Supuestos:
##   - Variable cuantitativa continua
##   - Tamaño n grande (n = 3900) → TCL garantiza normalidad de la media
##   - Independencia entre observaciones
##   - α = 0.05
## ------------------------------------------------------------

prueba_chol_200 <- t.test(datos$chol,
                          mu = 200,
                          alternative = "greater",
                          conf.level = 0.95)

prueba_chol_200
## 
##  One Sample t-test
## 
## data:  datos$chol
## t = 51.456, df = 3892, p-value < 2.2e-16
## alternative hypothesis: true mean is greater than 200
## 95 percent confidence interval:
##  235.4258      Inf
## sample estimates:
## mean of x 
##  236.5959

Prueba de hipótesis sobre el colesterol medio

Se realizó una prueba t de una muestra con el objetivo de evaluar si el colesterol promedio de los participantes excede los 200 mg/dL. La hipótesis nula plantea que la media poblacional es menor o igual a 200 mg/dL (H₀: μ ≤ 200), mientras que la hipótesis alternativa establece que es mayor (H₁: μ > 200). La prueba se ejecutó con un nivel de significancia α = 0.05.

Los resultados obtenidos muestran un valor p < 2.2e-16, una media muestral de 236.6 mg/dL, y un intervalo de confianza unilateral del 95% que inicia en 235.43 mg/dL.

Dado que el valor p es extremadamente pequeño (muy por debajo de 0.05), se rechaza la hipótesis nula. Existe evidencia estadísticamente significativa de que el colesterol promedio de la población estudiada es mayor a 200 mg/dL, situándose alrededor de 236 mg/dL.

## ------------------------------------------------------------
## Prueba de proporciones: colesterol alto (> 240 mg/dL)
## Objetivo:
##   Evaluar si la proporción de individuos con colesterol alto
##   (col > 240 mg/dL) supera el 20%.
##
## Hipótesis:
##   H0: p = 0.20   (la proporción NO es mayor al 20%)
##   H1: p > 0.20   (la proporción ES mayor al 20%)
## ------------------------------------------------------------

# Variable colesterol alto
datos$col_alto <- ifelse(datos$chol > 240, 1, 0)

# Contar valores válidos
n_total <- sum(!is.na(datos$col_alto))
n_alto  <- sum(datos$col_alto, na.rm = TRUE)

# Proporción observada
prop_estimada <- n_alto / n_total
prop_estimada
## [1] 0.4287182
# Prueba de hipótesis
prueba_prop_20 <- prop.test(x = n_alto,
                            n = n_total,
                            p = 0.20,
                            alternative = "greater",
                            correct = FALSE)

prueba_prop_20
## 
##  1-sample proportions test without continuity correction
## 
## data:  n_alto out of n_total, null probability 0.2
## X-squared = 1272.8, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is greater than 0.2
## 95 percent confidence interval:
##  0.4157256 1.0000000
## sample estimates:
##         p 
## 0.4287182

Prueba de hipótesis sobre la proporción de colesterol alto

Se definió colesterol alto como un valor superior a 240 mg/dL y se evaluó si la proporción de individuos con este nivel excede el 20%. La hipótesis nula establece que la proporción poblacional es igual a 0.20 (H₀: p = 0.20), mientras que la alternativa propone que es mayor (H₁: p > 0.20). La prueba se realizó con un nivel de significancia α = 0.05.

La proporción observada en la muestra fue de 0.4287, equivalente al 42.87 %.
El valor p obtenido fue < 2.2e-16, con un intervalo de confianza unilateral del 95% que inicia en 0.4157.

Dado que el valor p es extremadamente bajo, se rechaza la hipótesis nula. Por tanto, existe evidencia estadísticamente significativa de que la proporción de individuos con colesterol alto es mayor al 20%, situándose alrededor del 43%.

## ------------------------------------------------------------
## Prueba de proporciones: taquicardia (heart_rate > 100 lpm)
## ------------------------------------------------------------

# Crear variable dicotómica
datos$taquicardia <- ifelse(datos$heart_rate > 100, 1, 0)

n_total_taq <- sum(!is.na(datos$taquicardia))
n_taq       <- sum(datos$taquicardia)

prop_taq <- n_taq / n_total_taq
prop_taq
## [1] 0.02384615
# H0: p = 0.05   vs   H1: p ≠ 0.05  (prueba bilateral)
prueba_prop_taq <- prop.test(x = n_taq,
                             n = n_total_taq,
                             p = 0.05,
                             alternative = "two.sided",
                             correct = FALSE)

prueba_prop_taq
## 
##  1-sample proportions test without continuity correction
## 
## data:  n_taq out of n_total_taq, null probability 0.05
## X-squared = 56.162, df = 1, p-value = 6.674e-14
## alternative hypothesis: true p is not equal to 0.05
## 95 percent confidence interval:
##  0.01950584 0.02912355
## sample estimates:
##          p 
## 0.02384615

Prueba de hipótesis sobre la proporción de taquicardia

Con el fin de evaluar si la proporción de individuos con taquicardia (definida como una frecuencia cardíaca superior a 100 lpm) es igual al 5%, se realizó una prueba de proporciones bilateral. La hipótesis nula plantea que la proporción poblacional es igual a 0.05 (H₀: p = 0.05), mientras que la alternativa establece que es diferente (H₁: p ≠ 0.05). El nivel de significancia utilizado fue α = 0.05.

La proporción observada en la muestra fue de 0.0238 (equivalente a 2.38 %).
El valor p obtenido fue 6.674095e-14, con un intervalo de confianza del 95% entre 0.0195 y 0.0291.

Dado que el valor p es extremadamente pequeño, se rechaza la hipótesis nula. Esto indica que la proporción real de taquicardia es significativamente distinta del 5%, siendo en este caso considerablemente menor, alrededor del 2.38%.

## ------------------------------------------------------------
## Diferencia de medias de colesterol: fumadores vs no fumadores
## Prueba t de dos muestras
##
## H0: μ_fumadores = μ_no_fumadores
## H1: μ_fumadores ≠ μ_no_fumadores
##
## Supuestos:
##  - Variables independientes
##  - Distribución aproximadamente normal (n grande)
##  - Varianzas no necesariamente iguales: usar var.equal = FALSE
## ------------------------------------------------------------

prueba_chol_fum <- t.test(chol ~ current_smoker,
                          data = datos,
                          alternative = "two.sided",
                          var.equal = FALSE,
                          conf.level = 0.95)

prueba_chol_fum
## 
##  Welch Two Sample t-test
## 
## data:  chol by current_smoker
## t = 2.9119, df = 3884.8, p-value = 0.003612
## alternative hypothesis: true difference in means between group no and group yes is not equal to 0
## 95 percent confidence interval:
##  1.352281 6.925837
## sample estimates:
##  mean in group no mean in group yes 
##          238.6458          234.5067

Comparación del colesterol entre fumadores y no fumadores

Se aplicó una prueba t de dos muestras (Welch) para evaluar si existe una diferencia significativa en los niveles de colesterol entre individuos fumadores y no fumadores. La hipótesis nula establece que ambas medias son iguales (H₀: μ_fumadores = μ_no fumadores), mientras que la alternativa plantea que son diferentes (H₁: μ_fumadores ≠ μ_no fumadores). El análisis se realizó con un nivel de significancia de α = 0.05.

El resultado muestra un valor p de 0.003612, indicando evidencia suficiente para rechazar la hipótesis nula. La media de colesterol en no fumadores fue de 238.65 mg/dL, mientras que en fumadores fue de 234.51 mg/dL. El intervalo de confianza del 95% para la diferencia entre medias fue de 1.35 a 6.93 mg/dL.

Estos resultados indican que existe una diferencia estadísticamente significativa en los niveles de colesterol entre ambos grupos, siendo sorprendentemente mayor en el grupo de no fumadores. Este hallazgo podría sugerir la influencia de otros factores asociados al estilo de vida o características metabólicas que no están directamente relacionadas con el hábito de fumar.

## ------------------------------------------------------------
## Diferencia de medias de frecuencia cardíaca:
## fumadores vs no fumadores (prueba unilateral)
##
## H0: μ_fumadores ≤ μ_no
## H1: μ_fumadores > μ_no
##
## Nota: relevel() asegura que "no" sea el grupo de referencia.
## ------------------------------------------------------------

datos$current_smoker <- relevel(datos$current_smoker, ref = "no")

prueba_hr_fum <- t.test(heart_rate ~ current_smoker,
                        data = datos,
                        alternative = "greater",
                        var.equal = FALSE,
                        conf.level = 0.95)

prueba_hr_fum
## 
##  Welch Two Sample t-test
## 
## data:  heart_rate by current_smoker
## t = -3.5809, df = 3896.4, p-value = 0.9998
## alternative hypothesis: true difference in means between group no and group yes is greater than 0
## 95 percent confidence interval:
##  -2.007336       Inf
## sample estimates:
##  mean in group no mean in group yes 
##          75.00762          76.38302

Diferencia de medias de frecuencia cardíaca entre fumadores y no fumadores

Se aplicó una prueba t de dos muestras con hipótesis unilateral para determinar si la frecuencia cardíaca promedio es mayor en fumadores que en no fumadores. La hipótesis nula plantea que la media de los fumadores es menor o igual que la de los no fumadores (H₀: μ_fumadores ≤ μ_no), mientras que la alternativa propone que es mayor (H₁: μ_fumadores > μ_no). Se utilizó una prueba Welch debido a la posible diferencia en varianzas entre grupos.

Los resultados muestran un valor p de 0.9998, muy superior al nivel de significancia α = 0.05. La media de frecuencia cardíaca en no fumadores fue de 75.01 lpm, mientras que en fumadores fue de 76.38 lpm. El intervalo de confianza unilateral del 95% para la diferencia estuvo entre -2.007 y Inf.

Dado que el valor p es extremadamente alto, no se rechaza la hipótesis nula. Por tanto, no existe evidencia estadísticamente significativa de que los fumadores presenten una frecuencia cardíaca mayor que los no fumadores.

## ------------------------------------------------------------
## Prueba de proporciones: colesterol alto entre fumadores y no
## fumadores
##
## H0: p_fumadores = p_no_fumadores
## H1: p_fumadores ≠ p_no_fumadores
##
## Prueba de proporciones con tabla 2x2
## ------------------------------------------------------------

tabla_chol <- table(datos$current_smoker, datos$col_alto)
tabla_chol
##      
##          0    1
##   no  1086  879
##   yes 1138  790
prueba_prop_fum <- prop.test(tabla_chol,
                             alternative = "two.sided",
                             correct = FALSE)

prueba_prop_fum
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  tabla_chol
## X-squared = 5.6106, df = 1, p-value = 0.01785
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  -0.068644839 -0.006509575
## sample estimates:
##    prop 1    prop 2 
## 0.5526718 0.5902490

Comparación de proporciones de colesterol alto entre fumadores y no fumadores

Se evaluó si la proporción de individuos con colesterol alto (> 240 mg/dL) difiere entre fumadores y no fumadores. La hipótesis nula plantea igualdad de proporciones entre ambos grupos (H₀: p_fumadores = p_no fumadores), mientras que la alternativa establece que las proporciones son diferentes (H₁: p_fumadores ≠ p_no fumadores). El análisis se realizó mediante una prueba de proporciones con tabla 2×2 y nivel de significancia α = 0.05.

Los resultados mostraron un valor p de 0.01785, lo que indica evidencia suficiente para rechazar la hipótesis nula. La proporción de colesterol alto fue de 0.5527 en no fumadores y 0.5902 en fumadores. El intervalo de confianza del 95% para la diferencia entre proporciones fue de -0.0686 a -0.0065.

Estos resultados permiten concluir que existe una diferencia estadísticamente significativa en la prevalencia de colesterol alto entre fumadores y no fumadores, siendo mayor en el grupo de fumadores.

## ------------------------------------------------------------
## Histograma de la frecuencia cardíaca
## Objetivo:
##   Visualizar la distribución de heart_rate y evaluar su forma.
## ------------------------------------------------------------

ggplot(datos, aes(x = heart_rate)) +
  geom_histogram(binwidth = 5, fill = "#4A90E2", color = "white", alpha = 0.8) +
  labs(title = "Distribución de la frecuencia cardíaca",
       x = "Frecuencia cardíaca (lpm)",
       y = "Frecuencia") +
  theme_minimal()

Interpretación del histograma de la frecuencia cardíaca

El histograma muestra una distribución unimodal de la frecuencia cardíaca, con la mayor concentración de observaciones entre los 60 y 90 lpm. La forma de la distribución es aproximadamente simétrica, aunque presenta una ligera asimetría hacia la derecha debido a algunos valores por encima de 100 lpm.

La alta concentración de valores alrededor de la media (≈ 75 lpm) y el tamaño muestral elevado (n = 3900) respaldan la validez del uso de pruebas t basadas en el Teorema Central del Límite. No se observan valores extremadamente atípicos, lo cual sugiere una medición consistente y adecuada para el análisis estadístico posterior.

## ------------------------------------------------------------
## Boxplot de colesterol por condición de fumador
## Objetivo:
##   Comparar visualmente la dispersión y tendencia central de
##   los niveles de colesterol entre fumadores y no fumadores.
## ------------------------------------------------------------

ggplot(datos, aes(x = current_smoker, y = chol, fill = current_smoker)) +
  geom_boxplot(alpha = 0.7) +
  labs(title = "Colesterol por condición de fumador",
       x = "Condición de fumador",
       y = "Colesterol (mg/dL)") +
  scale_fill_manual(values = c("#E74C3C", "#3498DB")) +
  theme_minimal()

Interpretación del boxplot de colesterol por condición de fumador

El boxplot permite comparar visualmente la distribución de los niveles de colesterol entre fumadores y no fumadores. Ambos grupos presentan medianas similares, alrededor de 225–235 mg/dL, lo cual concuerda con la estadística descriptiva. No obstante, se observan algunas diferencias importantes:

  • Dispersión ligeramente mayor en el grupo de fumadores, con un rango intercuartílico más amplio, lo que sugiere una variabilidad más elevada en este grupo.
  • Presencia de valores atípicos en ambos grupos, aunque los fumadores muestran una concentración más notable de outliers por encima de 300 mg/dL.
  • La forma general de ambos boxplots es consistente, pero los fumadores presentan una tendencia leve hacia valores más altos de colesterol.

Este comportamiento visual está alineado con los resultados de la prueba t de dos muestras. Aunque ambos grupos comparten una distribución similar, la prueba indicó una diferencia estadísticamente significativa entre las medias, siendo ligeramente mayor el colesterol en los no fumadores. Sin embargo, al observar la dispersión y la variabilidad, es evidente que los fumadores presentan mayor inestabilidad en sus niveles de colesterol, lo que podría estar relacionado con factores adicionales asociados al hábito de fumar.

## ------------------------------------------------------------
## Boxplot de frecuencia cardíaca por condición de fumador
## ------------------------------------------------------------

ggplot(datos, aes(x = current_smoker, y = heart_rate, fill = current_smoker)) +
  geom_boxplot(alpha = 0.7) +
  labs(title = "Frecuencia cardíaca por condición de fumador",
       x = "Condición de fumador",
       y = "Frecuencia cardíaca (lpm)") +
  scale_fill_manual(values = c("#2ECC71", "#9B59B6")) +
  theme_minimal()

Interpretación del boxplot de frecuencia cardíaca por condición de fumador

El boxplot permite comparar visualmente la distribución de la frecuencia cardíaca entre fumadores y no fumadores. Ambos grupos presentan medianas muy similares, alrededor de 74–76 lpm, lo cual sugiere que no existe una diferencia considerable en la tendencia central.

Se observan algunos puntos relevantes:

  • Las medianas de ambos grupos prácticamente coinciden, lo que indica que el hábito de fumar no parece influir significativamente en el nivel promedio de frecuencia cardíaca.
  • El rango intercuartílico es similar en ambos grupos, lo que sugiere que la variabilidad de la frecuencia cardíaca también es comparable.
  • Existen outliers en ambos grupos, especialmente valores por encima de 110 lpm, pero la estructura general de las distribuciones no cambia entre fumadores y no fumadores.
  • El grupo de no fumadores presenta algunos valores atípicos hacia la parte baja (< 50 lpm), posiblemente correspondientes a individuos con bradicardia o atletas entrenados.

Este comportamiento visual está completamente alineado con los resultados de la prueba t unilateral realizada anteriormente. En dicha prueba, se encontró un valor p alto (p ≈ 0.9998), lo cual indica que no existe evidencia estadística para afirmar que los fumadores tienen una frecuencia cardíaca mayor que los no fumadores. El boxplot refuerza esta conclusión mostrando distribuciones casi idénticas entre ambos grupos.

## ------------------------------------------------------------
## Gráfico interactivo: Frecuencia cardíaca vs colesterol
## Objetivo:
##   Explorar si existe relación entre heart_rate y chol,
##   diferenciando fumadores y no fumadores.
## ------------------------------------------------------------

p <- ggplot(datos, aes(x = heart_rate, y = chol, color = current_smoker)) +
  geom_point(alpha = 0.5) +
  labs(title = "Relación entre frecuencia cardíaca y colesterol",
       x = "Frecuencia cardíaca (lpm)",
       y = "Colesterol (mg/dL)") +
  theme_minimal()

ggplotly(p)

Interpretación del gráfico interactivo: Frecuencia cardíaca vs colesterol

La visualización interactiva permite explorar la relación entre la frecuencia cardíaca y los niveles de colesterol, diferenciando entre fumadores y no fumadores. Cada punto representa un individuo, y al interactuar con la gráfica es posible identificar valores particulares mediante etiquetas emergentes (hover labels).

A partir del gráfico se observan varios patrones importantes:

  • No existe una relación clara entre la frecuencia cardíaca y el colesterol.
    Los puntos no siguen ninguna tendencia lineal ni forman un patrón ascendente o descendente. La nube de puntos es dispersa y desorganizada, lo cual sugiere una correlación baja o nula entre ambas variables.

  • La mayor concentración de observaciones se encuentra entre 60 y 90 lpm, con niveles de colesterol que oscilan principalmente entre 180 y 260 mg/dL. Esto coincide con las estadísticas descriptivas obtenidas previamente.

  • Se observan algunos valores atípicos, particularmente niveles de colesterol por encima de 600 mg/dL en pacientes con frecuencia cardíaca normal. Estos outliers pueden corresponder a condiciones clínicas específicas y podrían requerir análisis adicional.

  • La condición de fumador no altera perceptiblemente la relación entre las variables.
    Tanto fumadores como no fumadores se distribuyen de manera similar, lo que concuerda con las pruebas estadísticas que no encontraron relación significativa entre el hábito de fumar y la frecuencia cardíaca.

En conjunto, este gráfico interactivo refuerza que no existe evidencia visual de una asociación entre la frecuencia cardíaca y el nivel de colesterol, y permite explorar casos individuales para un análisis más profundo.

## ------------------------------------------------------------
## Proporción de colesterol alto por condición de fumador
## ------------------------------------------------------------

# Crear la variable col_alto si aún no existe
if (!"col_alto" %in% names(datos)) {
  datos$col_alto <- ifelse(datos$chol > 240, 1, 0)
}

library(dplyr)

prop_por_fum <- datos %>%
  group_by(current_smoker) %>%
  summarise(prop_alto = mean(col_alto, na.rm = TRUE))

prop_por_fum
## # A tibble: 2 × 2
##   current_smoker prop_alto
##   <fct>              <dbl>
## 1 no                 0.447
## 2 yes                0.410
ggplot(prop_por_fum, aes(x = current_smoker, y = prop_alto, fill = current_smoker)) +
  geom_col(alpha = 0.8) +
  scale_y_continuous(labels = scales::percent_format()) +
  labs(title = "Proporción de colesterol alto según hábito de fumar",
       x = "Condición de fumador",
       y = "Proporción con colesterol alto") +
  scale_fill_manual(values = c("#8E44AD", "#16A085")) +
  theme_minimal()

Interpretación del gráfico de proporción de colesterol alto según hábito de fumar

El gráfico de barras muestra la proporción de individuos con colesterol alto (> 240 mg/dL) en función de la condición de fumador. En la muestra analizada, los no fumadores presentan una proporción ligeramente mayor de colesterol alto, cercana al 45 %, mientras que los fumadores alcanzan alrededor del 42 %.

Este resultado es consistente con el cálculo previo de proporciones y con la prueba estadística aplicada. Aunque la diferencia es moderada, los valores sugieren que en esta población los no fumadores tienen una prevalencia marginalmente más alta de colesterol elevado. Este comportamiento puede estar influenciado por otros factores no observados en el dataset, como dieta, actividad física, genética o comorbilidades.

El análisis visual respalda la conclusión de que existe una diferencia en la prevalencia de colesterol alto entre los grupos, aunque la magnitud de dicha diferencia no es muy pronunciada.

##===========================================================================

Resultados y análisis integrados

La exploración estadística y los contrastes de hipótesis aplicados al conjunto de datos Smokers Health Data permiten obtener una visión clara sobre el comportamiento conjunto de variables cardiovasculares y los posibles efectos del hábito de fumar en la población analizada.

En primer lugar, la prueba t de una muestra aplicada a la frecuencia cardíaca reveló que el valor promedio poblacional (≈ 75.69 lpm) es estadísticamente diferente de 75 lpm. Aunque la diferencia es pequeña, la gran cantidad de observaciones (n = 3900) confiere suficiente potencia estadística para detectar cambios mínimos. Esto sugiere que la frecuencia cardíaca típica de la población se ubica ligeramente por encima del umbral de referencia habitual.

Posteriormente, la prueba t unilateral sobre los valores de colesterol permitió confirmar con evidencia muy sólida que el colesterol medio de la población supera los 200 mg/dL, lo que refleja un nivel de riesgo cardiovascular potencialmente elevado en la muestra analizada.

El análisis de proporciones mostró que aproximadamente el 42.8% de los individuos presentan colesterol alto, cifra significativamente superior al 20% asumido como umbral de referencia en el contraste de hipótesis. De manera similar, la proporción de personas con taquicardia (frecuencia cardíaca > 100 lpm) resultó muy baja (≈ 2.38%), pero aun así significativamente distinta del valor de referencia del 5% propuesto. Esto indica que la taquicardia no es una condición predominante en la muestra.

Al comparar grupos de fumadores y no fumadores, los contrastes de medias mostraron dos conclusiones clave:

  1. Colesterol:
    La prueba t de Welch evidenció una diferencia estadísticamente significativa entre fumadores y no fumadores, aunque de magnitud moderada. En promedio, los no fumadores presentan valores de colesterol ligeramente superiores.

  2. Frecuencia cardíaca:
    El contraste unilateral no encontró evidencia de que los fumadores presenten una frecuencia cardíaca mayor. Los promedios son casi idénticos (75.00 vs 76.33 lpm) y la prueba arrojó un valor p alto, indicando ausencia de diferencia estadística. Los boxplots refuerzan esta conclusión al mostrar distribuciones casi superpuestas entre los grupos.

El análisis de proporciones por condición de fumador mostró que la proporción de individuos con colesterol alto es moderadamente diferente entre los grupos, con una ligera ventaja de los no fumadores. Aunque la diferencia resultó estadísticamente significativa, su magnitud es reducida, lo que sugiere la presencia de factores confusores (edad, dieta, peso, sedentarismo u otros) más determinantes que el tabaquismo en esta población particular.

En cuanto a las visualizaciones:

En conjunto, los resultados indican que:

##===========================================================================

Conclusiones finales

El análisis estadístico realizado sobre el conjunto de datos Smokers Health Data permitió evaluar de manera integral distintas variables asociadas a la salud cardiovascular y su posible relación con el hábito de fumar. Las pruebas de hipótesis aplicadas, complementadas con visualizaciones descriptivas e interactivas, ofrecen varias conclusiones relevantes:

  1. La frecuencia cardíaca promedio difiere ligeramente del valor teórico de referencia (75 lpm).
    Aunque la diferencia absoluta es pequeña, el tamaño de muestra elevado otorga suficiente potencia estadística para detectar variaciones mínimas. Esto sugiere que la población evaluada presenta una frecuencia cardíaca ligeramente mayor a la esperada.

  2. El colesterol promedio es significativamente mayor a 200 mg/dL.
    Este hallazgo indica un riesgo cardiovascular elevado en la población analizada y coincide con la alta proporción de individuos con colesterol clasificado como alto (> 240 mg/dL).

  3. La proporción de colesterol alto (≈ 42.8%) es sustancialmente mayor al umbral del 20% establecido como referencia.
    Este resultado refuerza la importancia de monitorear factores metabólicos y hábitos de vida que pueden afectar la salud cardiovascular.

  4. La proporción de taquicardia es baja (≈ 2.38%), pero significativamente distinta del valor teórico del 5%.
    Esto indica que, aunque la taquicardia no es común en esta muestra, su prevalencia difiere del valor de referencia propuesto.

  5. Las comparaciones entre fumadores y no fumadores mostraron diferencias estadísticamente significativas en algunos indicadores, aunque de magnitud ligera.

    • En colesterol, los no fumadores presentaron valores ligeramente superiores.
    • En frecuencia cardíaca, las medias entre ambos grupos fueron prácticamente equivalentes y la prueba unilateral no evidenció diferencias significativas.
  6. Las visualizaciones apoyan las conclusiones estadísticas.
    Los boxplots muestran distribuciones similares entre grupos; el histograma confirma una distribución normal aproximada de la frecuencia cardíaca; y el gráfico interactivo evidencia una relación débil o inexistente entre colesterol y frecuencia cardíaca.

En conjunto, los resultados sugieren que, aunque el hábito de fumar es un factor de riesgo reconocido, en esta base de datos en particular no emerge como un diferenciador fuerte de los indicadores analizados. En su lugar, otros factores no incluidos en el dataset (como dieta, actividad física, genética, peso corporal o presencia de comorbilidades) podrían desempeñar un papel más determinante en los valores de colesterol y frecuencia cardíaca observados.

El análisis demuestra la importancia de complementar las pruebas de hipótesis con herramientas visuales y descriptivas para obtener una comprensión más completa del comportamiento de los datos y de los posibles patrones asociados a la salud cardiovascular.