ObesityDataSet <- read_excel(
"G:/Mi unidad/Academico/POSGRADO - MAIN/2DO SEMESTRE/TOMA DE DECISIONES BASADAS EN LOS DATOS/Talleres/Taller 3 - Regresion Cuantilica/ObesityData.xlsx"
)
glimpse(ObesityDataSet)
## Rows: 2,111
## Columns: 17
## $ Gender <chr> "Female", "Female", "Male", "Male", "Ma…
## $ Age <dbl> 21, 21, 23, 27, 22, 29, 23, 22, 24, 22,…
## $ Height <dbl> 1.62, 1.52, 1.80, 1.80, 1.78, 1.62, 1.5…
## $ Weight <dbl> 64.0, 56.0, 77.0, 87.0, 89.8, 53.0, 55.…
## $ family_history_with_overweight <chr> "yes", "yes", "yes", "no", "no", "no", …
## $ FAVC <chr> "no", "no", "no", "no", "no", "yes", "y…
## $ FCVC <dbl> 2, 3, 2, 3, 2, 2, 3, 2, 3, 2, 3, 2, 3, …
## $ NCP <dbl> 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, …
## $ CAEC <chr> "Sometimes", "Sometimes", "Sometimes", …
## $ SMOKE <chr> "no", "yes", "no", "no", "no", "no", "n…
## $ CH2O <dbl> 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, …
## $ SCC <chr> "no", "yes", "no", "no", "no", "no", "n…
## $ FAF <dbl> 0, 3, 2, 2, 0, 0, 1, 3, 1, 1, 2, 2, 2, …
## $ TUE <dbl> 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 2, 1, 0, …
## $ CALC <chr> "no", "Sometimes", "Frequently", "Frequ…
## $ MTRANS <chr> "Public_Transportation", "Public_Transp…
## $ NObeyesdad <chr> "Normal_Weight", "Normal_Weight", "Norm…
Las variables clave incluyen:
Weight: peso en kilogramos (variable respuesta). Age: edad en años. family_history_with_overweight: historial familiar de sobrepeso. FAVC: consumo frecuente de alimentos de alto contenido calórico. FCVC: frecuencia de consumo de verduras. NCP: número de comidas principales al día. SMOKE: consumo de cigarrillo. CH2O: cantidad de agua diaria. SCC: control de calorías. FAF: frecuencia de actividad física. TUE: tiempo de uso de dispositivos tecnológicos. Gender: género biológico. NObeyesdad: nivel de obesidad (categoría).
tipo_vars <- tibble(
variable = names(ObesityDataSet),
clase = sapply(ObesityDataSet, class),
ejemplo = sapply(ObesityDataSet, function(x) paste0(head(unique(x), 3), collapse = ", "))
)
tipo_vars
## # A tibble: 17 × 3
## variable clase ejemplo
## <chr> <chr> <chr>
## 1 Gender character Female, Male
## 2 Age numeric 21, 23, 27
## 3 Height numeric 1.62, 1.52, 1.8
## 4 Weight numeric 64, 56, 77
## 5 family_history_with_overweight character yes, no
## 6 FAVC character no, yes
## 7 FCVC numeric 2, 3, 1
## 8 NCP numeric 3, 1, 4
## 9 CAEC character Sometimes, Frequently, Always
## 10 SMOKE character no, yes
## 11 CH2O numeric 2, 3, 1
## 12 SCC character no, yes
## 13 FAF numeric 0, 3, 2
## 14 TUE numeric 1, 0, 2
## 15 CALC character no, Sometimes, Frequently
## 16 MTRANS character Public_Transportation, Walking, Aut…
## 17 NObeyesdad character Normal_Weight, Overweight_Level_I, …
ObesityDataRec <- ObesityDataSet %>%
mutate(
family_history_num = if_else(family_history_with_overweight %in% c("yes", "Yes", "YES"), 1, 0),
FAVC_num = if_else(FAVC %in% c("yes", "Yes", "YES"), 1, 0),
SMOKE_num = if_else(SMOKE %in% c("yes", "Yes", "YES"), 1, 0),
SCC_num = if_else(SCC %in% c("yes", "Yes", "YES"), 1, 0),
Gender = factor(Gender),
MTRANS = factor(MTRANS),
NObeyesdad = factor(NObeyesdad)
)
Interpretación simple: Con esta recodificación logramos que variables como historial familiar de sobrepeso, consumo calórico, fumar y control de calorías se conviertan en indicadores numéricos fáciles de interpretar: 1 significa “sí” y 0 significa “no”. Además, definimos Gender, MTRANS y NObeyesdad como categorías para usarlas como factores en los modelos.
cor_df <- ObesityDataRec %>%
select(
Weight,
Age, FAF, TUE, FCVC, FAVC_num,
NCP, CH2O,
family_history_num, SMOKE_num, SCC_num
) %>%
select(where(is.numeric))
cor_mat <- cor(cor_df, use = "pairwise.complete.obs", method = "pearson")
cor_weight <- sort(cor_mat["Weight", ], decreasing = TRUE)
cor_weight
## Weight family_history_num FAVC_num FCVC
## 1.00000000 0.49682038 0.27230049 0.21612471
## Age CH2O NCP SMOKE_num
## 0.20345177 0.18631587 0.10746899 0.02574641
## TUE FAF SCC_num
## -0.03937624 -0.04794751 -0.20190634
ggcorrplot(
cor_mat,
hc.order = TRUE,
type = "lower",
lab = TRUE,
lab_size = 3,
colors = c("#6D9EC1", "white", "#E46726"),
title = "Matriz de correlación - Variables numéricas (incluye Weight)",
ggtheme = theme_minimal()
)
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## ℹ The deprecated feature was likely used in the ggcorrplot package.
## Please report the issue at <https://github.com/kassambara/ggcorrplot/issues>.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Conclusiones de correlación:
El historial familiar de sobrepeso (family_history_num) es el factor que más se asocia con el peso (correlación ~0.50). Quienes tienen antecedentes familiares tienden a pesar considerablemente más.
El consumo frecuente de alimentos calóricos (FAVC_num) también muestra una correlación positiva notable (~0.27), reforzando la importancia de la dieta.
La edad, el consumo de verduras (FCVC) y la cantidad de agua (CH2O) tienen correlaciones positivas moderadas con el peso.
Controlar las calorías (SCC_num) se asocia negativamente con el peso (~ -0.20): las personas que vigilan sus calorías suelen pesar menos.
La actividad física (FAF) y el tiempo de pantalla (TUE) muestran correlaciones lineales bajas, lo que sugiere que sus efectos podrían ser más complejos y no solo lineales en la media; esto será explorado con regresión cuantilica.
p_weight <- ggplot(ObesityDataRec, aes(x = Weight)) +
geom_histogram(aes(y = after_stat(density)), bins = 30,
fill = "skyblue", color = "black") +
geom_density(color = "red", linewidth = 1) +
theme_minimal() +
labs(title = "Distribución del peso (Weight)",
x = "Weight",
y = "Densidad")
p_weight
qqnorm(ObesityDataRec$Weight)
qqline(ObesityDataRec$Weight, col = "red", lwd = 2)
Interpretación de la distribución:
El histograma muestra una cola hacia la derecha: hay un grupo de personas con pesos claramente más altos (sobrepeso y obesidad).
El gráfico Q–Q indica desviaciones respecto a la normalidad en los extremos de la distribución.
Esto significa que el comportamiento del peso no es simétrico y que las personas en la parte alta de la distribución pueden responder de forma distinta a los factores de riesgo respecto a las personas con peso bajo o normal. Por esto, tiene sentido usar regresión cuantilica para estudiar no solo el efecto promedio, sino también qué ocurre en los cuantiles bajos, medianos y altos del peso.
df <- ObesityDataRec %>%
transmute(
Weight,
Age,
FAF,
TUE,
FCVC,
FAVC_num,
family_history = family_history_num,
Gender,
SMOKE_num,
CH2O,
NCP
) %>%
drop_na()
glimpse(df)
## Rows: 2,111
## Columns: 11
## $ Weight <dbl> 64.0, 56.0, 77.0, 87.0, 89.8, 53.0, 55.0, 53.0, 64.0, 6…
## $ Age <dbl> 21, 21, 23, 27, 22, 29, 23, 22, 24, 22, 26, 21, 22, 41,…
## $ FAF <dbl> 0, 3, 2, 2, 0, 0, 1, 3, 1, 1, 2, 2, 2, 2, 1, 2, 1, 0, 0…
## $ TUE <dbl> 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 2, 1, 0, 1, 1, 1, 0, 0, 0…
## $ FCVC <dbl> 2, 3, 2, 3, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 2, 2, 3…
## $ FAVC_num <dbl> 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1…
## $ family_history <dbl> 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1…
## $ Gender <fct> Female, Female, Male, Male, Male, Male, Female, Male, M…
## $ SMOKE_num <dbl> 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1…
## $ CH2O <dbl> 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 2, 1, 2, 1, 2, 1…
## $ NCP <dbl> 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 1, 4…
form <- Weight ~ Age + I(Age^2) +
FAF + TUE + FCVC + FAVC_num +
family_history + Gender + FAF:Gender +
SMOKE_num + CH2O + NCP
Interpretación del modelo propuesto:
Age + I(Age^2): permite que el peso cambie con la edad de manera no estrictamente lineal (por ejemplo, suba rápido al inicio y luego se desacelere).
FAF y TUE: representan el balance entre actividad física y sedentarismo.
FCVC, FAVC_num, NCP, CH2O: capturan la calidad y cantidad de alimentación e hidratación.
family_history y Gender: incorporan componentes biológicos y de contexto familiar.
FAF:Gender: permite que el efecto del ejercicio sea diferente en hombres y mujeres.
SMOKE_num: controla el posible efecto del hábito de fumar.
ols <- lm(form, data = df)
summary(ols)
##
## Call:
## lm(formula = form, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -61.101 -12.565 -0.057 10.669 79.234
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -58.525085 6.689797 -8.748 < 2e-16 ***
## Age 4.487013 0.434069 10.337 < 2e-16 ***
## I(Age^2) -0.068803 0.007225 -9.522 < 2e-16 ***
## FAF 1.732672 0.731595 2.368 0.018 *
## TUE 0.093264 0.695327 0.134 0.893
## FCVC 11.313901 0.881407 12.836 < 2e-16 ***
## FAVC_num 14.198651 1.427755 9.945 < 2e-16 ***
## family_history 24.539713 1.239905 19.792 < 2e-16 ***
## GenderMale 13.260950 1.410480 9.402 < 2e-16 ***
## SMOKE_num 2.697712 3.123576 0.864 0.388
## CH2O 3.786952 0.660337 5.735 1.12e-08 ***
## NCP 2.371133 0.577342 4.107 4.16e-05 ***
## FAF:GenderMale -5.184838 1.017171 -5.097 3.75e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 20.31 on 2098 degrees of freedom
## Multiple R-squared: 0.4019, Adjusted R-squared: 0.3985
## F-statistic: 117.5 on 12 and 2098 DF, p-value: < 2.2e-16
par(mfrow = c(2, 2))
plot(ols)
par(mfrow = c(1, 1))
bptest(ols)
##
## studentized Breusch-Pagan test
##
## data: ols
## BP = 476.78, df = 12, p-value < 2.2e-16
Conclusiones del modelo OLS:
El modelo alcanza un R² cercano a 0.40, es decir, explica alrededor del 40 % de la variabilidad del peso. No es perfecto, pero captura una parte importante del comportamiento.
La edad tiene un efecto significativo y curvilíneo: a edades más altas el peso tiende a ser mayor, pero el término cuadrático negativo muestra que este efecto se modera a medida que la edad crece.
Variables asociadas a hábitos de alimentación (especialmente FAVC_num y FCVC), el historial familiar (family_history) y el género masculino (GenderMale) tienen efectos positivos grandes y altamente significativos: estas características se asocian con pesos mayores, manteniendo el resto de factores constantes.
Controlar las calorías (SCC_num) ya se vio negativamente correlacionado con el peso, y otros factores como fumar (SMOKE_num) y tiempo de pantalla (TUE) no muestran efectos significativos en la media.
El término de interacción FAF:GenderMale indica que el efecto de la actividad física no es igual para hombres y mujeres.
Los gráficos de diagnóstico y la prueba de Breusch–Pagan muestran heterocedasticidad: la variabilidad de los residuos no es constante. Esto sugiere que el modelo promedio no describe bien todos los grupos de peso y refuerza la necesidad de usar regresión cuantilica.
¿Influye igual la actividad física en personas con peso bajo que en personas con obesidad?
¿El historial familiar pesa más en los cuantiles altos (personas más pesadas)?
taus <- c(0.1, 0.25, 0.5, 0.75, 0.9)
qr_fits <- rq(form, tau = taus, data = df)
## Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
## Warning in rq.fit.br(x, y, tau = tau, ...): Solution may be nonunique
qr_sum <- summary(qr_fits, se = "boot")
qr_sum
##
## Call: rq(formula = form, tau = taus, data = df)
##
## tau: [1] 0.1
##
## Coefficients:
## Value Std. Error t value Pr(>|t|)
## (Intercept) -39.07798 13.41403 -2.91322 0.00362
## Age 5.24238 0.89338 5.86801 0.00000
## I(Age^2) -0.07214 0.01666 -4.33067 0.00002
## FAF -0.87527 0.92817 -0.94300 0.34579
## TUE -3.01158 0.95005 -3.16991 0.00155
## FCVC -0.07201 1.10616 -0.06510 0.94810
## FAVC_num 7.44728 1.35950 5.47794 0.00000
## family_history 8.42642 1.19811 7.03310 0.00000
## GenderMale 13.44728 2.00788 6.69725 0.00000
## SMOKE_num -0.04247 3.17835 -0.01336 0.98934
## CH2O 1.57507 0.83890 1.87755 0.06058
## NCP -0.59743 0.57282 -1.04296 0.29709
## FAF:GenderMale -0.12478 1.20745 -0.10334 0.91770
##
## Call: rq(formula = form, tau = taus, data = df)
##
## tau: [1] 0.25
##
## Coefficients:
## Value Std. Error t value Pr(>|t|)
## (Intercept) -45.39459 10.21720 -4.44296 0.00001
## Age 5.33401 0.68893 7.74242 0.00000
## I(Age^2) -0.07767 0.01183 -6.56424 0.00000
## FAF -1.17747 0.82388 -1.42919 0.15310
## TUE 0.36980 0.99976 0.36989 0.71150
## FCVC 2.74850 1.40095 1.96189 0.04991
## FAVC_num 7.81682 1.47563 5.29729 0.00000
## family_history 15.42796 1.34152 11.50035 0.00000
## GenderMale 12.70888 1.88762 6.73274 0.00000
## SMOKE_num -3.60954 4.00408 -0.90147 0.36744
## CH2O 2.87938 0.82103 3.50705 0.00046
## NCP -0.32183 0.75085 -0.42862 0.66824
## FAF:GenderMale -0.27593 1.40966 -0.19574 0.84483
##
## Call: rq(formula = form, tau = taus, data = df)
##
## tau: [1] 0.5
##
## Coefficients:
## Value Std. Error t value Pr(>|t|)
## (Intercept) -84.46153 9.57789 -8.81839 0.00000
## Age 6.09005 0.70765 8.60597 0.00000
## I(Age^2) -0.09633 0.01205 -7.99664 0.00000
## FAF -1.67473 0.75564 -2.21629 0.02678
## TUE -0.36380 0.69549 -0.52309 0.60097
## FCVC 11.17252 0.99406 11.23928 0.00000
## FAVC_num 15.57373 1.37017 11.36624 0.00000
## family_history 23.34312 1.17253 19.90829 0.00000
## GenderMale 14.85022 1.49693 9.92044 0.00000
## SMOKE_num 0.09082 6.38128 0.01423 0.98865
## CH2O 4.78412 0.66530 7.19093 0.00000
## NCP 3.97832 0.53071 7.49617 0.00000
## FAF:GenderMale -2.32097 1.04490 -2.22123 0.02644
##
## Call: rq(formula = form, tau = taus, data = df)
##
## tau: [1] 0.75
##
## Coefficients:
## Value Std. Error t value Pr(>|t|)
## (Intercept) -44.79844 8.75681 -5.11584 0.00000
## Age 2.65584 0.65195 4.07370 0.00005
## I(Age^2) -0.04537 0.01039 -4.36812 0.00001
## FAF 8.77979 3.91026 2.24532 0.02485
## TUE -0.60890 0.77911 -0.78154 0.43457
## FCVC 12.96406 1.29595 10.00356 0.00000
## FAVC_num 16.88445 2.16459 7.80032 0.00000
## family_history 30.06268 1.17162 25.65910 0.00000
## GenderMale 19.36001 1.38093 14.01957 0.00000
## SMOKE_num 10.13368 3.47791 2.91372 0.00361
## CH2O 4.29748 0.65931 6.51815 0.00000
## NCP 6.86134 0.55663 12.32664 0.00000
## FAF:GenderMale -11.67102 4.10664 -2.84199 0.00453
##
## Call: rq(formula = form, tau = taus, data = df)
##
## tau: [1] 0.9
##
## Coefficients:
## Value Std. Error t value Pr(>|t|)
## (Intercept) 6.19299 10.73542 0.57687 0.56409
## Age 0.34943 0.68662 0.50891 0.61087
## I(Age^2) -0.00663 0.01095 -0.60543 0.54496
## FAF 15.91738 2.25783 7.04985 0.00000
## TUE 1.22208 0.85085 1.43630 0.15106
## FCVC 9.58888 1.19863 7.99988 0.00000
## FAVC_num 12.06132 3.37948 3.56899 0.00037
## family_history 33.94733 1.69428 20.03647 0.00000
## GenderMale 16.19580 1.71269 9.45638 0.00000
## SMOKE_num 7.73227 2.70160 2.86211 0.00425
## CH2O 2.35600 1.14224 2.06262 0.03927
## NCP 6.99712 1.02355 6.83610 0.00000
## FAF:GenderMale -15.73342 2.38595 -6.59418 0.00000
Lectura general de los coeficientes cuantilicos:
En todos los cuantiles, el historial familiar (family_history) y el consumo calórico (FAVC_num) mantienen efectos positivos y significativos, pero su magnitud crece cuando nos movemos hacia los cuantiles altos del peso.
La actividad física (FAF) tiene un patrón interesante: en cuantiles bajos su efecto es pequeño o incluso cercano a cero, mientras que en los cuantiles altos (0.75 y 0.9) su coeficiente se vuelve muy grande. Esto sugiere que el ejercicio marca una diferencia mucho mayor entre las personas con más peso.
Otros efectos, como el del tiempo de pantalla (TUE), resultan menos estables y en general no muestran un patrón tan fuerte a través de los cuantiles.
qr_coefs <- purrr::map_dfr(
seq_along(taus),
~ {
tau_val <- taus[.x]
coef_tab <- as.data.frame(qr_sum[[.x]]$coefficients)
coef_tab$term <- rownames(coef_tab)
coef_tab$tau <- tau_val
rownames(coef_tab) <- NULL
coef_tab
}
)
qr_coefs <- qr_coefs %>%
rename(
Estimate = Value,
Std.Error = `Std. Error`,
t.value = `t value`,
p.value = `Pr(>|t|)`
) %>%
select(tau, term, Estimate, Std.Error, t.value, p.value)
head(qr_coefs)
## tau term Estimate Std.Error t.value p.value
## 1 0.1 (Intercept) -39.07797949 13.4140317 -2.91321657 3.615095e-03
## 2 0.1 Age 5.24237594 0.8933827 5.86800683 5.113191e-09
## 3 0.1 I(Age^2) -0.07213900 0.0166577 -4.33067014 1.556592e-05
## 4 0.1 FAF -0.87526540 0.9281670 -0.94300421 3.457873e-01
## 5 0.1 TUE -3.01158305 0.9500519 -3.16991408 1.546830e-03
## 6 0.1 FCVC -0.07200765 1.1061639 -0.06509673 9.481032e-01
qr_coefs %>%
filter(term %in% c("FAF", "TUE")) %>%
arrange(term, tau)
## tau term Estimate Std.Error t.value p.value
## 1 0.10 FAF -0.8752654 0.9281670 -0.9430042 3.457873e-01
## 2 0.25 FAF -1.1774738 0.8238756 -1.4291888 1.530988e-01
## 3 0.50 FAF -1.6747263 0.7556445 -2.2162886 2.677866e-02
## 4 0.75 FAF 8.7797947 3.9102583 2.2453235 2.485113e-02
## 5 0.90 FAF 15.9173847 2.2578317 7.0498544 2.420952e-12
## 6 0.10 TUE -3.0115831 0.9500519 -3.1699141 1.546830e-03
## 7 0.25 TUE 0.3697973 0.9997586 0.3698866 7.115043e-01
## 8 0.50 TUE -0.3638034 0.6954910 -0.5230886 6.009679e-01
## 9 0.75 TUE -0.6089032 0.7791064 -0.7815405 4.345729e-01
## 10 0.90 TUE 1.2220771 0.8508480 1.4363049 1.510647e-01
Interpretación focalizada (FAF y TUE):
Para FAF, el coeficiente pasa de valores pequeños o negativos en cuantiles bajos a valores muy grandes y positivos en el cuantil 0.9. Esto indica que aumentar la actividad física tiene un impacto mucho más fuerte en los individuos con mayor peso que en los de peso bajo o mediano.
Para TUE, los coeficientes se mueven alrededor de cero y cambian de signo, con evidencia estadística débil. Esto sugiere que el tiempo de pantalla, por sí solo, no es un predictor tan potente del peso cuando controlamos por el resto de variables.
plot_coef_tau <- function(term_name) {
df_plot <- qr_coefs %>% filter(term == term_name)
ggplot(df_plot, aes(x = tau, y = Estimate)) +
geom_line(color = "steelblue") +
geom_point(size = 2, color = "steelblue") +
geom_hline(yintercept = coef(ols)[term_name],
linetype = "dashed", color = "red") +
theme_minimal() +
labs(title = paste("Coeficiente de", term_name,
"a lo largo de los cuantiles de Weight"),
subtitle = "Línea roja punteada: coeficiente OLS (media)",
x = "Cuantil (tau)",
y = "Estimación del coeficiente")
}
plot_coef_tau("FAF")
plot_coef_tau("TUE")
plot_coef_tau("FAVC_num")
plot_coef_tau("family_history")
Conclusiones visuales clave:
En el gráfico de FAF, la línea azul se dispara hacia arriba en los cuantiles 0.75 y 0.9, mientras que el coeficiente de la media (línea roja) queda en un nivel intermedio. Esto significa que, si nos fijáramos solo en el promedio, subestimaríamos la importancia de la actividad física para las personas con más peso.
En el gráfico de family_history, la línea azul crece casi de forma lineal desde el cuantil 0.1 hasta el 0.9. Tener historial familiar de sobrepeso aumenta el peso en todos los niveles, pero el efecto es mucho más grande en los individuos más pesados, lo que sugiere vulnerabilidad acumulada.
Para FAVC_num, los coeficientes son consistentemente positivos, con valores especialmente altos en la mediana y en el cuantil 0.75. Esto indica que una dieta con mucha comida calórica está asociada con más peso en prácticamente toda la distribución.
En el caso de TUE, la línea azul oscila cerca de cero y no muestra un patrón claro. El tiempo de pantalla por sí solo no parece ser el motor principal del peso cuando consideramos otros hábitos.
Factores estructurales y de estilo de vida El peso se encuentra fuertemente condicionado por:
El historial familiar de sobrepeso, que amplifica el peso en todos los cuantiles, especialmente en la parte alta de la distribución.
El consumo frecuente de alimentos calóricos (FAVC_num), que se asocia con mayor peso en todos los niveles.
La edad, el consumo de verduras, la cantidad de agua y el número de comidas también influyen, aunque con menor intensidad.
Importancia heterogénea de la actividad física La regresión cuantilica muestra que la actividad física (FAF) tiene un impacto relativamente modesto en cuantiles bajos y medios, pero se vuelve muy relevante en el cuantil 0.9, es decir, en personas con mayor peso. Esto sugiere que incrementar la frecuencia de actividad física podría tener beneficios especialmente grandes para quienes se encuentran en la parte más alta de la distribución del peso.
Más allá de la media El modelo lineal clásico ofrece una buena referencia del efecto promedio, pero:
No captura bien la variación de los efectos según el nivel de peso.
Presenta heterocedasticidad, lo que indica que la dispersión del peso cambia con las covariables. La regresión cuantilica complementa este análisis al mostrar cómo cambian los efectos en diferentes segmentos de la población, permitiendo formular recomendaciones específicas para grupos con bajo, medio o alto peso.
Implicaciones prácticas
Para personas con historial familiar de sobrepeso, podría ser prioritario trabajar el control de la dieta (reducir FAVC) y aumentar la actividad física, dado que estos factores están asociados con incrementos muy grandes en los cuantiles altos.
Las intervenciones de actividad física parecen ser especialmente efectivas cuando se dirigen a individuos con peso elevado, donde el impacto marginal de FAF es mucho mayor.
El tiempo de pantalla, aunque relevante a nivel de salud general, en este conjunto de datos no aparece como un predictor robusto del peso cuando se ajusta por otros factores.
En conjunto, la combinación de regresión lineal y regresión cuantilica permite construir una visión más completa: no solo sabemos cuánto cambia el peso “en promedio” cuando se modifica una variable, sino que también entendemos para qué grupos de la población esos cambios son más críticos. Esto alinea el análisis con la idea central de la regresión cuantilica: mirar más allá de la media para apoyar decisiones más finas y segmentadas.