Modelos mixtos para explicar el peso de un recién nacido

Introducción

Conocer el peso del recién nacido es de suma importancia, ya que este indica como será su desarrollo físico y las posibilidades de sobrevivir, por otro lado, es un indicador del estado de salud de la madre pues esta juega un papel fundamental en el crecimiento y desarrollo de un bebe; la experiencia ha mostrado que variables como la edad de la madre, el estado de salud, si presenta un embarazo múltiple, la zona de residencia, entre muchas otras interfieren en el crecimiento del feto y su desarrollo. Entonces, se tiene como propósito modelar el peso del recién nacido en función de variables maternas con el fin de que sirva para identificar de manera rápida los fetos que tendrán un bajo peso al nacer.

Descripción de la base de datos y sus variables.

La base de datos Nacidos vivos en Hospital Manuel Uribe Angel contiene información de los partos atendidos en el hospital Manuel Uribe Angel, cada fila corresponde a un recién nacido, donde se pueden encontrar características del bebé, de la madre y del padre, para sumar así 33 variables. El hospital donde fue atendido el parto se ubica en el municipio de Envigado, pero las madres pueden venir de cualquier municipio del país, en total se tienen 12501 observaciones, que corresponden a bebes nacidos entre el 2018 y 2021.

Para obtener la base de datos puede dar clic en el siguiente boton:

Obtener base de datos

Descripción de las variables:

Nombre Descripción Tipo de variable
DEPARTAMENTO Departamento donde se presenta el nacimiento Categórica de un solo nivel (Antioquia)
MUNICIPIO Municipio donde se presenta el nacimiento Categórica de un solo nivel (Envigado)
AREA.NACIMIENTO Es el área geográfica que está definida por un perímetro urbano, cuyos límites se establecen por acuerdos. Categórica de un solo nivel (Cabecera municipal)
SEXO El sexo es el conjunto de las peculiaridades que caracterizan los individuos de una especie dividiéndolos en masculinos y femeninos. Categórica de dos niveles:
MASCULINO
FEMENINO
PESO..Gramos. El peso del recién nacido en gramos Continua
TALLA..Centímetros. Es la talla o altura del recién nacido en centímetros Continua
FECHA.NACIMIENTO Fecha del nacimiento Fecha en formato MM/DD/YYYY HH:mm:ss AM/PM
TIEMPO.DE.GESTACIÓN La gestación es el período de tiempo comprendido entre la concepción y el nacimiento. Continua en semanas
NÚMERO.CONSULTAS.PRENATALES Se entiende por control prenatal lo serie de contactos, entrevistas o visitas programadas de la gestante con integrantes del equipo de salud. Continua
TIPO.PARTO Parto natural, parto vaginal y cesárea son los tres tipos de parto, que dan término a la etapa de gestación, para que se logre el nacimiento. Categórica con tres niveles:
CESÁREA
ESPONTÁNEO
INSTRUMENTADO
MULTIPLICIDAD.EMBARAZO Hace referencia a un embarazo con dos o más embriones Categórica con dos niveles:
DOBLE
SIMPLE
PERTENENCIA.ÉTNICA Se refiere a la identificación de las personas como integrantes de uno de los grupos étnicos, legalmente reconocidos. Categórica con cuatro niveles:
INDÍGENA
NEGRO(A), MULATO(A), AFRO COLOMBIANO(A) O AFRO DESCENDIENTE
NINGUNO DE LOS ANTERIORES
ROM (GITANO)
GRUPO.INDIGENA Si pertenece a un grupo indígena indica cual es Categórica con seis niveles:
CHAMI
EMBERA
EMBERÁ DOBIDA
EMBERÁ KATÍO
N/A
UITOTO
EDAD.MADRE Indica la edad de la madre en años. Continua en años
RÉGIMEN.SEGURIDAD Indica el tipo de relación o afiliación con el sistema de seguridad social Categórica con cuatro niveles:
CONTRIBUTIVO
EXCEPCIÓN
NO ASEGURADO
SUBSIDIADO
TIPO.ADMINISTRADORA Tipo de entidad promotora de salud Categórica de cuatro niveles:
ENTIDAD EXCEPTUADA DE SALUD
ENTIDAD PROMOTORA DE SALUD
ENTIDAD PROMOTORA DE SALUD SUBSIDIADO
N/A
NOMBRE.ADMINISTRADORA Nombre de la entidad promotora de salud Categórica de sesenta y cuatro niveles
EDAD.PADRE Indica la edad del padre en años. Continua en años
NIVEL.EDUCATIVO.PADRE Indica el nivel educativo del padre. Categórica con trece niveles:
BÁSICA PRIMARIA
BÁSICA SECUNDARIA
DOCTORADO
ESPECIALIZACIÓN
MAESTRÍA
MEDIA ACADÉMICA O CLÁSICA
MEDIA TÉCNICA
NINGUNO
PREESCOLAR
PROFESIONAL
SIN INFORMACIÓN
TÉCNICA PROFESIONAL
TECNOLÓGICA
DEPARTAMENTO.EXPEDICIÓN Departamento de expedición del certificado de nacido vivo. Categórica de un solo nivel (Antioquia)
MUNICIPIO.EXPEDICIÓN Municipio de expedición del certificado de nacido vivo. Categórica de un solo nivel (Envigado)
ESTADO.CONYUGAL.DE.LA.MADRE Este va más allá del matrimonio, este se define como la relación jurídica entre una persona con su familia y los miembros que la componen. Categórica con siete niveles:
ESTÁ CASADA
ESTÁ SEPARADA, DIVORCIADA
ESTÁ SOLTERA
ESTÁ VIUDA
NO ESTÁ CASADA Y LLEVA DOS AÑOS O MÁS VIVIENDO CON SU PAREJA
NO ESTÁ CASADA Y LLEVA MENOS DE DOS AÑOS VIVIENDO CON SU PAREJA
SIN INFORMACIÓN
MUNICIPIO.EXPEDICIÓN Municipio de expedición del certificado de nacido vivo. Categórica de un solo nivel (Envigado)
NIVEL.EDUCATIVO.DE.LA.MADRE Indica el nivel educativo del padre. Categórica con catorce niveles:
BÁSICA PRIMARIA
BÁSICA SECUNDARIA
DOCTORADO
ESPECIALIZACIÓN
MAESTRÍA
MEDIA ACADÉMICA O CLÁSICA
MEDIA TÉCNICA
NINGUNO
NORMALISTA
PREESCOLAR
PROFESIONAL
SIN INFORMACIÓN
TÉCNICA PROFESIONAL
TECNOLÓGICA
NUMERO.DE.HIJOS.NACIDOS.VIVOS Número de hijos nacidos vivos que ha tenido la madre Continua
NUMERO.DE.EMBARAZOS Número de embarazos que ha tenido la madre Continua
AREA.DE.RESIDENCIA Área de residencia de la madre Categórica de tres niveles:
CABECERA MUNICIPAL
CENTRO POBLADO (INSPECCIÓN, CORREGIMIENTO O CASERÍO)
RURAL DISPERSO
PAÍS.DE.RESIDENCIA País de residencia de la madre. Categórica de un solo nivel (Colombia)
DEPARTAMENTO.RESIDENCIA Departamento de residencia de la madre. Categórica de once niveles:
ANTIOQUIA
BOYACÁ
CALDAS
CAQUETÁ
CHOCÓ
CUNDINAMARCA
NARIÑO
NORTE DE SANTANDER
RISARALDA
SANTANDER
VALLE DEL CAUCA
MUNICIPIO.RESIDENCIA Municipio de residencia de la madre. Categórica de ciento veinticuatro niveles
MUNICIPIO.RESIDENCIA Municipio de residencia de la madre. Categórica de ciento veinticuatro niveles
LONGITUD Es la distancia en grados decimales que hay con respecto al meridiano principal. Continua
LATITUD Es la distancia en grados decimales que hay con respecto al paralelo principal. Continua
CONTAR_PARTO Variable para realizar el conteo único de los partos múltiples. Categórica
GEOREFERENCIA.RESIDENCIA Variable que indica la georreferencia del municipio de residencia de la madre del recién nacido. Coordenadas geográficas

