1 Introducción

El presente informe desarrolla un análisis estadístico sobre la base de datos Smokers Health Data, la cual contiene información clínica y fisiológica de personas fumadoras y no fumadoras. El objetivo principal es aplicar pruebas de hipótesis para evaluar si existen diferencias significativas en variables como frecuencia cardíaca y colesterol, además de representar los resultados mediante visualizaciones construidas con ggplot2.

La visualización es importante porque permite observar la distribución de las variables, comparar grupos y comunicar los resultados de las pruebas estadísticas de una forma más clara. En este caso, los gráficos ayudan a interpretar si las diferencias observadas en los datos son relevantes para la toma de decisiones en contextos de salud y análisis de datos.

2 Carga y limpieza de la base de datos

datos_originales <- read.csv("smoking_health_data_final.csv")

str(datos_originales)
## '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_originales)
##       age               sex         current_smoker   heart_rate    
##  Min.   :32.00   Length   :3900   Length   :3900   Min.   : 44.00  
##  1st Qu.:42.00   N.unique :   2   N.unique :   2   1st Qu.: 68.00  
##  Median :49.00   N.blank  :   0   N.blank  :   0   Median : 75.00  
##  Mean   :49.54   Min.nchar:   4   Min.nchar:   2   Mean   : 75.69  
##  3rd Qu.:56.00   Max.nchar:   6   Max.nchar:   3   3rd Qu.: 82.00  
##  Max.   :70.00                                     Max.   :143.00  
##                                                                    
##    blood_pressure  cigs_per_day         chol      
##  Length   :3900   Min.   : 0.000   Min.   :113.0  
##  N.unique :2317   1st Qu.: 0.000   1st Qu.:206.0  
##  N.blank  :   0   Median : 0.000   Median :234.0  
##  Min.nchar:   5   Mean   : 9.169   Mean   :236.6  
##  Max.nchar:  11   3rd Qu.:20.000   3rd Qu.:263.0  
##                   Max.   :70.000   Max.   :696.0  
##                   NAs    :14       NAs    :7

2.1 Proceso de limpieza

datos_limpios <- datos_originales %>%
  mutate(
    sex = factor(trimws(tolower(sex))),
    current_smoker = factor(trimws(tolower(current_smoker)), levels = c("no", "yes")),
    heart_rate = as.numeric(heart_rate),
    chol = as.numeric(chol),
    cigs_per_day = as.numeric(cigs_per_day),
    colesterol_alto = chol > 240,
    taquicardia = heart_rate > 100
  ) %>%
  separate(
    blood_pressure,
    into = c("presion_sistolica", "presion_diastolica"),
    sep = "/",
    convert = TRUE,
    remove = FALSE
  ) %>%
  mutate(
    cigs_per_day_limpio = ifelse(current_smoker == "no", 0, cigs_per_day)
  )

# Revisión de valores faltantes
valores_faltantes <- data.frame(
  variable = names(datos_limpios),
  faltantes = colSums(is.na(datos_limpios))
)

kable(valores_faltantes, caption = "Valores faltantes por variable")
Valores faltantes por variable
variable faltantes
age age 0
sex sex 0
current_smoker current_smoker 0
heart_rate heart_rate 0
blood_pressure blood_pressure 0
presion_sistolica presion_sistolica 0
presion_diastolica presion_diastolica 0
cigs_per_day cigs_per_day 14
chol chol 7
colesterol_alto colesterol_alto 7
taquicardia taquicardia 0
cigs_per_day_limpio cigs_per_day_limpio 14

En esta primera etapa se realiza la carga inicial de la base de datos smoking_health_data_final.csv, permitiendo revisar su estructura general mediante str() y obtener un resumen estadístico preliminar con summary(). Esto facilita identificar el tipo de variables disponibles, sus rangos, posibles valores atípicos, valores faltantes y la forma en que se encuentran almacenados los datos antes de iniciar el proceso de limpieza.

Posteriormente, se ejecuta una limpieza y transformación de la base de datos para dejarla preparada para el análisis estadístico. En este proceso se estandarizan variables categóricas como el sexo y el estado de fumador, se convierten variables numéricas como frecuencia cardíaca, colesterol y cigarrillos por día, y se crean nuevas variables binarias como colesterol_alto y taquicardia, necesarias para las pruebas de hipótesis de proporciones. Además, la variable de presión arterial se separa en presión sistólica y diastólica, lo que permite analizarla de forma más clara. Finalmente, se genera una tabla de valores faltantes para verificar la calidad de la información y detectar posibles datos incompletos antes de continuar con el análisis exploratorio.

