diabetes_binary_5050split <-
diabetes_binary_5050split %>%
mutate(
MentHlth = rescale(MentHlth, to = c(0, 1)),
)
diabetes_binary_5050split$Sex= factor(diabetes_binary_5050split$Sex)
binary_vars <- c(
"HighBP","HighChol","Stroke",
"HeartDiseaseorAttack","PhysActivity","Veggies",
"HvyAlcoholConsump"
)
diabetes_binary_5050split[binary_vars] <-
lapply(
diabetes_binary_5050split[binary_vars],
factor
)
library(gtsummary)
tbl_summary(
diabetes_binary_5050split,
by = Diabetes_binary,
statistic = list(
BMI ~ "{mean} ({sd})",
MentHlth ~ "{median} ({p25}, {p75})",
all_categorical() ~ "{n} ({p}%)"
)
)
| Characteristic | 0 N = 35,3461 |
1 N = 35,3461 |
|---|---|---|
| HighBP | ||
| 0 | 22,118 (63%) | 8,742 (25%) |
| 1 | 13,228 (37%) | 26,604 (75%) |
| HighChol | ||
| 0 | 21,869 (62%) | 11,660 (33%) |
| 1 | 13,477 (38%) | 23,686 (67%) |
| BMI | 28 (6) | 32 (7) |
| Stroke | ||
| 0 | 34,219 (97%) | 32,078 (91%) |
| 1 | 1,127 (3.2%) | 3,268 (9.2%) |
| HeartDiseaseorAttack | ||
| 0 | 32,775 (93%) | 27,468 (78%) |
| 1 | 2,571 (7.3%) | 7,878 (22%) |
| PhysActivity | ||
| 0 | 7,934 (22%) | 13,059 (37%) |
| 1 | 27,412 (78%) | 22,287 (63%) |
| Veggies | ||
| 0 | 6,322 (18%) | 8,610 (24%) |
| 1 | 29,024 (82%) | 26,736 (76%) |
| HvyAlcoholConsump | ||
| 0 | 33,158 (94%) | 34,514 (98%) |
| 1 | 2,188 (6.2%) | 832 (2.4%) |
| MentHlth | 0.00 (0.00, 0.07) | 0.00 (0.00, 0.10) |
| Sex | ||
| 0 | 19,975 (57%) | 18,411 (52%) |
| 1 | 15,371 (43%) | 16,935 (48%) |
| 1 n (%); Mean (SD); Median (Q1, Q3) | ||
t.test(BMI ~ Diabetes_binary, data = diabetes_binary_5050split)
##
## Welch Two Sample t-test
##
## data: BMI by Diabetes_binary
## t = -81.591, df = 68653, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## -4.274321 -4.073781
## sample estimates:
## mean in group 0 mean in group 1
## 27.76996 31.94401
library(ggplot2)
ggplot(diabetes_binary_5050split, aes(x = PhysActivity, y = BMI, fill = factor(Diabetes_binary))) +
geom_boxplot() +
labs( x = "Actividad física", y = "BMI", fill = "Diabetes")
mod_logit <- glm(Diabetes_binary ~ ., data = diabetes_binary_5050split, family = binomial)
summary(mod_logit)
##
## Call:
## glm(formula = Diabetes_binary ~ ., family = binomial, data = diabetes_binary_5050split)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.08671 0.05143 -60.017 < 2e-16 ***
## HighBP1 1.12934 0.01814 62.267 < 2e-16 ***
## HighChol1 0.75033 0.01777 42.231 < 2e-16 ***
## BMI 0.07510 0.00145 51.800 < 2e-16 ***
## Stroke1 0.51053 0.03979 12.831 < 2e-16 ***
## HeartDiseaseorAttack1 0.73614 0.02701 27.253 < 2e-16 ***
## PhysActivity1 -0.33008 0.01959 -16.854 < 2e-16 ***
## Veggies1 -0.17325 0.02150 -8.058 7.76e-16 ***
## HvyAlcoholConsump1 -0.92798 0.04650 -19.957 < 2e-16 ***
## MentHlth 0.22393 0.03324 6.736 1.63e-11 ***
## Sex1 0.13972 0.01759 7.942 1.99e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 98000 on 70691 degrees of freedom
## Residual deviance: 79009 on 70681 degrees of freedom
## AIC: 79031
##
## Number of Fisher Scoring iterations: 4
coefs <- summary(mod_logit)$coefficients
tabla_mod1 <- data.frame(
Termino = rownames(coefs),
Logit = round(coefs[, 1], 3),
Odds_Ratio = round(exp(coefs[, 1]), 3),
row.names = NULL)
tabla_mod1
## Termino Logit Odds_Ratio
## 1 (Intercept) -3.087 0.046
## 2 HighBP1 1.129 3.094
## 3 HighChol1 0.750 2.118
## 4 BMI 0.075 1.078
## 5 Stroke1 0.511 1.666
## 6 HeartDiseaseorAttack1 0.736 2.088
## 7 PhysActivity1 -0.330 0.719
## 8 Veggies1 -0.173 0.841
## 9 HvyAlcoholConsump1 -0.928 0.395
## 10 MentHlth 0.224 1.251
## 11 Sex1 0.140 1.150
Intercepto: el odds ratio del intercepto (OR = 0.046) indica que, en ausencia de todas las variables explicativas incluidas en el modelo, la probabilidad base de presentar diabetes es baja. Este valor se utiliza únicamente como punto de referencia y no tiene una interpretación sustantiva directa.
Presión arterial alta (HighBP): las personas con presión arterial alta presentan aproximadamente tres veces más probabilidades de tener diabetes en comparación con aquellas sin hipertensión (OR = 3.094), manteniendo constantes las demás variables del modelo.
Colesterol alto (HighChol): los individuos con colesterol elevado tienen aproximadamente el doble de probabilidades de presentar diabetes en comparación con quienes no reportan colesterol alto (OR = 2.118), manteniendo constantes las demás variables.
Índice de masa corporal (BMI): por cada aumento de una unidad en el índice de masa corporal, las probabilidades de tener diabetes aumentan en aproximadamente 8% (OR = 1.078), manteniendo constantes las demás variables.
Derrame cerebral (Stroke): las personas que han sufrido un derrame cerebral presentan aproximadamente 67% más probabilidades de tener diabetes en comparación con quienes no reportan esta condición (OR = 1.666), manteniendo constantes las demás variables.
Enfermedad del corazón o infarto (HeartDiseaseorAttack): los individuos con antecedentes de enfermedad coronaria o infarto tienen aproximadamente el doble de probabilidades de presentar diabetes (OR = 2.088), manteniendo constantes las demás variables.
Actividad física (PhysActivity): las personas que reportan realizar actividad física presentan aproximadamente 28% menos probabilidades de tener diabetes en comparación con quienes no realizan actividad física (OR = 0.719), manteniendo constantes las demás variables.
Consumo de vegetales (Veggies): el consumo diario de vegetales se asocia con una reducción aproximada del 16% en las probabilidades de presentar diabetes (OR = 0.841), manteniendo constantes las demás variables.
Consumo elevado de alcohol (HvyAlcoholConsump): los individuos con consumo elevado de alcohol presentan aproximadamente 60% menos probabilidades de tener diabetes en comparación con quienes no reportan este patrón de consumo (OR = 0.395), manteniendo constantes las demás variables.
Salud mental (MentHlth): por cada incremento en la frecuencia de días con mala salud mental, las probabilidades de tener diabetes aumentan en aproximadamente 25% (OR = 1.251), manteniendo constantes las demás variables.
Sexo (Sex): los hombres presentan aproximadamente 15% más probabilidades de tener diabetes en comparación con las mujeres (OR = 1.150), manteniendo constantes las demás variables.
mod_nulo <- glm(Diabetes_binary ~ 1,
family = binomial,
data = diabetes_binary_5050split)
anova(mod_nulo, mod_logit, test = "Chisq")
## Analysis of Deviance Table
##
## Model 1: Diabetes_binary ~ 1
## Model 2: Diabetes_binary ~ HighBP + HighChol + BMI + Stroke + HeartDiseaseorAttack +
## PhysActivity + Veggies + HvyAlcoholConsump + MentHlth + Sex
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 70691 98000
## 2 70681 79009 10 18991 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1