Objetivo del estudio.

  • Construir un modelo predictivo mediante la metodología de modelos mixtos con el fin de predecir el peso en gramos de un recién nacido a nivel municipal en el departamento de Antioquia en base a los datos ofrecidos por el hospital Manuel Uribe Ángel entre los años 2018-2021.

  • Analizar las variables que más influyen en el peso de los recién nacidos.

Preprocesamiento

Se leerá el conjunto de datos y se verificará la existencia de datos faltantes o nulos.

Lectura de la base de datos.

# lectura de la base de datos
RecienNacidos <- read.csv("G:/Mi unidad/2021-2/ModeloJerarquicos/Nacidos_Vivos_en_Hospital_Manuel_Uribe_Angel.csv", encoding="UTF-8")

Se verifica si hay datos faltantes

#conteo de datos faltantes
NAs <- colSums(is.na.data.frame(RecienNacidos))

#Creación de la tabla
require(kableExtra)
kable(NAs, align = "c", col.names = 'Número de datos faltantes')%>%
  kable_paper("striped", full_width = F, position = 'center') 
Número de datos faltantes
DEPARTAMENTO 0
MUNICIPIO 0
AREA.NACIMIENTO 0
SEXO 0
PESO..Gramos. 0
TALLA..Centímetros. 0
FECHA.NACIMIENTO 0
TIEMPO.DE.GESTACIÓN 0
NÚMERO.CONSULTAS.PRENATALES 0
TIPO.PARTO 0
MULTIPLICIDAD.EMBARAZO 0
PERTENENCIA.ÉTNICA 0
GRUPO.INDIGENA 0
EDAD.MADRE 0
RÉGIMEN.SEGURIDAD 0
TIPO.ADMINISTRADORA 0
NOMBRE.ADMINISTRADORA 0
EDAD.PADRE 0
NIVEL.EDUCATIVO.PADRE 0
DEPARTAMENTO.EXPEDICIÓN 0
MUNICIPIO.EXPEDICIÓN 0
ESTADO.CONYUGAL.DE.LA.MADRE 0
NIVEL.EDUCATIVO.DE.LA.MADRE 0
NUMERO.DE.HIJOS.NACIDOS.VIVOS 0
NUMERO.DE.EMBARAZOS 0
AREA.DE.RESIDENCIA 0
PAÍS.DE.RESIDENCIA 0
DEPARTAMENTO.RESIDENCIA 0
MUNICIPIO.RESIDENCIA 0
LONGITUD 0
LATITUD 0
CONTAR_PARTO 0
GEOREFERENCIA.RESIDENCIA 0

Mediante la tabla anterior se verifica que no se encuentran datos faltantes.

Se verificara si hay datos nulos en las variables PESO..Gramos., TIEMPO.DE.GESTACIÓN y EDAD.MADRE.

#Filtración de datos nulos
nulosPeso <- RecienNacidos[RecienNacidos$PESO..Gramos. == 0, ]
nulosGestacion <- RecienNacidos[RecienNacidos$TIEMPO.DE.GESTACIÓN == 0, ]
nulosEdadM <- RecienNacidos[RecienNacidos$EDAD.MADRE == 0, ]