3 Análisis descriptivo y exploratorio

3.1 Resumen general de variables numéricas

resumen_numerico <- datos_limpios %>%
  summarise(
    n = n(),
    edad_media = mean(age, na.rm = TRUE),
    edad_sd = sd(age, na.rm = TRUE),
    frecuencia_media = mean(heart_rate, na.rm = TRUE),
    frecuencia_sd = sd(heart_rate, na.rm = TRUE),
    colesterol_medio = mean(chol, na.rm = TRUE),
    colesterol_sd = sd(chol, na.rm = TRUE),
    presion_sistolica_media = mean(presion_sistolica, na.rm = TRUE),
    presion_diastolica_media = mean(presion_diastolica, na.rm = TRUE)
  )

kable(resumen_numerico, digits = 2, caption = "Resumen descriptivo de variables numéricas")
Resumen descriptivo de variables numéricas
n edad_media edad_sd frecuencia_media frecuencia_sd colesterol_medio colesterol_sd presion_sistolica_media presion_diastolica_media
3900 49.54 8.56 75.69 12.02 236.6 44.38 132.4 82.99

3.2 Distribución por sexo y condición de fumador

tabla_fumador <- datos_limpios %>%
  count(current_smoker) %>%
  mutate(porcentaje = n / sum(n))

tabla_sexo <- datos_limpios %>%
  count(sex) %>%
  mutate(porcentaje = n / sum(n))

kable(tabla_fumador, digits = 3, caption = "Distribución de fumadores y no fumadores")
Distribución de fumadores y no fumadores
current_smoker n porcentaje
no 1968 0.505
yes 1932 0.495
kable(tabla_sexo, digits = 3, caption = "Distribución por sexo")
Distribución por sexo
sex n porcentaje
female 2081 0.534
male 1819 0.466
ggplot(datos_limpios, aes(x = current_smoker)) +
  geom_bar() +
  labs(
    title = "Distribución de individuos según condición de fumador",
    x = "Fumador actual",
    y = "Cantidad de personas"
  ) +
  theme_minimal()

ggplot(datos_limpios, aes(x = heart_rate)) +
  geom_histogram(bins = 30) +
  labs(
    title = "Distribución de la frecuencia cardíaca",
    x = "Frecuencia cardíaca (lpm)",
    y = "Frecuencia"
  ) +
  theme_minimal()

ggplot(datos_limpios, aes(x = chol)) +
  geom_histogram(bins = 30, na.rm = TRUE) +
  labs(
    title = "Distribución del colesterol",
    x = "Colesterol (mg/dL)",
    y = "Frecuencia"
  ) +
  theme_minimal()

En esta sección se realiza un análisis descriptivo inicial de las variables numéricas y categóricas de la base de datos. Para las variables numéricas se calcularon medidas como la media y la desviación estándar de edad, frecuencia cardíaca, colesterol y presión arterial. La base contiene un total de 3900 registros, con una edad promedio de 49.54 años y una desviación estándar de 8.56, lo que indica que la mayoría de los individuos se encuentran en una población adulta. La frecuencia cardíaca promedio fue de 75.69 latidos por minuto, valor cercano a la referencia general de 75 lpm planteada en la prueba de hipótesis. Por su parte, el colesterol promedio fue de 236.60 mg/dL, con una desviación estándar de 44.38, lo cual evidencia una variabilidad importante en los niveles de colesterol de los individuos analizados.

En cuanto a las variables categóricas, se observa una distribución equilibrada entre fumadores y no fumadores. Del total de personas, 1968 son no fumadoras, equivalentes al 50.5%, mientras que 1932 son fumadoras, representando el 49.5%. Esta distribución balanceada permite realizar comparaciones más confiables entre ambos grupos en las pruebas de diferencia de medias y proporciones. En la variable sexo, se identifica una mayor participación de mujeres, con 2081 registros, equivalentes al 53.4%, frente a 1819 hombres, que representan el 46.6%. Finalmente, los gráficos de barras e histogramas permiten visualizar la distribución de los individuos según su condición de fumador, así como el comportamiento de variables clave como frecuencia cardíaca y colesterol, facilitando la identificación de patrones antes de aplicar las pruebas de hipótesis.

4 Pruebas de hipótesis

Todas las pruebas se interpretan con un nivel de significancia del 5%, es decir, \(\alpha = 0.05\).

4.1 Prueba de hipótesis para una media: frecuencia cardíaca promedio igual a 75 lpm

Hipótesis:

  • \(H_0\): La media poblacional de la frecuencia cardíaca es igual a 75 lpm.
  • \(H_1\): La media poblacional de la frecuencia cardíaca es diferente de 75 lpm.
