Modelos Jerárquicos para la Estimación del Peso de Bebes diagnosticados con BPN en la ciudad de Medellín

El bajo peso al nacer (BPN) ha constituido un enigma en la ciencia a través de los tiempos. Múltiples son las investigaciones realizadas acerca de las causas que lo producen y las consecuencias que provoca. Su importancia no solo radica en lo que significa en la morbilidad y la mortalidad infantil, sino que estos niños tienen habitualmente múltiples problemas posteriores. Dentro de los factores de riesgo del BPN se han encontrado con mayor frecuencia en estudios realizados por diferentes autores, los siguientes: el embarazo en la adolescencia, la desnutrición en la madre, el hábito de fumar, la hipertensión arterial durante el embarazo, la sepsis cervicovaginal, la anemia y los embarazos gemelares, entre otros.

Descripción de la Base de Datos

La base de datos utilizada para el analisis corresponde al Registro de pacientes atendidos en las Instituciones Prestadoras de Servicios de Salud en la ciudad de Medellín con diagnóstico confirmado de BAJO PESO AL NACER. Se puede consultar la informacion en el siguiente enlace: http://medata.gov.co/dataset/bajo-peso-al-nacer/resource/51765ef7-f2e6-4795-9ea1-dd6e4e5852f6#{}

Inicialmente el conjuto de datos cuenta con 8174 observaciones y 19 varibles, se realiza un preprocesamiento de la informacion eliminando las observaciones que no tenían registro en la variable respuesta y se hace un renombramiento de las columnas, y se cambia por variables tipo factor y numericas algunas variables que eran de tipo caracter, entre otros ajustre otros quedandando asi con una base de 6253 observaciones y 10 variables para el análisis.

## LECTURA DE LA BASE DE DATOS
data <- read.csv("C:/Users/vreng/Desktop/Mod_Jerárquicos/sivigila_bpn.csv",sep=";")
data <- data[,-c(2,4,6,9,10,11,12,13,18)]

## RENOMBRANDO LAS VARIABLES
names(data)<-c("ID","EdadMadre","Sexo","Comuna", "TipoSalud", 
               "Peso","Talla", "SemanaGest", "EduMadre", "Año")
# SEXO
data$Sexo<-factor(data$Sexo,
                  levels = c("M","F"),labels = c("1","0"))
# COMUNA
data$Comuna<-factor(data$Comuna,
                    levels=c("Belen","Castilla","Aranjuez","Buenos Aires",
                             "Doce de Octubre","El Poblado","Guayabal","La America",
                             "LaCandelaria","Laureles","Manrique","Popular","Robledo",
                             "San Javier","Santa Cruz","Villa Hermosa"))
colSums(is.na(data))
data<-na.omit(data) # Elimina las obs que no tienen información respecto a la comuna.

# TIPOSALUD
data$TipoSalud<- as.factor(data$TipoSalud)

# PESO: hay 1 entrada sin peso registrado
data[data$Peso == "SD",]
data<-data[!(data$ID==734),]
data$Peso <- as.numeric(data$Peso)

# TALLA
data$Talla <- as.numeric(data$Talla)

# SEMANAGEST
data$SemanaGest <- as.numeric(data$SemanaGest)
dim(data)
## [1] 6253   10
ID EdadMadre Sexo Comuna TipoSalud Peso Talla SemanaGest EduMadre Año
20 20 19 0 Doce de Octubre S 2240 47 38 2 1
31 31 29 0 Doce de Octubre C 2361 47 39 2 1
32 32 27 0 San Javier S 2440 50 40 1 1
33 33 40 0 Buenos Aires S 2140 45 37 2 1
35 35 25 0 Belen C 2310 47 38 3 1
36 36 19 0 Villa Hermosa S 2420 45 38 1 1
37 37 30 0 Robledo C 2340 46 38 2 1
39 39 18 0 La America S 2460 48 37 1 1