# Tabla con registro nulo
require(kableExtra)
kable(nulosGestacion, align = "c")%>%
  kable_paper("striped", full_width = F)
DEPARTAMENTO MUNICIPIO AREA.NACIMIENTO SEXO PESO..Gramos. TALLA..Centímetros. FECHA.NACIMIENTO TIEMPO.DE.GESTACIÓN NÚMERO.CONSULTAS.PRENATALES TIPO.PARTO MULTIPLICIDAD.EMBARAZO PERTENENCIA.ÉTNICA GRUPO.INDIGENA EDAD.MADRE RÉGIMEN.SEGURIDAD TIPO.ADMINISTRADORA NOMBRE.ADMINISTRADORA EDAD.PADRE NIVEL.EDUCATIVO.PADRE DEPARTAMENTO.EXPEDICIÓN MUNICIPIO.EXPEDICIÓN ESTADO.CONYUGAL.DE.LA.MADRE NIVEL.EDUCATIVO.DE.LA.MADRE NUMERO.DE.HIJOS.NACIDOS.VIVOS NUMERO.DE.EMBARAZOS AREA.DE.RESIDENCIA PAÍS.DE.RESIDENCIA DEPARTAMENTO.RESIDENCIA MUNICIPIO.RESIDENCIA LONGITUD LATITUD CONTAR_PARTO GEOREFERENCIA.RESIDENCIA
11795 ANTIOQUIA ENVIGADO CABECERA MUNICIPAL MASCULINO 2930 50 06/23/2021 12:00:00 AM 0 0 ESPONTÁNEO SIMPLE NINGUNO DE LOS ANTERIORES N/A 16 NO ASEGURADO N/A N/A 19 BÁSICA SECUNDARIA ANTIOQUIA ENVIGADO NO ESTÁ CASADA Y LLEVA DOS AÑOS O MÁS VIVIENDO CON SU PAREJA BÁSICA SECUNDARIA 2 2 CABECERA MUNICIPAL COLOMBIA ANTIOQUIA ENVIGADO -75.58301 6.167005 S POINT (-75.58301014 6.167004552)

El sujeto que tiene un dato nulo en las semanas de gestación presenta las siguientes características que son de nuestro interés: SEXO = MASCULINO, TALLA..Centímetros. = 50, TIPO.DE.PARTO = ESPONTÁNEO, EDAD.MADRE = 16.

Con estas características se le aplicara un filtro a la base de datos para obtener sujetos con los mismos valores, luego se sacara el promedio a las semanas de gestación para remplazar el cero.

# Se hace un filtro
filtro <- RecienNacidos[RecienNacidos$SEXO == 'MASCULINO' & RecienNacidos$TALLA..Centímetros. == 50 & RecienNacidos$TIPO.PARTO == 'ESPONTÁNEO' & RecienNacidos$EDAD.MADRE == 16 & RecienNacidos$TIEMPO.DE.GESTACIÓN > 0, ]

# promedio de los sujetos similares
promedio <- mean(filtro$TIEMPO.DE.GESTACIÓN)

#Remplazando el cero en la variable TIEMPO.DE.GESTACIÓN
RecienNacidos[11795, "TIEMPO.DE.GESTACIÓN"] <- promedio

Como se va a trabajar solo con las madres residentes en Antioquia aplicamos otro filtro

antioquia <- RecienNacidos[RecienNacidos$DEPARTAMENTO.RESIDENCIA == 'ANTIOQUIA', ]

Para efectos prácticos se va a considerar solo los municipios con mas de diez registros.

ConMun <- table(antioquia$MUNICIPIO.RESIDENCIA)

Nombres <- names(ConMun[ConMun > 10])

datos <- antioquia[antioquia$MUNICIPIO.RESIDENCIA %in% Nombres, ]

Se da un pequeña vista de la base de datos con la que se va a trabajar

kable(head(datos), align = "c")%>%
  kable_paper("striped", full_width = F, position = 'center') 