prueba_1 <- t.test(datos_limpios$heart_rate, mu = 75, alternative = "two.sided")
prueba_1
## 
##  One Sample t-test
## 
## data:  datos_limpios$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
ggplot(datos_limpios, aes(x = heart_rate)) +
  geom_histogram(bins = 30) +
  geom_vline(xintercept = 75, linetype = "dashed", linewidth = 1) +
  geom_vline(xintercept = mean(datos_limpios$heart_rate, na.rm = TRUE), linewidth = 1) +
  labs(
    title = "Frecuencia cardíaca promedio frente al valor de referencia de 75 lpm",
    subtitle = "Línea punteada: valor de referencia | Línea continua: media muestral",
    x = "Frecuencia cardíaca (lpm)",
    y = "Frecuencia"
  ) +
  theme_minimal()

Interpretación: En esta prueba se busca evaluar si la frecuencia cardíaca promedio de los individuos de la muestra es igual al valor de referencia de 75 latidos por minuto. Para esto se aplica una prueba t para una muestra, comparando la media observada de la variable heart_rate contra el valor hipotético de 75 lpm. La hipótesis nula plantea que la media poblacional es igual a 75 lpm, mientras que la hipótesis alternativa indica que existe una diferencia, ya sea por encima o por debajo de este valor. Adicionalmente, se genera un histograma de la frecuencia cardíaca, en el cual se incluye una línea punteada para representar el valor de referencia y una línea continua para mostrar la media muestral.

El resultado muestra que la frecuencia cardíaca promedio de la muestra fue aproximadamente de 75.69 lpm. El p-valor obtenido fue 0.00035, el cual es menor al nivel de significancia del 5%. Por lo tanto, se rechaza la hipótesis nula y se concluye que la frecuencia cardíaca promedio de los individuos analizados es estadísticamente diferente de 75 lpm. Sin embargo, aunque la diferencia es significativa desde el punto de vista estadístico, en términos prácticos la variación es pequeña, ya que la media muestral se encuentra muy cercana al valor de referencia. Esto puede explicarse por el tamaño de la muestra, dado que con una cantidad amplia de registros incluso diferencias pequeñas pueden resultar estadísticamente significativas.

4.2 Prueba de hipótesis para una media: colesterol medio mayor a 200 mg/dL

Hipótesis:

  • \(H_0\): El nivel medio de colesterol en la población es menor o igual a 200 mg/dL.
  • \(H_1\): El nivel medio de colesterol en la población es mayor a 200 mg/dL.
prueba_2 <- t.test(datos_limpios$chol, mu = 200, alternative = "greater")
prueba_2
## 
##  One Sample t-test
## 
## data:  datos_limpios$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
ggplot(datos_limpios, aes(x = chol)) +
  geom_histogram(bins = 30, na.rm = TRUE) +
  geom_vline(xintercept = 200, linetype = "dashed", linewidth = 1) +
  geom_vline(xintercept = mean(datos_limpios$chol, na.rm = TRUE), linewidth = 1) +
  labs(
    title = "Colesterol medio frente al umbral de 200 mg/dL",
    subtitle = "Línea punteada: umbral clínico | Línea continua: media muestral",
    x = "Colesterol (mg/dL)",
    y = "Frecuencia"
  ) +
  theme_minimal()

Interpretación: En esta prueba se evalúa si el nivel promedio de colesterol de los individuos analizados supera el umbral de 200 mg/dL, valor que suele utilizarse como referencia para identificar posibles niveles elevados de colesterol. Para esto se aplica una prueba t para una muestra con una hipótesis alternativa unilateral, ya que el interés principal no es comprobar si el promedio es simplemente diferente de 200, sino si es específicamente mayor a este valor. La hipótesis nula plantea que el colesterol medio poblacional es menor o igual a 200 mg/dL, mientras que la hipótesis alternativa sostiene que el promedio es superior a dicho umbral.

Los resultados muestran que el colesterol promedio de la muestra fue aproximadamente de 236.60 mg/dL, valor considerablemente superior al punto de referencia de 200 mg/dL. Además, el p-valor obtenido fue menor a 0.001, por lo cual se rechaza la hipótesis nula con un nivel de significancia del 5%. Esto permite concluir que existe evidencia estadística suficiente para afirmar que el nivel medio de colesterol en la población analizada es significativamente mayor a 200 mg/dL. Desde una perspectiva de salud, este resultado es relevante porque sugiere que, en promedio, la muestra presenta niveles de colesterol por encima del valor recomendado, lo que podría asociarse con un mayor riesgo cardiovascular y justificar análisis posteriores por condición de fumador u otros factores clínicos. ## Prueba de hipótesis para una proporción: proporción de personas con colesterol alto