Descripción de las variables

  • ID: Número de Registro

  • EdadMadre: Edad de la madre en años

  • Sexo: Sexo del bebé (Masculino = 1. Femenino = 0)

  • Talla: Talla del bebé en centimetros

  • Peso: Peso del bebé en gramos

  • SemanaGest: Duración del embarazo

  • TipoSalud: C= Contributivo, S=Subsidiado, P=Excepción, E=Especial, N= No asegurado, I= Indeterminado/Pendiente

  • EduMadre: Nivel de educación de la madre(1= Primaria, 2= Secundaria, 3= Técnico o Superior, 4= Ninguna).

  • Comuna: Comuna en la que reside la madre

  • Año:Año en el que se tomó el registro

Objetivo.

El objetivo principal de este estudio es estimar el peso de los pacientes diagnosticados con bajo peso al nacer en la ciudad de Medellín, por medio de modelos mixtos.

Análisis descriptivo.

Primero, se estudia el comportamiento de las variables de tipo numérico se evidencia que la media de la variable Peso es de 2340 gramos, la Edad promedio de las madres que participaron en el estudio esta entre 25 y 26 años, por último la Talla promedio de los bebes es de 46.24 centimetros.

##    EdadMadre          Peso          Talla      
##  Min.   :11.00   Min.   :2000   Min.   :38.00  
##  1st Qu.:20.00   1st Qu.:2270   1st Qu.:45.00  
##  Median :24.00   Median :2365   Median :46.00  
##  Mean   :25.37   Mean   :2340   Mean   :46.24  
##  3rd Qu.:30.00   3rd Qu.:2440   3rd Qu.:48.00  
##  Max.   :57.00   Max.   :2499   Max.   :53.00  
## 

Analizando las variables categóricas se evidencia que la comuna en la que se presentan un mayor peso promedio de los bebés es en Guayabal mientras que el peso promedio mas bajo se reporta en Buenos Aires y Villa Hermosa.

Modelos a considerar.

Para modelar la variable respuesta Peso se debe tener en cuenta lo siguiente:

  • Se ajustaran tres modelos lineales generalizados mixtos ulitlizando la función glmer del paquete lme4 con familia Gamma y función de enlace "log" pues esta es una generalización de la distribución exponencial, específicamente una distribución de probabilidad continua.

Modelo 1

Este modelo se ajusta con las variable Talla mas intercepto aleatorio asociado a la Comuna en la que reside la Madre.

\[Peso=\beta_0+\beta1Talla{ij}+b_{0i}\\ b_0 \sim N(0, \sigma^2_{b0})\]

Modelo 2

Modelo Ajustado con las variables Talla y SemanaGest a las cuales de se les aplica una transformación logaritmo para corregir la variación dentro de cada covariable y se mantiene el intercepto aleatorio asociado a Comuna

\[Peso=\beta_0+\beta1Log(Talla{ij})+\beta_2Log(SemanaGest_{ij})+b_{0i}\\ b_0 \sim N(0, \sigma^2_{b0})\]

Modelo 3

En este caso se realiza el mismo ajuste que se realizó en el segundo modelo pero se añade una tercera variable categórica EduMadre que corresponde al grado de escolaridad de las madres y se mantiene el intercepto aleatorio asociado a la Comuna.

\[Peso=\beta_0+\beta1Log(Talla_{ij})+\beta_2Log(SemanaGest_{ij})+ \beta_3EduMadre_{ij}+b_{0i}\\ b_0 \sim N(0, \sigma^2_{b0})\]

Construcción de los modelos.

Modelo 1