DEPARTAMENTO MUNICIPIO AREA.NACIMIENTO SEXO PESO..Gramos. TALLA..Centímetros. FECHA.NACIMIENTO TIEMPO.DE.GESTACIÓN NÚMERO.CONSULTAS.PRENATALES TIPO.PARTO MULTIPLICIDAD.EMBARAZO PERTENENCIA.ÉTNICA GRUPO.INDIGENA EDAD.MADRE RÉGIMEN.SEGURIDAD TIPO.ADMINISTRADORA NOMBRE.ADMINISTRADORA EDAD.PADRE NIVEL.EDUCATIVO.PADRE DEPARTAMENTO.EXPEDICIÓN MUNICIPIO.EXPEDICIÓN ESTADO.CONYUGAL.DE.LA.MADRE NIVEL.EDUCATIVO.DE.LA.MADRE NUMERO.DE.HIJOS.NACIDOS.VIVOS NUMERO.DE.EMBARAZOS AREA.DE.RESIDENCIA PAÍS.DE.RESIDENCIA DEPARTAMENTO.RESIDENCIA MUNICIPIO.RESIDENCIA LONGITUD LATITUD CONTAR_PARTO GEOREFERENCIA.RESIDENCIA
ANTIOQUIA ENVIGADO CABECERA MUNICIPAL MASCULINO 2650 47 01/01/2018 12:01:00 PM 37 9 ESPONTÁNEO SIMPLE NINGUNO DE LOS ANTERIORES N/A 32 CONTRIBUTIVO ENTIDAD PROMOTORA DE SALUD SALUD TOTAL S.A. ENTIDAD PROMOTORA DE SALUD 48 BÁSICA SECUNDARIA ANTIOQUIA ENVIGADO NO ESTÁ CASADA Y LLEVA DOS AÑOS O MÁS VIVIENDO CON SU PAREJA MEDIA ACADÉMICA O CLÁSICA 2 2 CABECERA MUNICIPAL COLOMBIA ANTIOQUIA ITAGÜÍ -75.61436 6.169598 S POINT (-75.6143587142 6.16959762893)
ANTIOQUIA ENVIGADO CABECERA MUNICIPAL MASCULINO 3470 50 01/01/2018 11:25:00 PM 38 12 CESÁREA SIMPLE NINGUNO DE LOS ANTERIORES N/A 36 NO ASEGURADO N/A N/A 39 PROFESIONAL ANTIOQUIA ENVIGADO ESTÁ CASADA PROFESIONAL 1 1 RURAL DISPERSO COLOMBIA ANTIOQUIA BARBOSA -75.33164 6.439227 S POINT (-75.3316442322 6.43922688162)
ANTIOQUIA ENVIGADO CABECERA MUNICIPAL MASCULINO 3730 52 01/01/2018 10:33:00 AM 40 9 CESÁREA SIMPLE NINGUNO DE LOS ANTERIORES N/A 23 CONTRIBUTIVO ENTIDAD PROMOTORA DE SALUD E.P.S. SANITAS S.A. 25 PROFESIONAL ANTIOQUIA ENVIGADO NO ESTÁ CASADA Y LLEVA MENOS DE DOS AÑOS VIVIENDO CON SU PAREJA PROFESIONAL 2 2 CABECERA MUNICIPAL COLOMBIA ANTIOQUIA MEDELLÍN -75.58171 6.246716 S POINT (-75.581713332 6.246715564)
ANTIOQUIA ENVIGADO CABECERA MUNICIPAL MASCULINO 3010 50 01/01/2018 10:04:00 PM 39 4 CESÁREA SIMPLE NINGUNO DE LOS ANTERIORES N/A 29 SUBSIDIADO ENTIDAD PROMOTORA DE SALUD SUBSIDIADO SAVIA SALUD E.P.S. 39 PROFESIONAL ANTIOQUIA ENVIGADO ESTÁ SOLTERA MEDIA ACADÉMICA O CLÁSICA 1 1 CABECERA MUNICIPAL COLOMBIA ANTIOQUIA COPACABANA -75.50934 6.348641 S POINT (-75.5093439031 6.34864054523)
ANTIOQUIA ENVIGADO CABECERA MUNICIPAL FEMENINO 3700 50 01/01/2018 09:02:00 PM 39 6 CESÁREA SIMPLE NINGUNO DE LOS ANTERIORES N/A 21 CONTRIBUTIVO ENTIDAD PROMOTORA DE SALUD NUEVA EPS SA 21 MEDIA ACADÉMICA O CLÁSICA ANTIOQUIA ENVIGADO ESTÁ SOLTERA MEDIA ACADÉMICA O CLÁSICA 1 1 RURAL DISPERSO COLOMBIA ANTIOQUIA ITAGÜÍ -75.61436 6.169598 S POINT (-75.6143587142 6.16959762893)
ANTIOQUIA ENVIGADO CABECERA MUNICIPAL MASCULINO 2980 47 01/01/2018 08:15:00 PM 38 0 ESPONTÁNEO SIMPLE NINGUNO DE LOS ANTERIORES N/A 21 NO ASEGURADO N/A N/A 32 BÁSICA SECUNDARIA ANTIOQUIA ENVIGADO NO ESTÁ CASADA Y LLEVA DOS AÑOS O MÁS VIVIENDO CON SU PAREJA BÁSICA PRIMARIA 3 5 CABECERA MUNICIPAL COLOMBIA ANTIOQUIA ITAGÜÍ -75.61436 6.169598 S POINT (-75.6143587142 6.16959762893)

Análisis descriptivo

Como nuestro objetivo es modelar el peso del recién nacido se comienza mirando su histograma.

require(ggplot2)

ggplot(data = datos, aes(x = PESO..Gramos.)) +
  geom_histogram(aes(fill=..count..)) +
  ylab('Frecuencia') + xlab('Peso en gramos')

  • El histograma muestra una distribución asimétrica a la derecha, esto es debido a que no es muy usual encontrar pesos muy grandes en recién nacidos, lo que lleva también a pensar que no sigue una distribución normal.

  • Los datos se concentran alrededor de los 3000 gramos, no se observan valores atípicos, hay más recién nacidos con pesos bajos que con pesos grandes.



Ahora se procede a analizar que relaciones hay entre la variable respuesta y algunas de las covariables.

library(ggplot2)

ggplot(datos, aes(x = TIEMPO.DE.GESTACIÓN, y = PESO..Gramos.)) +
  geom_point(color = '#111f28') + 
  xlab('Tiempo de gestación') + ylab('Peso en gramos')

Del gráfico anterior se observa una relación positiva entre el peso y el tiempo de gestación, también se puede ver que a medida que aumenta el tiempo de gestación aumenta la variabilidad del peso.

Ahora se procede a mirar el gráfico de dispersión entre el peso y la edad de la madre.

library(ggplot2)

ggplot(datos, aes(x = TIEMPO.DE.GESTACIÓN, y = EDAD.MADRE)) +
  geom_point(color = '#111f28') + 
  xlab('Edad de la madre') + ylab('Peso en gramos')

