La obesidad es una enfermedad y un problema a la salud pública presente en la mayoría de los países del mundo, disminuyendo la esperanza de vida y generando altos costos sociales y económicos. El problema es que esta enfermedad trae consigo una serie de enfermedades y complicaciones relacionadas, tales como: enfermedades cardiovasculares, diabetes, sedentarismo, hipertensión arterial y algunos tipos de cáncer; lo que tiene un impacto directo en la calidad y esperanza de vida de las personas. Chile no se escapa de esto, ya que un informe de la FAO/OPS reveló que en nuestro país el 30% de la población adulta sufre obesidad, obteniendo una de las mayores tasas en Sudamérica, no solo en la población adulta, sino que también en la infantil, conocido como: obesidad infantil. “La alimentación saludable es una de las condiciones básicas para tener una población saludable y preparada para enfrentar o prevenir la mayoría de las enfermedades de alta prevalencia actual, como la obesidad, diabetes, hipertensión o colesterol alto. Para contar con parámetros claros, hasta el momento se han realizados sólo dos encuestas alimentarias: la primera fue hecha en 1959, en conjunto entre el Ministerio de Defensa de Estados Unidos y el de Chile, donde fueron encuestados hombres en servicio militar, lo que entregó resultados parciales y de difícil comparación con la actualidad. La segunda encuesta se realizó a comienzos de la década de los 70, cuyos resultados nunca fueron publicados. Esta, entonces, es la primera encuesta de consumo real de alimentos que tiene Chile y allí radica su gran importancia: provee de una «imagen» real y actualizada de cómo nos alimentamos los chilenos y chilenas. Esta encuesta fue solicitada por el Ministerio de Salud y realizada por la Facultad de Medicina y de Economía de la Universidad de Chile entre noviembre de 2010 y enero de 2011 en todo el país.” (Anexo 1)
A raíz de la problemática expuesta anteriormente, queremos encontrar un buen modelo que logre predecir de manera correcta la obesidad en Chile; cuáles son sus variables y cómo afectan al desarrollo de esta enfermedad.
En el presente trabajo, nos guiaremos por la Encuesta Nacional de Consumo Alimentario (ENCA), que nos provee de una detallada y completa información acerca del consumo alimentario de los chilenos. De hecho, al haber realizado esta encuesta, Chile integra parte de 39 países que cuentan con al menos 1 encuesta acerca del consumo alimentario a nivel nacional, lo que significa que se tiene información sobre lo que comen una muestra representativa de la población. Esto permite obtener información más allá de los promedios de consumo alimentario. La base de datos se encuentra en el siguiente link: https://www.minsal.cl/encabasededatos/
Primero cargamos los paquetes necesarios y las bases de datos otorgados por la Encuesta Nacional de Consumo Alimentario.
#install.packages("data.table")
#install.packages("ggplot2")
#install.packages("haven")
#install.packages("caret")
#install.packages("jtools")
library(data.table)
library(ggplot2)
library(haven)
library(caret)
library(jtools)
AI<-read_sav("Base de datos/ENCA_ETCC_ALIMENTOS_INDIVIDUALES.sav",encoding="UTF-8")
AA<-read_sav("Base de datos/ENCA_ETCC_ALIMENTOS_AGRUPADOS.sav", encoding="UTF-8")
ER24G<-read_sav("Base de datos/ENCA_Er24h_General.sav", encoding="UTF-8")
ER24N<-read_sav("Base de datos/ENCA_Er24h_Nutrientes_AJUSTADO.sav", encoding="UTF-8")
NSE<-read_sav("Base de datos/ENCA_NSE.sav", encoding="UTF-8")
Juntamos las bases de alimentos agrupados y nutrientes ajustado, que fueron las bases seleccionadas al contener datos de nuestro interés.
names(ER24N)[10]<-"folio"
AAyNUT<-merge(AA, ER24N, by="folio")
AAyNUT<-as.data.table(AAyNUT)
Decidimos dividir las edades en 5 categorías: ‘menores de 16 años’, ‘entre 16 y 25 años’, ‘adultos jóvenes’ (entre 16 y 34 años), ‘adultos’ (entre 35 y 64 años) y ‘adultos mayores’ (más de 64 años) y las regiones en 3 zonas: ‘norte’, ‘centro’ y ‘sur’.
AAyNUT[edad<=15, gedad:="menores de 16"]
AAyNUT[edad<=25&edad>15,gedad:="Entre 16 y 25 años"]
AAyNUT[edad>25&edad<35,gedad:="Adultos Jóvenes"]
AAyNUT[edad>=35&edad<65,gedad:="Adultos"]
AAyNUT[edad>=65,gedad:="Adultos Mayores"]
AAyNUT[region<=4|region==15, zona:="norte"]
AAyNUT[region>4®ion<=8|region==13, zona:="centro"]
AAyNUT[region>8®ion<=12|region==14, zona:="sur"]
Para hacer más entendible y fácil el estudio, decidimos acotar la base de datos, de acuerdo con una selección de las variables que se relacionan con los patrones de consumo y la obesidad, para así lograr predecir de mejor forma la obesidad en nuestro país. La muestra era de 5891 observaciones, y, al modificarla quitando los NA quedó en 4879. Además, clasificamos el IMC de las personas en 3 categorías según datos del MINSAL (Anexo 2) y considerando en obeso las personas con obesidad y obesidad mórbida: ‘bajo peso’ si el IMC es menor de 18,5, ‘normal’ si está entre 18,5 y 24,9, ‘sobrepeso’ si el IMC está entre los valores 25 y 29,9 y ‘obeso’ si es mayor o igual a 30.
ENCA<-AAyNUT[,.(folio, edad, sexo, imc, gedad, zona, ratio, HEIcateg, indcum, indglob, aguaguia, pescadoguia, fruverguia, legumbreguia, lacteoguia,desayuno, prot_g_dia, cho_g_dia, lip_g_dia, colest_mg, g_sat_g_di, b6, p50, p51__1, p52__1, fexp)]
ENCA<-na.omit(ENCA)
ENCA[imc<18.5, clasif:="bajo peso"]
ENCA[imc>=18.5&imc<25, clasif:="normal"]
ENCA[imc>=25&imc<30, clasif:="sobrepeso"]
ENCA[imc>=30, clasif:="obeso"]
Se le pide realizar y comentar al menos 4 gráficos que den cuenta del panorama al que se enfrenta su pregunta de investigación.
Primero haremos un gráfico de torta en el que se vean los porcentajes de la muestra que tienen un IMC que se clasifique en: ‘bajo peso’, ‘normal, ’sobrepeso’ y ‘obeso’.
enca<-ENCA[,.N,by=clasif]
enca[,porcentaje:=round(N/4879*100,2)]
ggplot(enca,aes(x="",y=porcentaje,fill=clasif))+geom_bar(stat="identity",color="white")+geom_text(aes(label=porcentaje),position=position_stack(vjust=0.5),color="white",size=6)+coord_polar(theta = "y")+theme_void()+labs(title="Gráfico porcentaje de la muestra por clasificación de peso")+scale_fill_discrete(name="clasificación de peso")
Notamos que más del 60% de la muestra presenta exceso de peso (ya sea sobre peso u obesidad). Lo que a primeras nos indica que una proporción muy grande de esta muestra pareciera estar con problemas de alimentación.
Como vemos, el siguiente gráfico nos muestra la cantidad promedio consumida, en gramos, de grasas saturadas según la zona en que vive el encuestado.
enca2<-ENCA[,sum(g_sat_g_di),by=zona]
enca2[zona=="norte", prom:=round(V1/522,2)]
enca2[zona=="centro", prom:=round(V1/3547,2)]
enca2[zona=="sur", prom:=round(V1/810,2)]
ggplot(enca2,aes(x="",y=prom,fill=zona))+geom_bar(stat="identity",color="white")+geom_text(aes(label=prom),position=position_stack(vjust=0.5),color="white",size=6)+coord_polar(theta = "y")+theme_void()+labs(title="Gráfico de promedio de consumo (en gramos) de grasas saturadas, por zona del país")+scale_fill_discrete(name="Zona de Chile")
Como resultado, notamos que en promedio la zona sur de Chile es la que consume mayores gramos de grasas saturadas (23,34 gramos al día), luego la zona norte con 17,11 gramos al día y, por último la zona centro con 16,05 gramos al día. Esto lo podemos asociar con factores externos, por ejemplo, climáticos (diferencias de temperatura por zona, que aumentaría la tendencia de consumo de grasas al sur).
Este gráfico nos muestra la cantidad de personas a nivel poblacional (multiplicando la muestra por el factor de expansión) que cumplen o no con los requerimientos de agua diario (no=0, si=1) y además, separados según categoría de alimentación (saludable=1, requiere cambios=2, poco saludable=3) y su clasificación de IMC.
ggplot(ENCA, aes(x=clasif, w=fexp, fill=clasif))+geom_bar()+facet_wrap(facets=c("aguaguia", "HEIcateg"))+ theme(axis.text.x = element_text(size=8,angle=90,vjust=0.5),plot.caption=element_text(size=9,face = "italic", hjust = 0),title =element_text(size=9))+labs(x="Clasificación según IMC", y="N°personas", title = "Relación entre clasif. de IMC y N° de personas, según consumo de agua y categoría de alimen.", caption = "MINSAL, ENCA")+scale_fill_discrete(name=NULL, breaks=NULL)
Vemos que la mayoría de las personas en la población chilena no cumple con los requerimientos de agua para su organismo y que, además, su categoría de alimentación en gran mayoría es “requiere cambios”. Además, vemos que una proporción muy grande de personas con exceso de peso se concentra en los gráficos de arriba, lo que significa que no cumplir con los requerimientos de agua, independiente del balance en alimentación que se tenga, es muy perjudicial para el peso.
El gráfico siguiente nos muestra la relación entre edad e IMC de la muestra, según su consumo de desayuno; siendo 0 si no consume y 1 si consume.
ggplot(ENCA, aes(x=edad, y=imc))+geom_point()+facet_wrap(facets="desayuno")+geom_smooth(method= "lm", se=FALSE, colour="salmon")+labs(x="Edad", y="IMC", title = "Relación entre edad e IMC según consumo de desayuno (no=0, si=1)", caption = "MINSAL, ENCA")+theme(plot.caption=element_text(size=9,face = "italic", hjust = 0))
Concluimos que las personas que no toman desayuno tienden a aumentar la relación entre IMC y la edad. Esto significa que las personas que no consumen desayuno tendrán mayor tendencia a aumentar su IMC conforme aumentan sus años.
El siguiente gráfico nos muestra la relación entre el IMC y el consumo diario de grasas saturadas según el sexo; siendo 0 si es mujer y 1 si es hombre.
ggplot(ENCA, aes(x=imc, y=g_sat_g_di))+geom_point()+facet_wrap(facets="sexo")+geom_smooth(method= "lm", se=FALSE, color="pink")+labs(x="IMC", y="Consumo en gramos de grasas saturadas al día", title = "Relación entre IMC y consumo de grasa, según sexo (mujer=0, hombre=1)", caption = "MINSAL, ENCA")+theme(plot.caption=element_text(size=9,face = "italic", hjust = 0))
Concluimos que los hombres consumen más grasas saturadas que las mujeres,pero ellas presentan mayores índices de masa corporal. Este gráfico se relaciona con el gráfico 6, ya que existe una relación lineal entre el IMC y la edad, en las mujeres con mayor pendiente que los hombres.
El próximo gráfico muestra la relación entre la edad de los encuestados y su IMC según sexo. Siendo 0 las mujeres y 1 los hombres.
ggplot(ENCA,aes(x=edad, y=imc))+geom_point()+facet_wrap(facets="sexo")+
geom_smooth(method="lm", se=FALSE, color="lightblue") + labs(x="Edad", y="IMC", title = "Relación entre edad e IMC, según sexo", caption = "MINSAL, ENCA")+theme(plot.caption=element_text(size=9,face = "italic", hjust = 0))
Vemos que las mujeres tienden a tener mayor IMC que los hombres, con un aumento más rápido conforme aumente la edad, en comparación con los hombres. Esto lo podemos relacionar con factores externos, especialmente de tipo hormonales, menor musculatura y mayor capacidad para almacenar materia grasa.
Para lograr responder a la pregunta, realizaremos regresiones múltiples para compararlas entre sí mediante el método de validación cruzada y así, concluir cuál es el mejor modelo que permite predecir la obesidad en Chile.
#Regresión 1
ENCA[,zon:=as.factor(zona)]
reg1<-lm(ENCA, formula=imc~edad+sexo+desayuno+prot_g_dia+cho_g_dia+lip_g_dia+colest_mg+g_sat_g_di+b6+zon)
summ(reg1)
## MODEL INFO:
## Observations: 4879
## Dependent Variable: imc
## Type: OLS linear regression
##
## MODEL FIT:
## F(11,4867) = 106.85, p = 0.00
## R² = 0.19
## Adj. R² = 0.19
##
## Standard errors: OLS
## ------------------------------------------------
## Est. S.E. t val. p
## ----------------- ------- ------ -------- ------
## (Intercept) 24.56 0.36 67.85 0.00
## edad 0.10 0.00 28.95 0.00
## sexo -1.66 0.17 -9.83 0.00
## desayuno -0.94 0.28 -3.34 0.00
## prot_g_dia 0.00 0.00 0.66 0.51
## cho_g_dia 0.00 0.00 1.50 0.13
## lip_g_dia 0.01 0.01 0.90 0.37
## colest_mg 0.00 0.00 1.06 0.29
## g_sat_g_di -0.02 0.01 -1.46 0.14
## b6 -1.17 0.19 -6.28 0.00
## zonnorte -0.64 0.25 -2.53 0.01
## zonsur 0.69 0.21 3.23 0.00
## ------------------------------------------------
#Predicción
ENCA[,pred1:=predict(reg1, na.action=na.exclude)]
#Error de predicción
errorpred1<-data.table(RMSE=RMSE(ENCA[,pred1],ENCA[,imc]),MAE=MAE(ENCA[,pred1],ENCA[,imc]))
errorpred1
## RMSE MAE
## 1: 5.359524 4.111411
#Regresión 2
reg2<-lm(ENCA,formula=imc~edad+sexo+zon+aguaguia+lacteoguia+legumbreguia+fruverguia+pescadoguia+indglob)
summ(reg2)
## MODEL INFO:
## Observations: 4879
## Dependent Variable: imc
## Type: OLS linear regression
##
## MODEL FIT:
## F(10,4868) = 118.47, p = 0.00
## R² = 0.20
## Adj. R² = 0.19
##
## Standard errors: OLS
## -------------------------------------------------
## Est. S.E. t val. p
## ------------------ ------- ------ -------- ------
## (Intercept) 23.77 0.92 25.77 0.00
## edad 0.10 0.00 29.31 0.00
## sexo -1.49 0.16 -9.25 0.00
## zonnorte -0.67 0.25 -2.63 0.01
## zonsur 0.71 0.21 3.34 0.00
## aguaguia 0.79 0.31 2.59 0.01
## lacteoguia -1.40 0.27 -5.13 0.00
## legumbreguia -0.41 0.25 -1.63 0.10
## fruverguia 0.26 0.21 1.26 0.21
## pescadoguia 0.30 0.28 1.06 0.29
## indglob -0.11 0.27 -0.41 0.68
## -------------------------------------------------
#Predicción
ENCA[,pred2:=predict(reg2, na.action=na.exclude)]
#Error de predicción
errorpred2<-data.table(RMSE=RMSE(ENCA[,pred2],ENCA[,imc]),MAE=MAE(ENCA[,pred2],ENCA[,imc]))
errorpred2
## RMSE MAE
## 1: 5.35546 4.105908
#Regresión 3
reg3<-lm(ENCA,formula=imc~edad+sexo+zon+aguaguia+lacteoguia+legumbreguia+fruverguia+pescadoguia+indglob+b6+g_sat_g_di+lip_g_dia+desayuno+HEIcateg)
summ(reg3)
## MODEL INFO:
## Observations: 4879
## Dependent Variable: imc
## Type: OLS linear regression
##
## MODEL FIT:
## F(15,4863) = 85.03, p = 0.00
## R² = 0.21
## Adj. R² = 0.21
##
## Standard errors: OLS
## -------------------------------------------------
## Est. S.E. t val. p
## ------------------ ------- ------ -------- ------
## (Intercept) 23.26 1.07 21.69 0.00
## edad 0.10 0.00 28.63 0.00
## sexo -1.50 0.16 -9.13 0.00
## zonnorte -0.59 0.25 -2.34 0.02
## zonsur 0.71 0.22 3.28 0.00
## aguaguia 0.78 0.30 2.55 0.01
## lacteoguia -1.41 0.27 -5.16 0.00
## legumbreguia -0.27 0.25 -1.06 0.29
## fruverguia 0.28 0.21 1.32 0.19
## pescadoguia 0.28 0.28 1.00 0.32
## indglob -0.10 0.27 -0.36 0.72
## b6 -1.35 0.19 -7.16 0.00
## g_sat_g_di -0.01 0.01 -0.45 0.65
## lip_g_dia 0.01 0.01 1.15 0.25
## desayuno -0.82 0.28 -2.96 0.00
## HEIcateg 0.95 0.21 4.46 0.00
## -------------------------------------------------
#Predicción
ENCA[,pred3:=predict(reg3, na.action=na.exclude)]
#Error de predicción
errorpred3<-data.table(RMSE=RMSE(ENCA[,pred3],ENCA[,imc]),MAE=MAE(ENCA[,pred3],ENCA[,imc]))
errorpred3
## RMSE MAE
## 1: 5.315225 4.072538
#K folds
set.seed(12345)
setupKCV <- trainControl(method = "cv" , number = 6)
predkfolds1<-train(imc~edad+sexo+desayuno+prot_g_dia+cho_g_dia+lip_g_dia+colest_mg+g_sat_g_di+b6+zon,data=ENCA,method="lm",trControl= setupKCV)
predkfolds2<-train(imc~sexo+edad+zon+aguaguia+lacteoguia+legumbreguia+fruverguia+pescadoguia+indglob,data=ENCA,method="lm",trControl= setupKCV)
predkfolds3<-train(imc~sexo+edad+zon+aguaguia+lacteoguia+legumbreguia+fruverguia+pescadoguia+indglob+b6+g_sat_g_di+lip_g_dia+desayuno+HEIcateg,data=ENCA,method="lm",trControl= setupKCV)
#K folds regresión 1
print(predkfolds1)
## Linear Regression
##
## 4879 samples
## 10 predictor
##
## No pre-processing
## Resampling: Cross-Validated (6 fold)
## Summary of sample sizes: 4065, 4065, 4067, 4066, 4066, 4066, ...
## Resampling results:
##
## RMSE Rsquared MAE
## 5.37385 0.1908032 4.122547
##
## Tuning parameter 'intercept' was held constant at a value of TRUE
#K folds regresión 2
print(predkfolds2)
## Linear Regression
##
## 4879 samples
## 9 predictor
##
## No pre-processing
## Resampling: Cross-Validated (6 fold)
## Summary of sample sizes: 4065, 4066, 4066, 4065, 4066, 4067, ...
## Resampling results:
##
## RMSE Rsquared MAE
## 5.370657 0.192121 4.120354
##
## Tuning parameter 'intercept' was held constant at a value of TRUE
#K folds regresión 3
print(predkfolds3)
## Linear Regression
##
## 4879 samples
## 14 predictor
##
## No pre-processing
## Resampling: Cross-Validated (6 fold)
## Summary of sample sizes: 4066, 4067, 4064, 4066, 4066, 4066, ...
## Resampling results:
##
## RMSE Rsquared MAE
## 5.33199 0.2027117 4.088288
##
## Tuning parameter 'intercept' was held constant at a value of TRUE
Queremos empezar diciendo que al enfrentarnos a la base de datos el 60,79% de los entrevistados se encontraban en un estado de obesidad o sobrepeso, situación muy preocupante a nivel de país porque gran parte de la población presenta exceso de peso. Es por lo que este factor nos llevó a buscar variables que se relacionaran con ciertos hábitos o patrones de consumo, saber cómo se están alimentando esas personas, más que fijarnos en sus niveles socioeconómico. Además, mencionar que intentamos incluir variables en los modelos como el ratio (razón de energía consumida y energía requerida) y horas de deporte realizadas, pero, no se obtenían resultados adecuados o de aporte para la estimación del índice de masa corporal.
A través de los modelos empleados se obtuvieron los siguientes valores:
Como se puede ver las tres variables son similares, pero fueron bajando los errores en la predicción y el r cuadrado aumentando, lo que nos permite decir que definitivamente el tercer modelo logra predecir de mejor manera la obesidad. Puesto que el error cuadrático medio al ir disminuyendo provoca que se acerque el valor predicho al observado en la realidad, por ello, es mejor el tercer modelo que es el que cuenta con un RMSE más bajo (demuestra que hay un menor error entre el índice de masa predicho y el observado en la realidad).
Por lo tanto, la estrategia empleada es útil para responder a nuestra incógnita propuesta al inicio de este estudio. Si bien los gráficos nos muestran que existen ciertas diferencias entre los hombres y las mujeres, como en el caso de estas últimas a medida que pasan los años son más propensas a tener mayores índices de obesidad que los hombres, se puede notar que malos hábitos alimentarios recaen en índices de masa corporal más alto, como ejemplo no tomar desayuno, no tomar agua o bien no cumplir con las guías de alimentos propuestas por el ministerio de salud, determinando finalmente un estilo de vida saludable o no.