fit1<-glmer(Peso~(Talla)+(1|Comuna), data=data, family=Gamma(link = "log"))
summary(fit1)
## Generalized linear mixed model fit by maximum likelihood (Laplace
##   Approximation) [glmerMod]
##  Family: Gamma  ( log )
## Formula: Peso ~ (Talla) + (1 | Comuna)
##    Data: data
## 
##      AIC      BIC   logLik deviance df.resid 
##  77225.9  77252.8 -38608.9  77217.9     6249 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.5695 -0.5707  0.2141  0.7462  2.8453 
## 
## Random effects:
##  Groups   Name        Variance  Std.Dev.
##  Comuna   (Intercept) 2.754e-06 0.00166 
##  Residual             2.398e-03 0.04897 
## Number of obs: 6253, groups:  Comuna, 16
## 
## Fixed effects:
##              Estimate Std. Error t value Pr(>|z|)    
## (Intercept) 7.3705288  0.0095635  770.69   <2e-16 ***
## Talla       0.0083799  0.0002066   40.57   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##       (Intr)
## Talla -0.995
## optimizer (Nelder_Mead) convergence code: 0 (OK)
## Model failed to converge with max|grad| = 0.0139176 (tol = 0.002, component 1)
## Model is nearly unidentifiable: very large eigenvalue
##  - Rescale variables?

El modelo que se obtiene con las estimaciones es:

\[Log(\widehat{Peso})=7.3705288+0.0083799(Talla_{ij})+b_{0i}\\ b_0 \sim N(-3.285431e-05,~ 6.675801e-07)\]

Modelo 2

# Modelo 2
fit2<-glmer(Peso~log(Talla)+log(SemanaGest)+(1| Comuna), data=data, family=Gamma(link="log"))
summary(fit2)
## Generalized linear mixed model fit by maximum likelihood (Laplace
##   Approximation) [glmerMod]
##  Family: Gamma  ( log )
## Formula: Peso ~ log(Talla) + log(SemanaGest) + (1 | Comuna)
##    Data: data
## 
##      AIC      BIC   logLik deviance df.resid 
##  77136.5  77170.2 -38563.2  77126.5     6248 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.5295 -0.5774  0.2138  0.7436  2.9913 
## 
## Random effects:
##  Groups   Name        Variance  Std.Dev.
##  Comuna   (Intercept) 3.156e-06 0.001777
##  Residual             2.365e-03 0.048627
## Number of obs: 6253, groups:  Comuna, 16
## 
## Fixed effects:
##                 Estimate Std. Error t value Pr(>|z|)    
## (Intercept)      5.41887    0.09416   57.55   <2e-16 ***
## log(Talla)       0.35514    0.01421   24.98   <2e-16 ***
## log(SemanaGest)  0.26951    0.02379   11.33   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) lg(Tl)
## log(Talla)  -0.427       
## log(SmnGst) -0.821 -0.165
## optimizer (Nelder_Mead) convergence code: 0 (OK)
## Model failed to converge with max|grad| = 0.034672 (tol = 0.002, component 1)
## Model is nearly unidentifiable: very large eigenvalue
##  - Rescale variables?

El modelo que se obtiene es el siguiente:

\[log(\widehat{Peso})=5.41887+0.35514Log(Talla_{ij})+0.26951Log(SemanaGest_{ij})+b_{0i}\\ b_0 \sim N(-5.00054e-05,~8.849179e-07)\]

Modelo 3