Del gráfico se observa que no hay una buena relación entre el peso en gramos y la edad de la madre, ya que se observa mucha dispersion alredor de todas las edades, sin embargo expertos consideran que edades menores a 16 afectan negativamente el peso de un recién nacido.

Ahora se mira el gráfico de disperción entre el peso y el número de consultas prenatales

library(ggplot2)

ggplot(datos, aes(x = NÚMERO.CONSULTAS.PRENATALES, y = PESO..Gramos.)) +
  geom_point(color = '#111f28') + 
  xlab('Número de consultas prenatales') + ylab('Peso en gramos')

Aunque se observa mucha dispersión en los datos, se pueda observar una relación positiva entre el peso y el número de consultas prenatales.

Ahora si mirara el gráfico de dispersión entre el peso y el número de hijos nacidos vivos.

library(ggplot2)

ggplot(datos, aes(x = NUMERO.DE.HIJOS.NACIDOS.VIVOS, y = PESO..Gramos.)) +
  geom_point(color = '#111f28') + 
  xlab('Número de hijos nacidos vivos') + ylab('Peso en gramos')

Se observa que la dispersión disminuye a medida que aumenta el número de hijos nacidos vivos, sin embargo se logra observar una relación positiva entre el peso y el número de hijos nacidos vivos.

Ahora miraremos el gráfico de dispersión entre el peso y número de embarazos que ha tenido la madre

library(ggplot2)

ggplot(datos, aes(x = NUMERO.DE.EMBARAZOS, y = PESO..Gramos.)) +
  geom_point(color = '#111f28') + 
  xlab('Número de embarazos') + ylab('Peso en gramos')

Se observa que la dispersión disminuye a medida que aumenta el número de hijos nacidos vivos, sin embargo se logra observar una relación positiva entre el peso y el número de hijos nacidos vivos.

Ahora se realizara un boxplot del peso en función de sexo del recién nacido.

library(ggplot2)

ggplot(datos, aes(x = SEXO, y = PESO..Gramos., fill = SEXO)) +
  geom_boxplot()+
  xlab("Sexo del recién nacido") + ylab("Peso en gramos") +
   scale_fill_brewer()+
  theme(legend.position = "NONE")

Se observa que hay un pequeña diferencia cuanto se pertenece al sexo masculino, pues este presenta un peso promedio mayor que el el sexo femenino.

Ahora se mirara un boxplot del peso en función del tipo de parto.

library(ggplot2)

ggplot(datos, aes(x = TIPO.PARTO, y = PESO..Gramos., fill = TIPO.PARTO)) +
  geom_boxplot()+
  xlab("Tipo de parto") + ylab("Peso en gramos") +
   scale_fill_brewer()+
  theme(legend.position = "NONE")

Se observa que los partos por cesárea o instrumentado presentan un peso promedio mayor frente al parto espontáneo.

Ahora se mirara el boxplot del peso en función de la multiplicidad del embarazo.

library(ggplot2)

ggplot(datos, aes(x = MULTIPLICIDAD.EMBARAZO, y = PESO..Gramos., fill = MULTIPLICIDAD.EMBARAZO)) +
  geom_boxplot()+
  xlab("Multiplicidad del embarazo") + ylab("Peso en gramos") +
   scale_fill_brewer()+
  theme(legend.position = "NONE")

Se observa que un embarazo simple tiene un peso promedio mayor que un embarazo múltiple.

Ahora se graficará un boxplot del peso en función del régimen de seguridad social

library(ggplot2)

ggplot(datos, aes(x = RÉGIMEN.SEGURIDAD, y = PESO..Gramos., fill = RÉGIMEN.SEGURIDAD)) +
  geom_boxplot()+
  xlab("Tipo de régimen de la seguridad social") + ylab("Peso en gramos") +
   scale_fill_brewer()+
  theme(legend.position = "NONE")

Del gráfico anterior se observa que los que no tienen un régimen de seguridad social, es decir pertenecen a la categoría “EXCEPCIÓN” presentan un peso promedio menor frente a las demás categorías.

Ahora se graficará un boxplot del peso en función del estado conyugal de la madre.

library(ggplot2)