Se define colesterol alto como un valor de colesterol mayor a 240 mg/dL.

Hipótesis:

  • \(H_0\): La proporción de personas con colesterol alto es igual al 20%.
  • \(H_1\): La proporción de personas con colesterol alto es mayor al 20%.
datos_colesterol <- datos_limpios %>% filter(!is.na(chol))

x_col_alto <- sum(datos_colesterol$colesterol_alto)
n_col <- nrow(datos_colesterol)

prueba_3 <- prop.test(
  x = x_col_alto,
  n = n_col,
  p = 0.20,
  alternative = "greater",
  correct = FALSE
)

prueba_3
## 
##  1-sample proportions test without continuity correction
## 
## data:  x_col_alto out of n_col, 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
datos_colesterol %>%
  count(colesterol_alto) %>%
  mutate(
    porcentaje = n / sum(n),
    categoria = ifelse(colesterol_alto, "Colesterol alto", "No colesterol alto")
  ) %>%
  ggplot(aes(x = categoria, y = porcentaje)) +
  geom_col() +
  geom_hline(yintercept = 0.20, linetype = "dashed", linewidth = 1) +
  scale_y_continuous(labels = percent_format()) +
  labs(
    title = "Proporción de personas con colesterol alto",
    subtitle = "Línea punteada: proporción de referencia del 20%",
    x = "Categoría",
    y = "Proporción"
  ) +
  theme_minimal()

Interpretación: En esta prueba se analiza la proporción de personas que presentan colesterol alto dentro de la muestra, definiendo esta condición como un valor de colesterol superior a 240 mg/dL. Para ello, primero se filtran los registros que cuentan con información válida en la variable chol y luego se calcula cuántas personas cumplen con la condición de colesterol alto. Posteriormente, se aplica una prueba de hipótesis para una proporción, comparando la proporción observada en la muestra contra el valor de referencia del 20%. La hipótesis nula plantea que la proporción de personas con colesterol alto es igual al 20%, mientras que la hipótesis alternativa indica que dicha proporción es mayor al 20%.

Los resultados muestran que la proporción observada de personas con colesterol alto fue aproximadamente de 42.87%, valor que se encuentra muy por encima del 20% planteado como referencia. Además, el p-valor obtenido fue menor a 0.001, por lo cual se rechaza la hipótesis nula con un nivel de significancia del 5%. Esto permite concluir que existe evidencia estadística suficiente para afirmar que la proporción de personas con colesterol alto en la muestra es significativamente mayor al 20%. Este resultado es importante porque refleja una presencia elevada de niveles altos de colesterol en la población analizada, lo cual puede representar un posible factor de riesgo cardiovascular y justifica realizar comparaciones adicionales entre grupos, como fumadores y no fumadores.

4.3 Prueba de hipótesis para una proporción: proporción de personas con taquicardia

Se define taquicardia como una frecuencia cardíaca mayor a 100 lpm.

Hipótesis:

  • \(H_0\): La proporción de personas con taquicardia es igual al 5%.
  • \(H_1\): La proporción de personas con taquicardia es diferente del 5%.
x_taquicardia <- sum(datos_limpios$taquicardia, na.rm = TRUE)
n_hr <- sum(!is.na(datos_limpios$heart_rate))

prueba_4 <- prop.test(
  x = x_taquicardia,
  n = n_hr,
  p = 0.05,
  alternative = "two.sided",
  correct = FALSE
)

prueba_4
## 
##  1-sample proportions test without continuity correction
## 
## data:  x_taquicardia out of n_hr, 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
datos_limpios %>%
  count(taquicardia) %>%
  mutate(
    porcentaje = n / sum(n),
    categoria = ifelse(taquicardia, "Taquicardia", "Sin taquicardia")
  ) %>%
  ggplot(aes(x = categoria, y = porcentaje)) +
  geom_col() +
  geom_hline(yintercept = 0.05, linetype = "dashed", linewidth = 1) +
  scale_y_continuous(labels = percent_format()) +
  labs(
    title = "Proporción de personas con taquicardia",
    subtitle = "Línea punteada: proporción de referencia del 5%",
    x = "Categoría",
    y = "Proporción"
  ) +
  theme_minimal()