# Modelo 3
fit3<-glmer(Peso~log(Talla)+log(SemanaGest)+(EduMadre)+(1|Comuna),data=data, family= Gamma(link="log"))
summary(fit3)
## Generalized linear mixed model fit by maximum likelihood (Laplace
##   Approximation) [glmerMod]
##  Family: Gamma  ( log )
## Formula: Peso ~ log(Talla) + log(SemanaGest) + (EduMadre) + (1 | Comuna)
##    Data: data
## 
##      AIC      BIC   logLik deviance df.resid 
##  77134.9  77195.6 -38558.5  77116.9     6244 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.5567 -0.5753  0.2120  0.7428  3.0658 
## 
## Random effects:
##  Groups   Name        Variance  Std.Dev.
##  Comuna   (Intercept) 2.709e-06 0.001646
##  Residual             2.361e-03 0.048594
## Number of obs: 6253, groups:  Comuna, 16
## 
## Fixed effects:
##                 Estimate Std. Error t value Pr(>|z|)    
## (Intercept)     5.397281   0.092075  58.618   <2e-16 ***
## log(Talla)      0.353501   0.014050  25.160   <2e-16 ***
## log(SemanaGest) 0.276228   0.023151  11.931   <2e-16 ***
## EduMadre2       0.002889   0.002182   1.324   0.1854    
## EduMadre3       0.005123   0.002344   2.186   0.0288 *  
## EduMadre4       0.006369   0.005977   1.066   0.2866    
## EduMadre5       0.033022   0.015016   2.199   0.0279 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) lg(Tl) lg(SG) EdMdr2 EdMdr3 EdMdr4
## log(Talla)  -0.433                                   
## log(SmnGst) -0.817 -0.165                            
## EduMadre2   -0.027 -0.063  0.047                     
## EduMadre3   -0.057 -0.061  0.080  0.806              
## EduMadre4   -0.022  0.019  0.004  0.311  0.293       
## EduMadre5   -0.013 -0.007  0.016  0.126  0.122  0.046
## optimizer (Nelder_Mead) convergence code: 0 (OK)
## Model failed to converge with max|grad| = 0.127231 (tol = 0.002, component 1)
## Model is nearly unidentifiable: very large eigenvalue
##  - Rescale variables?

\[Log(\widehat{Peso})=5.397281+0.353501Log(Talla_{ij})+\\0.276228Log(SemanaGest_{ij})+ 0.002889EduMadre_{ij}[2]+0.005123EduMadre_{ij}[3]\\+0.006369EduMadre_{ij}[4]+ 0.033022EduMadre_{ij}[5]+ b_{0i}\] \[ b_0 \sim N(-2.889884e-05, 6.582704e-07)\]

Comparación de los modelos

Se evidencia que el modelo 3 es el que tiene mejor desempeño, si se fija la atención en el criterio de información de Akaike (AIC), vemos el menor valor corresponde tambien al tercer modelo.

Análisis de residuales.

A continuación se presenta el análisis de residuales para cada uno de los modelos ajustados, el análisis se compone de gráficos de normalidad para los errores de cada modelo, grafico de residuales para evaluar el supuesto de homocedasticidad y gráficos de valores ajustados vs. valores reales.

Como en el apartado anterior a partir de la prueba de razón de verosimilitud y el AIC se seleccionó el modelo numero tres como el modelo con mejor desempeño se procede a evaluar la distribución del intercepto aleatorio para el mismo.

Se concluye que no hay evidencia muestral suficiente para rechazar el supuesto de normalidad de \(b_{0i}\)

Para corregir el supuesto de normalidad de los errores de los modelos y de hocedasticidad se aplicaron algunas transformaciones que no generaron muchos cambios en el ajuste, finalmente el mejor ajuste se da sólo con la transformación logaritmo para algunas covariables, dicho esto el modelo con mejor desempeño resulta ser el modelo número 3.

Presentación del Modelo Seleccionado.

\[Log(\widehat{Peso})=5.397281+0.353501Log(Talla_{ij})+\\0.276228Log(SemanaGest_{ij})+ 0.002889EduMadre_{ij}[2]+0.005123EduMadre_{ij}[3]\\+0.006369EduMadre_{ij}[4]+ 0.033022EduMadre_{ij}[5]+ b_{0i}\]

Referencias.

Barajas, F. H., & Martínez, J. L. L. (2022, January 26). Modelos Mixtos Con R. index.knit. Retrieved January 31, 2022, from https://fhernanb.github.io/libro_modelos_mixtos/

Gelman, A., & Hill, J. (2009). Data analysis using regression and multilevel/hierarchical models. Cambridge University Press.

R: A Language and Environment for Statistical Computing,author = R Core Team, organization = R Foundation for Statistical Computing,address = Vienna, Austria, year = 2020, url = https://www.R-project.org/