# Cargar librerías necesarias
library(tidyverse)
library(knitr)
library(kableExtra)
library(conflicted)
library(broom)
# Cargar los datos (ajustar la ruta según corresponda)
datos <- read.csv("D:\\Maestria IA/Ciencia de Datos/Actividad 3/smoking_health_data_final.csv")
# Mostrar estructura de los datos y eliminar valores nulos
datos <- na.omit(datos)Análisis de Pruebas de Hipótesis - Smokers Health Data
Introducción
El presente análisis tiene como finalidad aplicar distintas pruebas de hipótesis utilizando el lenguaje de programación R, tomando como base el conjunto de datos Smokers Health Data. Esta base contiene información clínica y fisiológica de personas fumadoras y no fumadoras, lo que permite comparar medias y proporciones asociadas a variables de salud como la frecuencia cardíaca y el nivel de colesterol.
Carga de datos y librerías
Pruebas de Hipótesis para una Muestra - Media
1. Frecuencia Cardíaca Promedio
Objetivo: Comprobar si la frecuencia cardíaca promedio de los individuos en la muestra es igual a 75 latidos por minuto.
Hipótesis:
- H₀: μ = 75 (La media poblacional de la frecuencia cardíaca es igual a 75)
- H₁: μ ≠ 75 (La media poblacional de la frecuencia cardíaca es diferente de 75)
# Prueba t de una muestra para frecuencia cardíaca
prueba_fc <- t.test(datos$heart_rate, mu = 75)
tidy_results <- tidy(prueba_fc)
kable(tidy_results,
digits = 4,
caption = "T-test en medias",
col.names = c("Media", "Estadístico t", "Valor p", "Parámetro",
"IC inferior", "IC superior", "Método", "Hipótesis")) %>%
kable_styling(bootstrap_options = c("striped", "hover"),
full_width = TRUE)| Media | Estadístico t | Valor p | Parámetro | IC inferior | IC superior | Método | Hipótesis |
|---|---|---|---|---|---|---|---|
| 75.6991 | 3.6217 | 3e-04 | 3878 | 75.3207 | 76.0776 | One Sample t-test | two.sided |
# Estadísticos descriptivos
media_fc <- mean(datos$heart_rate)
sd_fc <- sd(datos$heart_rate)
n_fc <- length(datos$heart_rate)
cat("Media muestral:", round(media_fc, 2), "\n")Media muestral: 75.7
cat("Desviación estándar:", round(sd_fc, 2), "\n")Desviación estándar: 12.02
cat("Tamaño de muestra:", n_fc, "\n")Tamaño de muestra: 3879
Interpretación:
- Estadístico t: 3.6217
- p-valor: 0.0002963804
- Intervalo de confianza 95%: [75.32, 76.08]
Con un p-valor de 0.0002963804, que es menor que α = 0.05, rechazamos la hipótesis nula. Por lo tanto, existe evidencia estadísticamente significativa de que la media poblacional de frecuencia cardíaca es diferente de 75 latidos por minuto.
2. Nivel de Colesterol Mayor a 200 mg/dL
Objetivo: Evaluar si los niveles medios de colesterol en la muestra superan el valor umbral de 200 mg/dL.
Hipótesis:
- H₀: μ ≤ 200 (El nivel medio de colesterol es menor o igual a 200)
- H₁: μ > 200 (El nivel medio de colesterol es mayor a 200)
# Prueba t de una cola (unilateral derecha)
prueba_col <- t.test(datos$chol, mu = 200, alternative ="greater")
tidy_results <- tidy(prueba_col)
kable(tidy_results,
digits = 4,
caption = "Resultados del t-test",
col.names = c("Media", "Estadístico t", "Valor p", "Parámetro",
"IC inferior", "IC superior", "Método", "Hipótesis")) %>%
kable_styling(bootstrap_options = c("striped", "hover"),
full_width = TRUE)| Media | Estadístico t | Valor p | Parámetro | IC inferior | IC superior | Método | Hipótesis |
|---|---|---|---|---|---|---|---|
| 236.6293 | 51.3653 | 0 | 3878 | 235.456 | Inf | One Sample t-test | greater |
# Estadísticos descriptivos
media_col <- mean(datos$chol)
sd_col <- sd(datos$chol)
cat("Media muestral de colesterol:", round(media_col, 2), "mg/dL\n")Media muestral de colesterol: 236.63 mg/dL
cat("Desviación estándar:", round(sd_col, 2), "\n")Desviación estándar: 44.41
Interpretación:
- Estadístico t: 51.3653
- p-valor: 0
- Intervalo de confianza 95%: [>235.46, ∞)
Con un p-valor de 0, que es menor que α = 0.05, rechazamos la hipótesis nula. Por lo tanto, existe evidencia de que el nivel medio de colesterol supera los 200 mg/dL.
Pruebas de Hipótesis para una Muestra - Proporción
3. Proporción de Personas con Colesterol Alto (>240 mg/dL)
# Crear variable binaria para colesterol alto
datos <- na.omit(datos)
datos$colesterol_alto <- ifelse(datos$chol> 240, 1, 0)
# Contar casos
casos_col_alto <- sum(datos$colesterol_alto)
n_total <- length(datos$colesterol_alto)
prop_observada <- casos_col_alto / n_total
cat("Casos con colesterol alto (>240):", casos_col_alto, "\n")Casos con colesterol alto (>240): 1665
cat("Total de casos:", n_total, "\n")Total de casos: 3879
cat("Proporción observada:", round(prop_observada, 4), "\n")Proporción observada: 0.4292
Hipótesis:
- H₀: p = 0.20 (La proporción de personas con colesterol alto es igual al 20%)
- H₁: p > 0.20 (La proporción de personas con colesterol alto es mayor al 20%)
# Prueba de proporciones (una cola)
prueba_prop_col <- prop.test(casos_col_alto, n_total, p = 0.20, alternative = "greater")Interpretación:
- Estadístico χ²: 1272.5375
- p-valor: 0
- Proporción observada: 0.4292 (42.92%)
Con un p-valor de 0, rechazamos la hipótesis nula. Por lo tanto, existe evidencia de que la proporción de personas con colesterol alto es mayor al 20%.
4. Proporción de Personas con Taquicardia (>100 lpm)
# Crear variable binaria para taquicardia
datos$taquicardia <- ifelse(datos$heart_rate > 100, 1, 0)
# Contar casos
casos_taquicardia <- sum(datos$taquicardia)
prop_taq_observada <- casos_taquicardia / n_total
cat("Casos con taquicardia (>100 lpm):", casos_taquicardia, "\n")Casos con taquicardia (>100 lpm): 93
cat("Proporción observada:", round(prop_taq_observada, 4), "\n")Proporción observada: 0.024
Hipótesis:
- H₀: p = 0.05 (La proporción de personas con taquicardia es igual al 5%)
- H₁: p ≠ 0.05 (La proporción de personas con taquicardia es diferente del 5%)
# Prueba de proporciones (dos colas)
prueba_prop_taq <- prop.test(casos_taquicardia, n_total, p = 0.05, alternative = "two.sided")Interpretación:
- Estadístico χ²: 54.7629
- p-valor: 0
- Proporción observada: 0.024 (2.4%)
Con un p-valor de 0, rechazamos la hipótesis nula. Por lo tanto, existe evidencia de que la proporción de personas con taquicardia es significativamente diferente del 5%.
Pruebas de Hipótesis para Diferencia de Medias
5. Diferencia en Niveles de Colesterol entre Fumadores y No Fumadores
# Estadísticos descriptivos por grupo
stats_colesterol <- datos %>%
group_by(current_smoker) %>%
summarise(
n = n(),
media = mean(datos$chol),
sd = sd(datos$chol)
)
kable(stats_colesterol,
col.names = c("Fumador", "n", "Media", "Desv. Estándar"),
digits = 2,
caption = "Estadísticos descriptivos - Colesterol por grupo") %>%
kable_styling(bootstrap_options = "striped")| Fumador | n | Media | Desv. Estándar |
|---|---|---|---|
| no | 1965 | 236.63 | 44.41 |
| yes | 1914 | 236.63 | 44.41 |
Hipótesis:
- H₀: μ₁ = μ₂ (No hay diferencia en los niveles medios de colesterol entre fumadores y no fumadores)
- H₁: μ₁ ≠ μ₂ (Existe una diferencia significativa entre los niveles medios de colesterol)
# Prueba t de dos muestras independientes
prueba_col_grupos <- t.test(datos$chol ~ current_smoker, data = datos, var.equal = FALSE)Interpretación:
- Estadístico t: 2.867
- p-valor: 4.166289e-03
- Diferencia de medias: -4.09 mg/dL
- Intervalo de confianza 95%: [1.29, 6.88]
Con un p-valor de 4.166289e-03, rechazamos la hipótesis nula. Existe evidencia estadísticamente significativa de una diferencia en los niveles promedio de colesterol entre fumadores y no fumadores.
6. Diferencia en Frecuencia Cardíaca entre Fumadores y No Fumadores
# Estadísticos descriptivos por grupo
stats_fc <- datos %>%
group_by(current_smoker) %>%
summarise(
n = n(),
media = mean(heart_rate),
sd = sd(heart_rate),
.groups = 'drop'
)
kable(stats_fc,
col.names = c("Fumador", "n", "Media", "Desv. Estándar"),
digits = 2,
caption = "Estadísticos descriptivos - Frecuencia cardíaca por grupo") %>%
kable_styling(bootstrap_options = "striped")| Fumador | n | Media | Desv. Estándar |
|---|---|---|---|
| no | 1965 | 75.02 | 12.23 |
| yes | 1914 | 76.40 | 11.77 |
Hipótesis:
- H₀: μ₁ ≤ μ₂ (No hay diferencia o la frecuencia cardíaca de fumadores es menor que la de no fumadores)
- H₁: μ₁ > μ₂ (La frecuencia cardíaca promedio de los fumadores es mayor que la de los no fumadores)
# Prueba t de una cola (fumadores > no fumadores)
# Necesitamos reordenar para que "Yes" sea el primer grupo
prueba_fc_grupos <- t.test(heart_rate ~ current_smoker, data = datos,
alternative = "less", var.equal = FALSE)Interpretación:
- Estadístico t: -3.5969
- p-valor: 1.630404e-04
- Diferencia de medias: 1.39 lpm
Con un p-valor de 1.630404e-04, rechazamos la hipótesis nula. Existe evidencia de que la frecuencia cardíaca promedio de los fumadores es mayor que la de los no fumadores.
Prueba de Hipótesis para Diferencia de Proporciones
7. Diferencia en Proporción de Colesterol Alto entre Fumadores y No Fumadores
# Tabla de contingencia
tabla_col_alto <- table(datos$current_smoker, datos$colesterol_alto)
rownames(tabla_col_alto) <- c("No Fumador", "Fumador")
colnames(tabla_col_alto) <- c("Colesterol Normal", "Colesterol Alto")
# Proporciones por grupo
prop_por_grupo <- prop.table(tabla_col_alto, margin = 1)
print(round(prop_por_grupo, 4))
Colesterol Normal Colesterol Alto
No Fumador 0.5527 0.4473
Fumador 0.5893 0.4107
Hipótesis:
- H₀: p₁ = p₂ (La proporción de personas con colesterol alto es la misma en fumadores y no fumadores)
- H₁: p₁ ≠ p₂ (La proporción de personas con colesterol alto es diferente entre fumadores y no fumadores)
# Prueba de proporciones de dos muestras
prueba_prop_diff <- prop.test(tabla_col_alto[,1], rowSums(tabla_col_alto))
# Chi-cuadrado de independencia como alternativa
prueba_chi2 <- chisq.test(tabla_col_alto)Interpretación:
- Estadístico χ²: 5.1731
- p-valor: 2.29392e-02
- Proporción No Fumadores: 0.4473 (44.73%)
- Proporción Fumadores: 0.4107 (41.07%)
Con un p-valor de 2.29392e-02, rechazamos la hipótesis nula. Existe evidencia estadísticamente significativa de una diferencia en la proporción de personas con colesterol alto entre fumadores y no fumadores.
Resumen de Resultados
# Crear tabla resumen de todas las pruebas
resultados <- data.frame(
Prueba = c(
"FC = 75 lpm",
"Colesterol > 200",
"Prop. Col Alto > 20%",
"Prop. Taquicardia ≠ 5%",
"Diferencia Colesterol",
"FC Fumadores > No Fumadores",
"Diferencia Prop. Col Alto"
),
Estadistico = c(
round(prueba_fc$statistic, 3),
round(prueba_col$statistic, 3),
round(prueba_prop_col$statistic, 3),
round(prueba_prop_taq$statistic, 3),
round(prueba_col_grupos$statistic, 3),
round(prueba_fc_grupos$statistic, 3),
round(prueba_prop_diff$statistic, 3)
),
P_valor = c(
format(round(prueba_fc$p.value,2), scientific = FALSE, digits = 3),
format(round(prueba_col$p.value,2), scientific = FALSE, digits = 3),
format(round(prueba_prop_col$p.value,2), scientific = FALSE, digits = 3),
format(round(prueba_prop_taq$p.value,2), scientific = FALSE, digits = 3),
format(round(prueba_col_grupos$p.value,2), scientific = FALSE, digits = 3),
format(round(prueba_fc_grupos$p.value,2), scientific = FALSE, digits = 3),
format(round(prueba_prop_diff$p.value,2), scientific = FALSE, digits = 3)
),
Decision = c(
ifelse(round(prueba_fc$p.value,2) < 0.05, "Rechazar H₀", "No rechazar H₀"),
ifelse(round(prueba_col$p.value,2) < 0.05, "Rechazar H₀", "No rechazar H₀"),
ifelse(round(prueba_prop_col$p.value,2) < 0.05, "Rechazar H₀", "No rechazar H₀"),
ifelse(round(prueba_prop_taq$p.value,2) < 0.05, "Rechazar H₀", "No rechazar H₀"),
ifelse(round(prueba_col_grupos$p.value,2) < 0.05, "Rechazar H₀", "No rechazar H₀"),
ifelse(round(prueba_fc_grupos$p.value,2) < 0.05, "Rechazar H₀", "No rechazar H₀"),
ifelse(round(prueba_prop_diff$p.value,2) < 0.05, "Rechazar H₀", "No rechazar H₀")
)
)
kable(resultados,
caption = "Resumen de todas las pruebas de hipótesis (α = 0.05)") %>%
kable_styling(bootstrap_options = c("striped", "hover"))| Prueba | Estadistico | P_valor | Decision |
|---|---|---|---|
| FC = 75 lpm | 3.622 | 0 | Rechazar H₀ |
| Colesterol > 200 | 51.365 | 0 | Rechazar H₀ |
| Prop. Col Alto > 20% | 1272.538 | 0 | Rechazar H₀ |
| Prop. Taquicardia ≠ 5% | 54.763 | 0 | Rechazar H₀ |
| Diferencia Colesterol | 2.867 | 0 | Rechazar H₀ |
| FC Fumadores > No Fumadores | -3.597 | 0 | Rechazar H₀ |
| Diferencia Prop. Col Alto | 5.173 | 0.02 | Rechazar H₀ |
Conclusiones
Frecuencia Cardíaca: Los datos sugieren que la frecuencia cardíaca promedio de la población es significativamente diferente de 75 lpm.
Colesterol: Se encontró evidencia sobre si los niveles medios de colesterol superan los 200 mg/dL según el p-valor obtenido.
Proporciones: Las pruebas de proporciones revelan información importante sobre la prevalencia de colesterol alto y taquicardia en la población estudiada.
Comparaciones entre grupos: Los análisis comparativos entre fumadores y no fumadores proporcionan insights valiosos sobre los efectos del tabaquismo en la salud cardiovascular.
Estos resultados tienen implicaciones importantes para la comprensión de los factores de riesgo cardiovascular y pueden proporcionar información para el diseño de estrategias de salud pública y medicina preventiva en el mercado del diseño de mecanismos de política pública.