Interpretación: En esta prueba se evalúa la proporción de personas que presentan taquicardia dentro de la muestra, definiendo esta condición como una frecuencia cardíaca superior a 100 latidos por minuto. Para ello, se calcula el número de individuos que cumplen esta condición y se compara la proporción observada contra un valor de referencia del 5%. En este caso se aplica una prueba de hipótesis para una proporción con alternativa bilateral, debido a que el objetivo es determinar si la proporción de personas con taquicardia es diferente al 5%, sin asumir previamente si será mayor o menor.

Los resultados muestran que la proporción observada de personas con taquicardia fue aproximadamente de 2.38%, valor inferior al 5% planteado como referencia. El p-valor obtenido fue menor a 0.001, por lo cual se rechaza la hipótesis nula con un nivel de significancia del 5%. Esto indica que la proporción de personas con taquicardia en la muestra no es igual al 5%, sino significativamente menor. Desde el punto de vista descriptivo, este resultado sugiere que la presencia de taquicardia es poco frecuente dentro de los individuos analizados, aunque sigue siendo una variable relevante para evaluar posibles diferencias entre grupos o su relación con otras condiciones de salud.

4.4 Diferencia de medias: colesterol entre fumadores y no fumadores

Hipótesis:

  • \(H_0\): No hay diferencia en los niveles medios de colesterol entre fumadores y no fumadores.
  • \(H_1\): Existe una diferencia significativa entre los niveles medios de colesterol.
resumen_colesterol_grupo <- datos_limpios %>%
  filter(!is.na(chol)) %>%
  group_by(current_smoker) %>%
  summarise(
    n = n(),
    media_colesterol = mean(chol),
    desviacion = sd(chol),
    .groups = "drop"
  )

kable(resumen_colesterol_grupo, digits = 2, caption = "Colesterol promedio por condición de fumador")
Colesterol promedio por condición de fumador
current_smoker n media_colesterol desviacion
no 1965 238.65 43.87
yes 1928 234.51 44.80
prueba_5 <- t.test(chol ~ current_smoker, data = datos_limpios, alternative = "two.sided")
prueba_5
## 
##  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
ggplot(datos_limpios, aes(x = current_smoker, y = chol)) +
  geom_violin(trim = FALSE, na.rm = TRUE) +
  geom_boxplot(width = 0.15, outlier.alpha = 0.4, na.rm = TRUE) +
  labs(
    title = "Comparación del colesterol entre fumadores y no fumadores",
    x = "Fumador actual",
    y = "Colesterol (mg/dL)"
  ) +
  theme_minimal()

Interpretación: En esta prueba se compara el nivel promedio de colesterol entre personas fumadoras y no fumadoras, con el fin de determinar si existen diferencias estadísticamente significativas entre ambos grupos. Para ello, primero se calcula un resumen descriptivo por condición de fumador, incluyendo el número de registros, la media del colesterol y su desviación estándar. Posteriormente, se aplica una prueba t para dos muestras independientes, donde la hipótesis nula plantea que no existen diferencias en el colesterol promedio entre fumadores y no fumadores, mientras que la hipótesis alternativa indica que sí existe una diferencia significativa entre ambos grupos.

Los resultados muestran que el colesterol promedio fue aproximadamente de 234.51 mg/dL en fumadores y de 238.65 mg/dL en no fumadores. El p-valor obtenido fue 0.0036, menor al nivel de significancia del 5%, por lo cual se rechaza la hipótesis nula. Esto indica que existe evidencia estadística suficiente para afirmar que los niveles medios de colesterol difieren entre fumadores y no fumadores. Sin embargo, aunque la diferencia es estadísticamente significativa, la magnitud de la diferencia entre las medias no es muy amplia. Además, al tratarse de una base de datos observacional, este resultado no debe interpretarse como una relación causal directa, ya que pueden existir otros factores asociados, como edad, sexo, hábitos de salud, alimentación u otras condiciones clínicas, que también influyan en los niveles de colesterol.

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

Hipótesis:

  • \(H_0\): No hay diferencia en la frecuencia cardíaca promedio entre fumadores y no fumadores.
  • \(H_1\): La frecuencia cardíaca promedio de los fumadores es mayor que la de los no fumadores.
resumen_hr_grupo <- datos_limpios %>%
  group_by(current_smoker) %>%
  summarise(
    n = n(),
    media_frecuencia = mean(heart_rate, na.rm = TRUE),
    desviacion = sd(heart_rate, na.rm = TRUE),
    .groups = "drop"
  )

