1. Cargar datos

setwd("C:/Users/Terumo/Downloads")  # Cambiar si es necesario
insurance <- read_csv("smoking_health_data_final.csv")
insurance <- as.data.frame(unclass(insurance), stringsAsFactors = TRUE)

2. Frecuencia cardíaca = 75 (media)

z.test(x = insurance$heart_rate,
       sigma.x = sd(insurance$heart_rate),
       mu = 75,
       alternative = "two.sided",
       conf.level = 0.95)
## 
##  One-sample z-Test
## 
## data:  insurance$heart_rate
## z = 3.5809, p-value = 0.0003423
## alternative hypothesis: true mean is not equal to 75
## 95 percent confidence interval:
##  75.31188 76.06607
## sample estimates:
## mean of x 
##  75.68897

Visualización

ggplot(insurance, aes(x = heart_rate)) +
  geom_histogram(binwidth = 5, fill = "#69b3a2", color = "white") +
  geom_vline(xintercept = 75, color = "red", linetype = "dashed", size = 1) +
  labs(title = "Distribución de frecuencia cardíaca", x = "Frecuencia cardíaca (lpm)", y = "Cantidad") +
  theme_minimal()

Interpretación gráfica:

La línea roja indica el valor hipotético de 75 lpm. Si la distribución está centrada alrededor de esta línea, sugiere que la media podría estar cerca de 75. Si está visiblemente desplazada, apoya la posibilidad de que la media difiera de ese valor.

3. Colesterol > 200 (media)

z.test(x = insurance$chol,
       sigma.x = sd(insurance$chol),
       mu = 200,
       alternative = "greater",
       conf.level = 0.95)
## 
##  One-sample z-Test
## 
## data:  insurance$chol
## z = NA, p-value = NA
## alternative hypothesis: true mean is greater than 200
## 95 percent confidence interval:
##  NA NA
## sample estimates:
## mean of x 
##  236.5959

Visualización

ggplot(insurance, aes(x = chol)) +
  geom_histogram(binwidth = 10, fill = "#FF9999", color = "black") +
  geom_vline(xintercept = 200, color = "blue", linetype = "dashed", size = 1) +
  labs(title = "Distribución del colesterol", x = "Colesterol (mg/dL)", y = "Cantidad") +
  theme_minimal()

Interpretación gráfica:
La línea azul marca el umbral de 200 mg/dL. Si la mayor parte de la distribución está a la derecha de esta línea, indica que los valores tienden a ser mayores, lo cual respalda la hipótesis alternativa.

4. Proporción colesterol alto (>240 mg/dL)

insurance <- insurance %>% filter(!is.na(chol))
insurance$colesterol_alto <- ifelse(insurance$chol > 240, 1, 0)

table(insurance$colesterol_alto)
## 
##    0    1 
## 2224 1669
prop.test(x = sum(insurance$colesterol_alto),
          n = nrow(insurance),
          p = 0.20,
          alternative = "greater",
          conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  sum(insurance$colesterol_alto) out of nrow(insurance), null probability 0.2
## X-squared = 1271.4, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is greater than 0.2
## 95 percent confidence interval:
##  0.4155977 1.0000000
## sample estimates:
##         p 
## 0.4287182

Visualización

insurance %>%
  count(colesterol_alto) %>%
  mutate(Estado = ifelse(colesterol_alto == 1, "Alto (>240)", "Normal")) %>%
  ggplot(aes(x = Estado, y = n, fill = Estado)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = n), vjust = -0.5) +
  labs(title = "Conteo de personas con colesterol alto", x = "", y = "Cantidad") +
  theme_minimal()

Interpretación gráfica:

1669 personas tienen el colesterol alto.

5. Proporción taquicardia (>100 lpm)

insurance$taquicardia <- ifelse(insurance$heart_rate > 100, 1, 0)
table(insurance$taquicardia)
## 
##    0    1 
## 3800   93
prop.test(x = sum(insurance$taquicardia),
          n = nrow(insurance),
          p = 0.05,
          alternative = "two.sided",
          conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  sum(insurance$taquicardia) out of nrow(insurance), null probability 0.05
## X-squared = 55.329, df = 1, p-value = 1.019e-13
## alternative hypothesis: true p is not equal to 0.05
## 95 percent confidence interval:
##  0.01942520 0.02931656
## sample estimates:
##          p 
## 0.02388903

Visualización

insurance %>%
  count(taquicardia) %>%
  mutate(Estado = ifelse(taquicardia == 1, "Taquicardia", "Normal")) %>%
  ggplot(aes(x = Estado, y = n, fill = Estado)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = n), vjust = -0.5) +
  labs(title = "Conteo de personas con taquicardia", x = "", y = "Cantidad") +
  theme_minimal()