ggplot(datos, aes(x = ESTADO.CONYUGAL.DE.LA.MADRE, y = PESO..Gramos., fill = ESTADO.CONYUGAL.DE.LA.MADRE)) +
  geom_boxplot()+ 
  scale_x_discrete("Estado conyugal de la madre", labels =c("ESTÁ CASADA" = '1', "ESTÁ SEPARADA, DIVORCIADA" = '2', "ESTÁ SOLTERA" = '3', "ESTÁ VIUDA" = '4', "NO ESTÁ CASADA Y LLEVA DOS AÑOS O MÁS VIVIENDO CON SU PAREJA" = '5', "NO ESTÁ CASADA Y LLEVA MENOS DE DOS AÑOS VIVIENDO CON SU PAREJA" = '6', "SIN INFORMACIÓN" = '7')) + 
  labs(fill = "") + 
  ylab("Peso en gramos") +
  scale_fill_brewer(labels = c("1 ESTÁ CASADA", "2 ESTÁ SEPARADA,
  DIVORCIADA", "3 ESTÁ SOLTERA", "4 ESTÁ VIUDA", "5 NO ESTÁ CASADA 
  Y LLEVA DOS AÑOS 
  O MÁS VIVIENDO CON SU PAREJA", "6 NO ESTÁ CASADA 
  Y LLEVA MENOS DE 
  DOS AÑOS VIVIENDO CON SU PAREJA", "7 SIN INFORMACIÓN")) +
  theme(legend.position = "bottom")

De gráfico anterior se observa que las madres solteras presentan recién nacidos con un peso promedio menor frente a los otros estados conyugal, por otro lado, las madres viudas presentan en promedio recién nacidos con un mayor peso.

Ahora se realizara un boxplot del peso en función del nivel educatico de la madre.

library(ggplot2)

ggplot(datos, aes(x = NIVEL.EDUCATIVO.DE.LA.MADRE, y = PESO..Gramos., fill = NIVEL.EDUCATIVO.DE.LA.MADRE)) +
  geom_boxplot()+ 
  scale_x_discrete("Nivel educativo de la madre", labels = c("BÁSICA PRIMARIA" = '1', "BÁSICA SECUNDARIA" = '2', "DOCTORADO" = '3', "ESPECIALIZACIÓN" = '4', "MAESTRÍA" = '5', "MEDIA ACADÉMICA O CLÁSICA" = '6', "MEDIA TÉCNICA" = '7', "NINGUNO" = '8', "NORMALISTA" = '9', "PREESCOLAR" = '10', "PROFESIONAL" = '11', "SIN INFORMACIÓN" = '12', "TÉCNICA PROFESIONAL" = '13', "TECNOLÓGICA" = '14')) + 
  labs(fill = "") + 
  ylab("Peso en gramos") +
  scale_fill_brewer(labels = c("1 BÁSICA 
PRIMARIA", "2 BÁSICA 
SECUNDARIA", "3 DOCTORADO", "4 ESPECIALIZACIÓN", "5 MAESTRÍA", " 6 MEDIA ACADÉMICA
                O CLÁSICA", "7 MEDIA TÉCNICA", "8 NINGUNO", "9 NORMALISTA", " 10 PREESCOLAR", " 11 PROFESIONAL", "12 SIN INFORMACIÓN", "13 TÉCNICA
                PROFESIONAL", "14 TECNOLÓGICA")) +
  theme(legend.position = "bottom")

Se observa que en general la mayoría de los niveles se comportan de manera similar, sin embargo, el nivel prescolar presenta pesos en promedio mayores que los demás niveles, mientras que los que no tienen información tienen pesos en promedio menores.

Ahora se graficará el peso en función del area de residencia de la madre

library(ggplot2)

ggplot(datos, aes(x = AREA.DE.RESIDENCIA, y = PESO..Gramos., fill = AREA.DE.RESIDENCIA))+
  geom_boxplot() + 
  scale_x_discrete("Area de residencia", labels = c("CABECERA MUNICIPAL" = '1', "CENTRO POBLADO (INSPECCIÓN, CORREGIMIENTO O CASERÍO)" = '2', "RURAL DISPERSO" = '3')) + 
  labs(fill = "") + 
  ylab("Peso en gramos") +
  scale_fill_brewer(labels = c("1 CABECERA MUNICIPAL", "2 CENTRO POBLADO
    (INSPECCIÓN, CORREGIMIENTO O CASERÍO)", "3 RURAL DISPERSO")) +
  theme(legend.position = "bottom")

Del gráfico anterior se observa que ambos niveles son similares, pues las cajas no se traslapan.

Ahora se va ilustra como se comparta el peso en función del tiempo de gestación, pero diferenciando por municipio.

library(ggplot2)
library(dplyr)

#Se sacan municipios de manera aleatoria
set.seed(1000538867)
Municipio <- as.vector(sample(levels(factor(datos$MUNICIPIO.RESIDENCIA)), 6))


datos %>% filter(MUNICIPIO.RESIDENCIA %in% Municipio) %>% 
  ggplot(aes(x = TIEMPO.DE.GESTACIÓN, y = PESO..Gramos., color = SEXO)) + geom_point() +
  facet_wrap(~MUNICIPIO.RESIDENCIA)

Se observa que no todos los municipios tienen una gran cantidad de datos, por lo tanto, se ven comportamientos diferentes, en los municipios de Itagüí y Medellín que a pesar de tener una gran cantidad de datos se encuentra que los recién nacidos de Medellín pueden presentar un intercepto mayor a los recién nacidos del municipio de Itagüí, pero sus pendientes parece ser similares.

Modelos a considerar

En base al análisis descriptivo se consideran modelos con las siguientes variables: TIEMPO.DE.GESTACIÓN, EDAD.MADRE, NUMERO.DE.EMBARAZOS, SEXO, TIPO.PARTO, MULTIPLICIDAD.EMBARAZO y la variable MUNICIPIO.RESIDENCIA sera de utilizada como variable de agrupamiento.

Modelo 1

El modelo (mod1) del cual se inició es un modelo de referencia el cual desconoce la agrupación de los municipios. Este modelo contiene sólo efectos fijos debido al tiempo de gestación, a la edad de la madre, numero de embarazos, sexo del bebe, tipo de parto y multiplicidad del embarazo. El modelo inicial se muestra a continuación:

\[peso \sim N(\mu_{ij}, \sigma^2), \\ \mu_{ij} = \beta_0 + \beta_1\text{Tiempo de gestación}_{ij} + \beta_2\text{Edad}_{ij} + \beta_3\text{Número de embarazos}_{ij} + \\ \beta_4\text{Sexo}_\text{Masculinoj} + \beta_5\text{Tipo de parto}_\text{Espontáneoj} + \beta_6\text{Tipo de parto}_\text{Instrumentadoj}+ \\ \beta_7\text{Multiplicidad del embarazo}_\text{Simplej}\]

donde i corresponde al municipio y j al sujeto.

Modelo 2

Del modelo uno se construyó un modelo dos (mod2) que se caracteriza por tener un intercepto aleatorio denotado por \(b_{0i}\):

\[peso | b_0 \sim N(\mu_{ij}, \sigma^2), \\ \mu_{ij} = \beta_0 + \beta_1\text{Tiempo de gestación}_{ij} + \beta_2\text{Edad}_{ij} + \beta_3\text{Número de embarazos}_{ij} + \\ \beta_4\text{Sexo}_\text{Masculinoj} + \beta_5\text{Tipo de parto}_\text{Espontáneoj} + \beta_6\text{Tipo de parto}_\text{Instrumentadoj}+ \\ \beta_7\text{Multiplicidad del embarazo}_\text{Simplej} + b_{0i} \\ b_{0i} \sim N(0, \sigma^2_{b_0})\]

donde i corresponde al municipio y j al sujeto.

Modelo 3

Del modelo dos se construyó un modelo tres (mod3) que se caracteriza por tener un intercepto aleatorio denotado por \(b_{0i}\) y pendiente aleatoria \(b_{1i}\) para el tiempo de gestación:

\[peso|b_0, b_1 \sim N(\mu_{ij}, \sigma^2), \\ \mu_{ij} = \beta_0 + \beta_1\text{Tiempo de gestación}_{ij} + \beta_2\text{Edad}_{ij} + \beta_3\text{Número de embarazos}_{ij} + \\ \beta_4\text{Sexo}_\text{Masculinoj} + \beta_5\text{Tipo de parto}_\text{Espontáneoj} + \beta_6\text{Tipo de parto}_\text{Instrumentadoj}+ \\ \beta_7\text{Multiplicidad del embarazo}_\text{Simplej} + b_{0i} + b_{1i}\text{Tiempo de gestación}_{ij}\\ \pmatrix{b_0 \\ b_1} \sim N \pmatrix{\pmatrix{0 \\ 0}, \pmatrix{\sigma_{b_0}^2 & \sigma_{b_{01}} \\ \sigma_{b_{01}} & \sigma_{b_1}^2}}\] donde i corresponde al municipio y j al sujeto.

Construcción de los modelos

Se ajustaron los modelo por medio de la función gls y lme incluida en el paquete nlme, los modelos fueron ajustado por medio de REML.

library(lme4)
library(nlme)

mod1 <- gls(PESO..Gramos. ~ TIEMPO.DE.GESTACIÓN + EDAD.MADRE + NUMERO.DE.EMBARAZOS + SEXO + TIPO.PARTO + MULTIPLICIDAD.EMBARAZO, data = datos, method = "REML")

mod2 <- lme(PESO..Gramos. ~ TIEMPO.DE.GESTACIÓN + EDAD.MADRE + NUMERO.DE.EMBARAZOS + SEXO + TIPO.PARTO + MULTIPLICIDAD.EMBARAZO, random = ~ 1| MUNICIPIO.RESIDENCIA, data = datos, method = "REML")

mod3 <- lme(PESO..Gramos. ~ TIEMPO.DE.GESTACIÓN + EDAD.MADRE + NUMERO.DE.EMBARAZOS + SEXO + TIPO.PARTO + MULTIPLICIDAD.EMBARAZO, random = ~ 1 + TIEMPO.DE.GESTACIÓN| MUNICIPIO.RESIDENCIA, data = datos, method = "REML")

Comparación de los modelos

Ahora se compara los modelos mediante una prueba de razón de verosimilitud, el modelo 1 se considera como base, luego la prueba verificara si la inclusión del intercepto aleatorio es significativa y luego se verificara si es necesario incluir una pendiente aleatoria.

Básicamente las hipótesis a probar es la siguiente:

entre el modelo 1 y 2 queremos probar:

\[H_0 : \text{El intercepto aleatorio no aporta al modelo} \\ H_1: \text{El intercepto aleatorio aporta al modelo}\]

entre el modelo 2 y 3 queremos probar:

\[H_0 : \text{La pendiente aleatoria no aporta al modelo} \\ H_1: \text{La pendiente aleatoria aporta al modelo}\]

anova(mod1, mod2, mod3)
##      Model df      AIC      BIC    logLik   Test   L.Ratio p-value
## mod1     1  9 177724.1 177790.7 -88853.04                         
## mod2     2 10 177715.2 177789.3 -88847.61 1 vs 2 10.848136   0.001
## mod3     3 12 177719.2 177808.1 -88847.61 2 vs 3  0.000022   1.000

De la tabla se observa que para la primera prueba el valor es pequeño, por lo tanto se rechaza \(H_0\), es decir el intercepto aleatorio aporta al modelo; mientras que en la segunda prueba no se rechaza \(H_0\), es decir, la pendiente aleatoria no aporta al modelo.

Entonces el mejor modelo es el dos, sin embargo la diferencia entre el AIC es pequeña.

Análisis de residuales

Se va comprobar si se cumplen los supuestos de varianza constante y normalidad de los residuales.

plot(mod2)

Se observa que la varianza no es constante, pues esta presenta forma de campana.

Ahora se mira la gráfica de probabilidad normal de los residuos, se muestra en la figura a continuación.

qqnorm(mod2$residuals)
qqline(mod2$residuals)

Del gráfico anterior se observa que no hay normalidad en los residuales, pues este presenta colas livianas.

El mejor modelo no cumple supuestos por lo que podría pensar en mejorarlo, en nuestro caso se puede pensar que hay carencia de ajuste por lo tanto realizaremos un modelo gamlss con una distribución Weibull.

La distribución de Weibull es una distribución versátil que se puede utilizar para modelar una amplia gama de aplicaciones en ingeniería, investigación médica, control de calidad, finanzas y climatología. Por ejemplo, la distribución se utiliza frecuentemente con análisis de fiabilidad para modelar datos de tiempo antes de falla. La distribución de Weibull también se utiliza para modelar datos asimétricos, como es nuestro caso.

Se ajusta un modelo gamlss

library("gamlss")

mod4 <- gamlss(PESO..Gramos. ~ TIEMPO.DE.GESTACIÓN + EDAD.MADRE + NUMERO.DE.EMBARAZOS + SEXO + TIPO.PARTO + MULTIPLICIDAD.EMBARAZO + re(random=~1|MUNICIPIO.RESIDENCIA, method="REML"), sigma.formula = ~1+TIEMPO.DE.GESTACIÓN, data = datos, family = WEI())
## GAMLSS-RS iteration 1: Global Deviance = 179453.4 
## GAMLSS-RS iteration 2: Global Deviance = 179308.5 
## GAMLSS-RS iteration 3: Global Deviance = 179309.5 
## GAMLSS-RS iteration 4: Global Deviance = 179309.9 
## GAMLSS-RS iteration 5: Global Deviance = 179309.9 
## GAMLSS-RS iteration 6: Global Deviance = 179309.9 
## GAMLSS-RS iteration 7: Global Deviance = 179309.9
plot(mod4)

## ******************************************************************
##        Summary of the Quantile Residuals
##                            mean   =  0.01437596 
##                        variance   =  0.8751602 
##                coef. of skewness  =  0.9271655 
##                coef. of kurtosis  =  5.323934 
## Filliben correlation coefficient  =  0.9802847 
## ******************************************************************

Observando el gráfico de residuales y el de probabilidad normal, se observan que nuevamente no se cumplen los supuestos a pesar de modelar la varianza y darle una distribución Weibull a la variable respuesta.

Presentación del mejor modelo

Ecuación del mejor modelo ajustado:

\[\hat{peso} | b_0 \sim N(\hat{\mu}_{ij}, 354.3122), \\ \hat{\mu}_{ij} = -4084.205 + 176.371\text{Tiempo de gestación}_{ij} + 1.376\text{Edad}_{ij} + 32.176\text{Número de embarazos}_{ij} + \\ 95.741\text{Sexo}_\text{Masculinoj} -72.334\text{Tipo de parto}_\text{Espontáneoj} -29.612\text{Tipo de parto}_\text{Instrumentadoj}+ \\ 295.756\text{Multiplicidad del embarazo}_\text{Simplej} + b_{0i} \\ b_{0i} \sim N(0, 52.98202^2)\] Aunque el modelo no cumple supuestos, se vio que sus variables son significativas lo cual puede ser de utilidad para la planeación de estudios del peso de un recién nacido, pues ya se sabe que dichas variables si aportan para explicar el peso de un recién nacido.

Se visualiza una parte de los valores ajustados

datos$ajustado <- predict(mod2)

library(ggplot2)
library(dplyr)

#Se sacan municipios de manera aleatoria
set.seed(1000538867)
Municipio <- as.vector(sample(levels(factor(datos$MUNICIPIO.RESIDENCIA)), 6))


datos %>% filter(MUNICIPIO.RESIDENCIA %in% Municipio) %>% 
  ggplot(aes(x = TIEMPO.DE.GESTACIÓN, y = ajustado, color = SEXO)) + geom_point()+
  facet_wrap(~MUNICIPIO.RESIDENCIA)

Aunque el modelo no logra capturar toda la variabilidad, se logra explicar la tendencia.

Conclusiones

  • El mejor modelo ajustado fue el dos, lo cual sera útil para que un futuro se estudien mas a fondo la incidencia de estas variables en el peso de un recién nacido, sin embargo, es necesario incluir otra variables en la base de datos que nos ayude a mejorar el modelo.

  • En un estudio posterior se puede pensar en recolectar información de varios hospitales y construir una sola base datos de recién nacidos a nivel general de un municipio o departamento, esto con el fin de obtener mejor calidad en los datos.

  • Incluir un modelo mixto fue útil para modelar la variabilidad que había entre los municipios de residencia, por lo que si más adelante se quiere hacer un estudio del peso de un recién nacido, se debe incluir el municipio de residencia de la madre como una variable de agrupación.

Referencias.

Pacora, Percy, Buzzio, Ytala, Ingar, Wilfredo, & Santiváñez, Álvaro. (2005). El peso del recién nacido sano según edad gestacional en una población de Lima. Anales de la Facultad de Medicina, 66(3), 212-217. Recuperado en 04 de febrero de 2022, de http://www.scielo.org.pe/scielo.php?script=sci_arttext&pid=S1025-55832005000300004&lng=es&tlng=es.

Barajas, F. H. (2022, 3 febrero). 7 Aplicación con nlme | Modelos Mixtos con R. Modelos Mixtos con R. Recuperado 4 de febrero de 2022, de https://fhernanb.github.io/libro_modelos_mixtos/apli-nlme.htmlNacidos

Vivos en Hospital Manuel Uribe Angel | Datos Abiertos Colombia. (2021, 20 septiembre). Datos abiertos Colombia. Recuperado 4 de febrero de 2022, de https://www.datos.gov.co/es/Salud-y-Protecci-n-Social/Nacidos-Vivos-en-Hospital-Manuel-Uribe-Angel/udqu-ifxrVista

González Herrera, L. G., & Hernández Barajas, F. (2020). Aplicación de modelos lineales mixtos para estudiar la producción de leche en vacas de la raza Lucerna. Revista de la Facultad de Ciencias, 9(2), 23–42. https://doi.org/10.15446/rev.fac.cienc.v9n2.84681