kable(resumen_hr_grupo, digits = 2, caption = "Frecuencia cardíaca promedio por condición de fumador")
Frecuencia cardíaca promedio por condición de fumador
current_smoker n media_frecuencia desviacion
no 1968 75.01 12.22
yes 1932 76.38 11.76
prueba_6 <- t.test(heart_rate ~ current_smoker, data = datos_limpios, alternative = "less")
prueba_6
## 
##  Welch Two Sample t-test
## 
## data:  heart_rate by current_smoker
## t = -3.5809, df = 3896.4, p-value = 0.0001733
## alternative hypothesis: true difference in means between group no and group yes is less than 0
## 95 percent confidence interval:
##        -Inf -0.7434658
## sample estimates:
##  mean in group no mean in group yes 
##          75.00762          76.38302
ggplot(datos_limpios, aes(x = current_smoker, y = heart_rate)) +
  geom_violin(trim = FALSE, na.rm = TRUE) +
  geom_boxplot(width = 0.15, outlier.alpha = 0.4, na.rm = TRUE) +
  labs(
    title = "Comparación de frecuencia cardíaca entre fumadores y no fumadores",
    x = "Fumador actual",
    y = "Frecuencia cardíaca (lpm)"
  ) +
  theme_minimal()

Interpretación: En esta prueba se analiza si la frecuencia cardíaca promedio difiere entre personas fumadoras y no fumadoras, específicamente evaluando si los fumadores presentan una media mayor que los no fumadores. Para esto, primero se calcula un resumen descriptivo por grupo, incluyendo el número de registros, la frecuencia cardíaca promedio y la desviación estándar. Luego se aplica una prueba t para dos muestras independientes con hipótesis alternativa unilateral. En el código, la alternativa se define como “less” porque R compara los grupos en orden alfabético de la variable current_smoker, es decir, primero no y luego yes; por lo tanto, la prueba evalúa si la media de los no fumadores es menor que la de los fumadores, lo cual equivale a comprobar que los fumadores tienen una frecuencia cardíaca promedio mayor.

Los resultados muestran que la frecuencia cardíaca promedio fue aproximadamente de 76.38 lpm en fumadores y de 75.01 lpm en no fumadores. El p-valor obtenido fue 0.00017, menor al nivel de significancia del 5%, por lo cual se rechaza la hipótesis nula. Esto indica que existe evidencia estadística suficiente para afirmar que, dentro de la muestra analizada, los fumadores presentan una frecuencia cardíaca promedio significativamente mayor que los no fumadores. Sin embargo, la diferencia observada es cercana a 1.38 lpm, por lo que, aunque es estadísticamente significativa, debe interpretarse con cuidado desde el punto de vista clínico o práctico. Este resultado puede ser relevante como señal de una posible diferencia fisiológica asociada al hábito de fumar, pero no permite establecer causalidad directa debido a la naturaleza observacional de los datos.

4.6 Diferencia de proporciones: colesterol alto entre fumadores y no fumadores

Hipótesis:

  • \(H_0\): La proporción de personas con colesterol alto es la misma en fumadores y no fumadores.
  • \(H_1\): La proporción de personas con colesterol alto es diferente entre fumadores y no fumadores.
tabla_colesterol_fumador <- table(datos_colesterol$current_smoker, datos_colesterol$colesterol_alto)
tabla_colesterol_fumador
##      
##       FALSE TRUE
##   no   1086  879
##   yes  1138  790
x_grupos <- c(
  sum(datos_colesterol$colesterol_alto[datos_colesterol$current_smoker == "yes"]),
  sum(datos_colesterol$colesterol_alto[datos_colesterol$current_smoker == "no"])
)

n_grupos <- c(
  sum(datos_colesterol$current_smoker == "yes"),
  sum(datos_colesterol$current_smoker == "no")
)

prueba_7 <- prop.test(
  x = x_grupos,
  n = n_grupos,
  alternative = "two.sided",
  correct = FALSE
)

prueba_7
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  x_grupos out of n_grupos
## 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.4097510 0.4473282
datos_colesterol %>%
  group_by(current_smoker, colesterol_alto) %>%
  summarise(n = n(), .groups = "drop") %>%
  group_by(current_smoker) %>%
  mutate(porcentaje = n / sum(n)) %>%
  ggplot(aes(x = current_smoker, y = porcentaje, fill = colesterol_alto)) +
  geom_col(position = "fill") +
  scale_y_continuous(labels = percent_format()) +
  labs(
    title = "Proporción de colesterol alto según condición de fumador",
    x = "Fumador actual",
    y = "Proporción dentro de cada grupo",
    fill = "Colesterol alto"
  ) +
  theme_minimal()

