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)
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
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.
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
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.
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
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.
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
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
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.
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
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.
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
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.
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.