Interpretación gráfica: Solo 93 personas de las personas de la lista de datos tienen taquicardia. ## 6. Diferencia de medias: colesterol (fumadores vs no)

group_colesterol <- split(insurance, insurance$current_smoker)

z.test(x = group_colesterol$yes$chol,
       y = group_colesterol$no$chol,
       sigma.x = sd(group_colesterol$yes$chol),
       sigma.y = sd(group_colesterol$no$chol),
       alternative = "two.sided",
       conf.level = 0.95)
## 
##  Two-sample z-Test
## 
## data:  group_colesterol$yes$chol and group_colesterol$no$chol
## z = -2.9119, p-value = 0.003592
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -6.924969 -1.353149
## sample estimates:
## mean of x mean of y 
##  234.5067  238.6458

Visualización

ggplot(insurance, aes(x = current_smoker, y = chol, fill = current_smoker)) +
  geom_boxplot() +
  labs(title = "Colesterol según estado de fumador", x = "Fumador actual", y = "Colesterol (mg/dL)") +
  theme_minimal()

Interpretación gráfica: El analisis del colesterol es un a grafica similar en ambas situciones el colesterol es alto en fumadores y no fumadores.

7. Frecuencia cardíaca: fumadores > no fumadores

z.test(x = group_colesterol$yes$heart_rate,
       y = group_colesterol$no$heart_rate,
       sigma.x = sd(group_colesterol$yes$heart_rate),
       sigma.y = sd(group_colesterol$no$heart_rate),
       alternative = "greater",
       conf.level = 0.95)
## 
##  Two-sample z-Test
## 
## data:  group_colesterol$yes$heart_rate and group_colesterol$no$heart_rate
## z = 3.5748, p-value = 0.0001752
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
##  0.7424906        NA
## sample estimates:
## mean of x mean of y 
##  76.39056  75.01527

Visualización

ggplot(insurance, aes(x = current_smoker, y = heart_rate, fill = current_smoker)) +
  geom_boxplot() +
  labs(title = "Frecuencia cardíaca según fumador", x = "Fumador actual", y = "Frecuencia cardíaca (lpm)") +
  theme_minimal()

Interpretación gráfica: La pobacion fumadora segun la interpretación del grafico obtenemos que la mayoria poblacion de fumadores tienen en su mayoria una frecuencia cardiaca alta.

8. Proporciones colesterol alto: fumadores vs no

tabla_colesterol <- table(insurance$current_smoker, insurance$colesterol_alto)

prop.test(x = tabla_colesterol[, "1"],
          n = rowSums(tabla_colesterol),
          alternative = "two.sided",
          conf.level = 0.95)
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  tabla_colesterol[, "1"] out of rowSums(tabla_colesterol)
## X-squared = 5.4583, df = 1, p-value = 0.01948
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  0.005995786 0.069158628
## sample estimates:
##    prop 1    prop 2 
## 0.4473282 0.4097510

Visualización

insurance %>%
  group_by(current_smoker, colesterol_alto) %>%
  summarise(n = n(), .groups = "drop") %>%
  mutate(label = ifelse(colesterol_alto == 1, "Alto", "Normal")) %>%
  ggplot(aes(x = current_smoker, y = n, fill = label)) +
  geom_bar(stat = "identity", position = "stack") +
  labs(title = "Colesterol alto por grupo de fumadores", x = "Fumador", y = "Cantidad") +
  theme_minimal()

Interpretación gráfica: Es menor la cantidad poblacional de fumadores con colesterol alto de acuerdo a las personas que no fuman a lo cual se puede interpretar que la afectacion del colesterol no es una variable que afecte la adiccion al tabaquismo.

Conclusión

  • Se probaron dos hipótesis sobre la salud poblacional.

  • El colesterol no es una variable que afecte el uso del cigarillo en la personas.

  • EL uso frecuente de cigarrillo puede aumentar la frecuencia cardiaca y esto puede ser posible causa de enfermedades del corazón

  • Se utilizaron pruebas z para analizar si los promedios difieren de valores críticos.

  • Las visualizaciones apoyan los análisis estadísticos al mostrar cómo se distribuyen los datos en relación con los umbrales planteados.