Interpretación: En esta prueba se analiza si la proporción de personas con colesterol alto difiere entre fumadores y no fumadores. Para esto, se parte de la variable binaria colesterol_alto, definida previamente como aquellos casos en los que el nivel de colesterol es mayor a 240 mg/dL. Luego se construye una tabla cruzada entre la condición de fumador y la presencia de colesterol alto, lo que permite identificar cuántas personas presentan esta condición dentro de cada grupo. Posteriormente, se aplica una prueba de diferencia de proporciones, donde la hipótesis nula plantea que la proporción de personas con colesterol alto es igual entre fumadores y no fumadores, mientras que la hipótesis alternativa indica que existe una diferencia significativa entre ambos grupos.

Los resultados muestran que la proporción de colesterol alto fue aproximadamente de 40.98% en fumadores y de 44.73% en no fumadores. El p-valor obtenido fue 0.0179, menor al nivel de significancia del 5%, por lo cual se rechaza la hipótesis nula. Esto indica que existe evidencia estadística suficiente para afirmar que la proporción de personas con colesterol alto difiere significativamente entre fumadores y no fumadores. Sin embargo, aunque la diferencia es estadísticamente significativa, debe interpretarse con precaución, ya que la proporción observada fue ligeramente mayor en los no fumadores. Por esta razón, no se debe concluir que el tabaquismo sea la causa directa de la diferencia encontrada. Al tratarse de una base observacional, sería recomendable complementar el análisis considerando otras variables como edad, sexo, presión arterial, índice de masa corporal, hábitos de vida y antecedentes clínicos, las cuales también pueden influir en los niveles de colesterol.

4.7 Complemento: ANOVA exploratorio

Aunque las pruebas principales se desarrollaron mediante t.test y prop.test, también se incluye un análisis ANOVA exploratorio para comparar el colesterol según condición de fumador y sexo. Esto permite complementar la revisión inferencial y observar si existen diferencias entre grupos categóricos.

anova_colesterol <- aov(chol ~ current_smoker * sex, data = datos_limpios)
summary(anova_colesterol)
##                      Df  Sum Sq Mean Sq F value   Pr(>F)    
## current_smoker        1   16672   16672   8.557  0.00346 ** 
## sex                   1   32301   32301  16.579 4.76e-05 ***
## current_smoker:sex    1   37871   37871  19.437 1.07e-05 ***
## Residuals          3889 7577178    1948                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 7 observations deleted due to missingness
ggplot(datos_limpios, aes(x = current_smoker, y = chol)) +
  geom_boxplot(na.rm = TRUE) +
  facet_wrap(~ sex) +
  labs(
    title = "Colesterol por condición de fumador y sexo",
    x = "Fumador actual",
    y = "Colesterol (mg/dL)"
  ) +
  theme_minimal()

Interpretación: Como complemento al análisis inferencial principal, se desarrolla un ANOVA exploratorio para evaluar el comportamiento del colesterol considerando simultáneamente dos variables categóricas: la condición de fumador y el sexo. A diferencia de la prueba t, que compara únicamente dos grupos, el ANOVA permite analizar si existen diferencias estadísticamente significativas en el colesterol promedio cuando se consideran varios factores al mismo tiempo. En este caso, el modelo incluye el efecto de ser fumador, el efecto del sexo y la interacción entre ambas variables, es decir, si la relación entre tabaquismo y colesterol cambia dependiendo de si la persona es hombre o mujer.

El gráfico de cajas separado por sexo permite visualizar la distribución del colesterol en fumadores y no fumadores dentro de cada grupo. Este análisis es útil como una revisión exploratoria adicional, ya que ayuda a identificar posibles diferencias entre subgrupos y a observar si existe algún patrón que no sea evidente en las pruebas individuales. Aunque el ANOVA no reemplaza las pruebas de hipótesis principales solicitadas, sí aporta una perspectiva más amplia del comportamiento de la variable colesterol y permite complementar la interpretación de los resultados. En caso de que alguno de los efectos del ANOVA tenga un p-valor menor a 0.05, se podría considerar que existe una diferencia estadísticamente significativa asociada a ese factor o a la interacción entre factores.

5 Conclusiones

El análisis permitió aplicar diferentes pruebas de hipótesis sobre la base de datos de salud y tabaquismo, integrando técnicas descriptivas, gráficas e inferenciales para evaluar posibles diferencias en variables clínicas como frecuencia cardíaca y colesterol. A partir de la limpieza de datos, la creación de variables binarias y la generación de visualizaciones, fue posible preparar la información para responder las hipótesis planteadas de manera organizada y sustentada estadísticamente.

