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:
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"] <- promedioComo 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