En las pruebas para una muestra se evidenció que la frecuencia cardíaca promedio fue estadísticamente diferente de 75 lpm, aunque la diferencia observada fue pequeña desde el punto de vista práctico. También se encontró que el colesterol promedio fue significativamente mayor a 200 mg/dL, lo cual sugiere que la población analizada presenta niveles de colesterol elevados en promedio. De igual forma, la proporción de personas con colesterol alto fue significativamente mayor al 20%, mientras que la proporción de personas con taquicardia fue significativamente menor al 5%.

En las comparaciones entre fumadores y no fumadores se identificaron diferencias estadísticamente significativas tanto en el colesterol promedio como en la frecuencia cardíaca promedio. Los fumadores presentaron una frecuencia cardíaca promedio ligeramente superior a la de los no fumadores, mientras que el colesterol promedio y la proporción de colesterol alto mostraron diferencias entre ambos grupos. Sin embargo, estas diferencias deben interpretarse con cuidado, ya que algunas son pequeñas en magnitud y la base de datos es observacional, por lo que no permite establecer relaciones causales directas.

El uso de gráficos como histogramas, diagramas de barras, gráficos de cajas y violin plots permitió complementar la interpretación de las pruebas estadísticas. Estas visualizaciones facilitaron la comprensión de la distribución de las variables, la comparación entre grupos y la identificación de patrones relevantes. Por lo tanto, la visualización de datos se confirma como una herramienta clave para comunicar resultados estadísticos de manera clara y apoyar la toma de decisiones basada en evidencia.

Finalmente, el análisis ANOVA exploratorio permitió ampliar la revisión del colesterol considerando simultáneamente la condición de fumador, el sexo y su interacción. Esto aporta una perspectiva más completa del comportamiento de la variable y demuestra la utilidad de combinar diferentes métodos estadísticos para obtener una visión más integral del problema estudiado.

6 Recomendaciones

Se recomienda continuar el análisis incorporando variables adicionales como edad, sexo, presión arterial, índice de masa corporal, glucosa, hemoglobina, capacidad pulmonar y antecedentes de enfermedades respiratorias o cardiovasculares. Esto permitiría construir modelos más completos y controlar posibles factores que también pueden influir en los niveles de colesterol y frecuencia cardíaca.

También sería conveniente aplicar modelos estadísticos multivariados, como regresión lineal o regresión logística, para evaluar el efecto conjunto de varias variables sobre indicadores de salud. De esta manera, se podría analizar con mayor precisión si la condición de fumador se mantiene asociada a ciertas variables clínicas después de considerar otros factores relevantes.

Se recomienda interpretar los resultados desde una perspectiva estadística y práctica. Aunque varias pruebas arrojaron p-valores menores a 0.05, algunas diferencias observadas entre grupos fueron pequeñas, por lo que no necesariamente representan un impacto clínico fuerte. Por esta razón, además del p-valor, es importante considerar la magnitud de las diferencias y el contexto médico de cada variable.

Finalmente, se sugiere utilizar visualizaciones interactivas o dashboards en herramientas como Plotly, Shiny o RPubs para facilitar la comunicación de los resultados a públicos no técnicos. Esto permitiría explorar las variables de manera dinámica, comparar grupos de forma más clara y fortalecer la toma de decisiones en contextos de salud pública, prevención y análisis de riesgos.

7 Tabla resumen de resultados

Resumen general de pruebas de hipótesis con nivel de significancia del 5%
Prueba Metodo P_valor_aproximado Decision_alpha_005 Interpretacion
Media frecuencia cardíaca = 75 lpm t.test una muestra 0.00035 Rechazar H0 La frecuencia cardíaca promedio es estadísticamente diferente de 75 lpm.
Media colesterol > 200 mg/dL t.test una muestra < 0.001 Rechazar H0 El colesterol promedio es significativamente mayor a 200 mg/dL.
Proporción colesterol alto > 20% prop.test una muestra < 0.001 Rechazar H0 La proporción de colesterol alto es significativamente mayor al 20%.
Proporción taquicardia = 5% prop.test una muestra < 0.001 Rechazar H0 La proporción de taquicardia es significativamente diferente del 5% y menor a este valor.
Colesterol entre fumadores y no fumadores t.test dos muestras 0.0036 Rechazar H0 Existe diferencia significativa en el colesterol promedio entre fumadores y no fumadores.
Frecuencia cardíaca fumadores > no fumadores t.test dos muestras 0.00017 Rechazar H0 Los fumadores presentan una frecuencia cardíaca promedio significativamente mayor.
Proporción colesterol alto entre fumadores y no fumadores prop.test dos proporciones 0.0179 Rechazar H0 La proporción de colesterol alto difiere significativamente entre fumadores y no fumadores.