# Activación de paquetes
library(haven)
library(foreign)
library(ggplot2)
library(moments)
library(knitr)
library(sjPlot)
library(sjmisc)
library(sjlabelled)
library(olsrr) # Métodos de selección por pasos
library(PerformanceAnalytics) # Varias funciones.
# Lo utilizaremos para construir matriz de correlaciones, incluyendo gráficos
# de dispersión para análisis exploratorio de los datos
En 2005 Almond y colaboradores presentaron un artículo en el que evaluaron los costos hospitalarios, el estado de salud al nacimiento y la mortalidad infantil según el peso al nacer. Uno de los argumentos con relación al problema es que un incremento en una desviación estándar en el peso al nacimiento disminuye los costos hospitalarios y la tasa de mortalidad infantil, incrementa el APGAR y reduce el uso de ventilación asistida en 0,51, 0,42, 0,51 y 9,25 desviaciones estándar respectivamente. Dado que la exposición de la madre al tabaquismo durante el embarazo es un factor modificable, los autores de dicho artículo se interesaron en evaluar el efecto sobre el bajo peso al nacer. Desenlace: Peso al nacimiento en gramos (bweight)
Variables explicativas: tabaquismo (mbsmoke), edad de la madre en años, Estado civil casada(mmarried), madre/padre hispánica(o) (mhisp/fhisp), raza de la madre blanca (mrace), madreextranjera (foreign), consumo alcohol durante el embarazo (alcohol), antecedentes de hijosnacidos muertos (deadkids), edad del padre (fage), años de educación de madre/padre(medu/fedu), número de visitas prenatales (nprenatal), meses desde el ultimo nacimiento(monthslb), orden de nacimiento (order), trimestre de la primera visita prenatal (prenatal), mes delnacimiento (birthmonth).
# Cargar base de datos
library(haven)
PesoNacerv11 <- read_dta("datasets/PesoNacerv11.dta")
mydata <- na.omit(PesoNacerv11)
# Seleccionar variables
myVar <- c("bweight", "mbsmoke", "mage", "fage", "mmarried", "mhisp", "fhisp", "foreign",
"mrace", "frace", "alcohol", "deadkids", "medu", "fedu", "nprenatal", "monthslb",
"order", "prenatal", "birthmonth")
# Creando sub_base con variables a trabajar
mydata <- mydata[, myVar]
# Cargando una librería para trabajar con factores
library(Hmisc)
## Definiendo como factores las variables categóricas
mydata$mmarried <- factor(mydata$mmarried, levels = c(0, 1), labels = c("No", "Si"))
mydata$alcohol <- factor(mydata$alcohol, levels = c(0, 1), labels = c("No", "Si"))
mydata$mbsmoke <- factor(mydata$mbsmoke, levels = c(0, 1), labels = c("No", "Si"))
mydata$mhisp <- factor(mydata$mhisp, levels = c(0, 1), labels = c("No", "Si"))
mydata$fhisp <- factor(mydata$fhisp, levels = c(0, 1), labels = c("No", "Si"))
mydata$foreign <- factor(mydata$foreign, levels = c(0, 1), labels = c("No", "Si"))
mydata$mrace <- factor(mydata$mrace, levels = c(1, 0), labels = c("Blanca", "Otra"))
mydata$frace <- factor(mydata$frace, levels = c(1, 0), labels = c("Blanca", "Otra"))
mydata$deadkids <- factor(mydata$deadkids, levels = c(0, 1), labels = c("No", "Si"))
summary(mydata)
bweight mbsmoke mage fage mmarried mhisp
Min. : 340 No:3778 Min. :13.0 Min. : 0.0 No:1394 No:4484
1st Qu.:3033 Si: 864 1st Qu.:22.0 1st Qu.:24.0 Si:3248 Si: 158
Median :3390 Median :26.0 Median :28.0
Mean :3362 Mean :26.5 Mean :27.3
3rd Qu.:3725 3rd Qu.:30.0 3rd Qu.:33.0
Max. :5500 Max. :45.0 Max. :60.0
fhisp foreign mrace frace alcohol deadkids
No:4470 No:4394 Blanca:3902 Blanca:3777 No:4492 No:3438
Si: 172 Si: 248 Otra : 740 Otra : 865 Si: 150 Si:1204
medu fedu nprenatal monthslb order
Min. : 0.0 Min. : 0.0 Min. : 0.0 Min. : 0.0 Min. : 0.00
1st Qu.:12.0 1st Qu.:12.0 1st Qu.: 9.0 1st Qu.: 0.0 1st Qu.: 1.00
Median :12.0 Median :12.0 Median :11.0 Median : 13.0 Median : 2.00
Mean :12.7 Mean :12.3 Mean :10.8 Mean : 23.1 Mean : 1.89
3rd Qu.:14.0 3rd Qu.:14.0 3rd Qu.:13.0 3rd Qu.: 35.0 3rd Qu.: 2.00
Max. :17.0 Max. :17.0 Max. :40.0 Max. :272.0 Max. :12.00
prenatal birthmonth
Min. :0.0 Min. : 1.00
1st Qu.:1.0 1st Qu.: 4.00
Median :1.0 Median : 7.00
Mean :1.2 Mean : 6.54
3rd Qu.:1.0 3rd Qu.: 9.00
Max. :3.0 Max. :12.00
| Variable | Nombre | Descripción | Códigos/Valores |
|---|---|---|---|
| 1 | bweight | Peso al nacimiento | Gramos |
| 2 | mbsmoke | Tabaquismo | 0=No, 1=Si |
| 3 | mage | Edad de la madre | Años |
| 4 | fage | Edad del padre | Años |
| 5 | mmarried | Estado civil | 0=Soltera, 1=Casada |
| 6 | mhisp | Madre hispánica | 0=No, 1=Si |
| 7 | fhisp | Padre hispánico | 0=No, 1=Si |
| 8 | foreign | Extranjera | 0=No, 1=Si |
| 9 | mrace | raza de la madre blanca | 0 = No, 1 = Si |
| 10 | frace | raza del padre blanca | 0 = No, 1 = Si |
| 11 | alcohol | Consumo de alcohol | 0=No, 1=Si |
| 12 | deadkids | antecedentes de hijos nacidos muertos | 0=No, 1=Si |
| 13 | medu | Años de educación madre | Años |
| 14 | fedu | Años de educación padre | Años |
| 15 | nprenatal | Número de visitas prenatales | 0 a 40 |
| 16 | monthslb | Meses desde el ultimo nacimiento | 0 a 280 |
| 17 | order | Orden de nacimiento | 0 a 12 |
| 18 | prenatal | trimestre de la primera visita prenatal | 0 a 3 |
| 19 | birthmonth | Mes delnacimiento | Meses |
Nota: En la variable fage se presentaban 294 datos faltantes, que corresponderián a padres cuya edad no se reportó. Para efectos de los cálculos pedidos se eliminaron estos 294 registros de la base de datos (6.7% de 4642 datos), quedando con 4348 datos con los cuales se procedió a realizar los cálculos y en análisis.
indices <- which(mydata$fage == 0) #posiciones de los 0=NA en la vble fage
mydata <- mydata[-indices, ] #borra las filas donde fage=0
summary(mydata)
bweight mbsmoke mage fage mmarried mhisp
Min. : 340 No:3593 Min. :13.0 Min. :14.0 No:1146 No:4206
1st Qu.:3062 Si: 755 1st Qu.:23.0 1st Qu.:25.0 Si:3202 Si: 142
Median :3402 Median :27.0 Median :29.0
Mean :3371 Mean :26.7 Mean :29.1
3rd Qu.:3742 3rd Qu.:31.0 3rd Qu.:33.0
Max. :5500 Max. :45.0 Max. :60.0
fhisp foreign mrace frace alcohol deadkids
No:4194 No:4117 Blanca:3706 Blanca:3659 No:4220 No:3222
Si: 154 Si: 231 Otra : 642 Otra : 689 Si: 128 Si:1126
medu fedu nprenatal monthslb order
Min. : 0.0 Min. : 0.0 Min. : 0.0 Min. : 0.0 Min. : 0.0
1st Qu.:12.0 1st Qu.:12.0 1st Qu.: 9.0 1st Qu.: 0.0 1st Qu.: 1.0
Median :12.0 Median :12.0 Median :11.0 Median : 14.0 Median : 2.0
Mean :12.8 Mean :12.8 Mean :10.9 Mean : 23.2 Mean : 1.9
3rd Qu.:14.0 3rd Qu.:15.0 3rd Qu.:13.0 3rd Qu.: 36.0 3rd Qu.: 2.0
Max. :17.0 Max. :17.0 Max. :30.0 Max. :272.0 Max. :12.0
prenatal birthmonth
Min. :0.00 Min. : 1.00
1st Qu.:1.00 1st Qu.: 4.00
Median :1.00 Median : 7.00
Mean :1.19 Mean : 6.56
3rd Qu.:1.00 3rd Qu.: 9.00
Max. :3.00 Max. :12.00
Evalúe para el peso al nacer del niño (bweight), mediante modelos de regresión lineal simples el efecto de la edad de la madre (mage) y del padre (fage) en años, los años de educación de la madre y del padre (medu/fedu), el número de visitas prenatales (nprenatal), el estado civil casada (mmarried), consumo alcohol durante el embarazo (alcohol) y tabaquismo (mbsmoke).
library(dplyr) #Para el pipeline
library(flextable) #Para la tabla
library(moments) #Para la asimetría y la curtosis
ft <- mydata %>%
summarise(media = mean(mydata$bweight), desv_est = sd(mydata$bweight), mínimo = min(mydata$bweight),
máximo = max(mydata$bweight), asimetría = skewness(mydata$bweight), curtosis = kurtosis(mydata$bweight),
mediana = median(mydata$bweight))
ft <- flextable(ft)
ft <- autofit(ft)
ft
media | desv_est | mínimo | máximo | asimetría | curtosis | mediana |
3,370.72 | 580.133 | 340 | 5,500 | -0.829927 | 2.92996 | 3,402 |
par(mfrow = c(1, 2)) #Modifico PAR para hacer un gráfico al lado del otro
# Comandos para la primera gráfica
hist(mydata$bweight, col = "lightgreen")
# Comandos para la segunda gráfica
boxplot(mydata$bweight, horizontal = FALSE)
par(mfrow = c(1, 1)) #Vuelvo el PAR a su estado inicial
La variable peso al nacer tiene valores que van desde 340 gr a 5500 gr, con una media de 3370.7 gr y desviación estándar de 580 gr. La curtosis es de 2.9 y su curva tiene una morfología leptocúrtica. Además, su asimetría es negativa con una cola izquierda hasta aproximadamente los 2000 gramos y a partir de allí se encuentran la mayoría de los datos, cercanos a la media.
# Paquete para el correlograma
library(corrplot)
# Definir variables numericas
myNumVar = c("bweight", "mage", "fage", "medu", "fedu", "nprenatal")
# Definir la matriz de variables numericas
matrizNum <- mydata[, myNumVar]
# Calcular la matriz de correlaciones
corrmatriz <- cor(matrizNum)
corrmatriz
bweight mage fage medu fedu nprenatal
bweight 1.0000000 0.108838 0.0776624 0.106758 0.119223 0.236890
mage 0.1088382 1.000000 0.7633103 0.422402 0.356099 0.167030
fage 0.0776624 0.763310 1.0000000 0.302475 0.287208 0.119530
medu 0.1067584 0.422402 0.3024750 1.000000 0.633154 0.210487
fedu 0.1192227 0.356099 0.2872075 0.633154 1.000000 0.210476
nprenatal 0.2368904 0.167030 0.1195305 0.210487 0.210476 1.000000
# Gráfico de la matriz de correlaciones
corrplot(corrmatriz, method = "number", type = "lower")
library(PerformanceAnalytics)
myNumVar <- mydata[, myNumVar]
chart.Correlation(myNumVar, histogram = TRUE, method = "pearson")
Según los gráficos de correlación entre las variables numéricas y el bajo peso al nacer (bweight), hay una baja a moderada correlación entre las variables cuantitativas descritas y el bajo peso al nacer, siendo mayor con el número de controles prenatales (0.24) y menor con la edad de la madre (0.078), mientras que la correlación del bajo peso al nacer con las demás variables está entre 0.11 y 0.12.
ggplot(mydata, aes(x = mage, y = bweight)) + geom_point() + theme_classic() + ggtitle("Bajo peso al nacer VS edad de la madre") +
geom_smooth(method = "lm", se = FALSE, col = "red")
ggplot(mydata, aes(x = fage, y = bweight)) + geom_point() + theme_classic() + ggtitle("Bajo peso al nacer VS edad del padre") +
geom_smooth(method = "lm", se = FALSE, col = "red")
ggplot(mydata, aes(x = medu, y = bweight)) + geom_point() + theme_classic() + ggtitle("Bajo peso al nacer VS educación de la madre") +
geom_smooth(method = "lm", se = FALSE, col = "red")
ggplot(mydata, aes(x = fedu, y = bweight)) + geom_point() + theme_classic() + ggtitle("Bajo peso al nacer VS educación del padre") +
geom_smooth(method = "lm", se = FALSE, col = "red")
ggplot(mydata, aes(x = nprenatal, y = bweight)) + geom_point() + theme_classic() +
ggtitle("Bajo peso al nacer VS número de visitas prenatales") + geom_smooth(method = "lm",
se = FALSE, col = "red")
Interpretación de gráficos de dispersión.
En los gráficos de dispersión de los datos de las variables cuantitativas se puede observar que los datos del bajo peso al nacer con respecto al número de controles prenatales muestran una pendiente positiva, indicando que a mayor número de controles prenatales, mayor será el peso al nacer. Con respecto al resto de las variables numéricas (edad de la madre, edad del padre, educación de la madre, educación del padre), se observa una pendiente casi plana indicando que la correlación entre estas y el bajo peso al nacer, no es significativa. En general, se puede decir que hay una dispersión importante de los datos en todas las variables.
library(sjPlot) #Para la presentación de la tabla con los coeficientes
## Modelo 1. Peso al nacer vs edad de la madre Esta tabla muestra los
## coeficientes estimados y las pruebas de hipótesis individuales (para el
## interpto y para la pendiente)
mod1 <- lm(bweight ~ mage, data = mydata)
sjPlot::tab_model(mod1, show.se = TRUE, show.stat = TRUE)
|
infant birth weight (grams) |
|||||
|---|---|---|---|---|---|
| Predictors | Estimates | std. Error | CI | Statistic | p |
| (Intercept) | 3066.48 | 43.05 | 2982.08 – 3150.88 | 71.23 | <0.001 |
| mother’s age | 11.40 | 1.58 | 8.30 – 14.50 | 7.22 | <0.001 |
| Observations | 4348 | ||||
| R2 / R2 adjusted | 0.012 / 0.012 | ||||
## Tabla ANOVA del modelo Esta tabla muestra los errores cuadrádicos y la
## prueba de hipótesis de la regresión (si el modelo lineal es válodo o no lo
## es)
anovamod1 <- anova(mod1)
anovamod1
# Ecuación del modelo
library(equatiomatic)
extract_eq(mod1)
\[ \operatorname{bweight} = \alpha + \beta_{1}(\operatorname{mage}) + \epsilon \]
# show the theoretical model
extract_eq(mod1, wrap = TRUE, use_coefs = TRUE)
\[ \begin{aligned} \operatorname{\widehat{bweight}} &= 3066.48 + 11.4(\operatorname{mage}) \end{aligned} \]
# grafica del modelo
ggplot(mod1, aes(x = mage, y = bweight)) + geom_point() + geom_smooth(method = lm,
se = TRUE, level = 0.95)
* La tabla ANOVA muestra que la asunción del modelo lineal es significativa (valor-p<0.001), por lo que se puede usar la regresión lineal para relacionar las variables peso al nacer y edad de la madre.
La pendiente vale 11.40 y es significativa (valor-p<0.001). Por cada año que se incremente la edad de la madre, aumenta en 11.40 gramos el peso del bebé al nacer.
El intercepto vale 3066.48 y es significativo (valor-p<0.001). En este caso, a pesar de ser significativo, el intercepto no tendría interpretación real, puesto que no es posible que una madre tenga 0 años.
Ecuación: Peso_estimado_bebe_gramos = 3066.48 + 11.40 * Edad_madre_años
El coeficiente de determinación R2 = 0.012, lo que indica que el 1.2% de la variabilidad del peso al nacer del bebé, es explicada por la edad de la madre; el resto 98.8% es explicado por otras variables no incluidas en este modelo. La regresión lineal simple de estas dos variables no es muy buen modelo, y debe pensarse en otro tipo de modelo o en un modelo multivariado.
La gráfica muestra la pobre relación lineal entre las variables Edad de la madre y Peso al nacer. La nube de puntos de las observaciones está muy disperda respecto a la línea de regresión estimada.
library(sjPlot) #Para la presentación de la tabla con los coeficientes
## Modelo 2. Peso al nacer vs edad del padre Esta tabla muestra los
## coeficientes estimados y las pruebas de hipótesis individuales (para el
## interpto y para la pendiente)
mod2 <- lm(bweight ~ fage, data = mydata)
sjPlot::tab_model(mod2, show.se = TRUE, show.stat = TRUE)
|
infant birth weight (grams) |
|||||
|---|---|---|---|---|---|
| Predictors | Estimates | std. Error | CI | Statistic | p |
| (Intercept) | 3162.66 | 41.45 | 3081.39 – 3243.93 | 76.29 | <0.001 |
| father’s age | 7.15 | 1.39 | 4.42 – 9.88 | 5.14 | <0.001 |
| Observations | 4348 | ||||
| R2 / R2 adjusted | 0.006 / 0.006 | ||||
## Tabla ANOVA del modelo Esta tabla muestra los errores cuadrádicos y la
## prueba de hipótesis de la regresión (si el modelo lineal es válodo o no lo
## es)
anovamod2 <- anova(mod2)
anovamod2
# Ecuación del modelo
library(equatiomatic)
extract_eq(mod2)
\[ \operatorname{bweight} = \alpha + \beta_{1}(\operatorname{fage}) + \epsilon \]
# show the theoretical model
extract_eq(mod2, wrap = TRUE, use_coefs = TRUE)
\[ \begin{aligned} \operatorname{\widehat{bweight}} &= 3162.66 + 7.15(\operatorname{fage}) \end{aligned} \]
# grafica del modelo
ggplot(mod2, aes(x = fage, y = bweight)) + geom_point() + geom_smooth(method = lm,
se = TRUE, level = 0.95)
* La tabla ANOVA muestra que la sunción de modelo lineal es significativa (valor-p<0.001), por lo que puede usarse la regresión lineal en este caso.
La pendiente es de 7.15 y es significativa (valor-p<0.001). A partir de 3162.66 gr (Intercepto, valor-p<0.001), por cada año que se incremente la escolaridad del padre, aumenta en 7.15 gramos el peso del bebé al nacer.
Ecuación: Peso_estimado_bebe_gramos = 3162.66 + 7.15 * Edad_padre_años
El coeficiente de determinación R2 = 0.011, indica que el 0.6% de la variabilidad del peso al nacer del bebé, es explicada por la edad de la padre; el resto 99.4% es explicado por otras variables no incluidas en este modelo. La regresión lineal simple con sólo estas dos variables no es muy buen modelo para predecir el peso.
La gráfica muestra la pobre relación lineal entre las variables Edad del padre y Peso al nacer. La nube de puntos de las observaciones está muy disperda respecto a la línea de regresión estimada.
library(sjPlot) #Para la presentación de la tabla con los coeficientes
## Modelo 3. Peso al nacer vs años de educación de la madre Esta tabla muestra
## los coeficientes estimados y las pruebas de hipótesis individuales (para el
## interpto y para la pendiente)
mod3 <- lm(bweight ~ medu, data = mydata)
sjPlot::tab_model(mod3, show.se = TRUE, show.stat = TRUE)
|
infant birth weight (grams) |
|||||
|---|---|---|---|---|---|
| Predictors | Estimates | std. Error | CI | Statistic | p |
| (Intercept) | 3044.97 | 46.84 | 2953.13 – 3136.81 | 65.00 | <0.001 |
|
mother’s education attainment |
25.46 | 3.60 | 18.41 – 32.51 | 7.08 | <0.001 |
| Observations | 4348 | ||||
| R2 / R2 adjusted | 0.011 / 0.011 | ||||
## Tabla ANOVA del modelo Esta tabla muestra los errores cuadrádicos y la
## prueba de hipótesis de la regresión (si el modelo lineal es válodo o no lo
## es)
anovamod3 <- anova(mod3)
anovamod3
# Ecuación del modelo
library(equatiomatic)
extract_eq(mod3)
\[ \operatorname{bweight} = \alpha + \beta_{1}(\operatorname{medu}) + \epsilon \]
# show the theoretical model
extract_eq(mod3, wrap = TRUE, use_coefs = TRUE)
\[ \begin{aligned} \operatorname{\widehat{bweight}} &= 3044.97 + 25.46(\operatorname{medu}) \end{aligned} \]
# grafica del modelo
ggplot(mod3, aes(x = medu, y = bweight)) + geom_point() + geom_smooth(method = lm,
se = TRUE, level = 0.95)
La tabla ANOVA muestra que la sunción de modelo lineal es significativa (valor-p<0.001), por lo que puede usarse la regresión lineal en este caso.
La pendiente es de 25.46 y es significativa (valor-p<0.001). A partir de 3044.97 gr (Intercepto, valor-p<0.001), por cada año que se incremente la escolaridad de la madre, aumenta en 25.46 gramos el peso del bebé al nacer.
Ecuación: Peso_estimado_bebe_gramos = 3044.97 + 25.46 * educación_madre_años
El coeficiente de determinación R2 = 0.011, indica que el 1.1% de la variabilidad del peso al nacer del bebé, es explicada por la escolaridad de la madre; el resto 98.9% es explicado por otras variables no incluidas en este modelo. La regresión lineal simple con sólo estas dos variables no es muy buen modelo para predecir el peso.
La gráfica muestra la pobre relación lineal entre las variables educación de la madre y Peso al nacer. La nube de puntos de las observaciones está muy disperda respecto a la línea de regresión estimada con mayor dispersión en los valores extremos en años de educación.
library(sjPlot) #Para la presentación de la tabla con los coeficientes
## Modelo 4. Peso al nacer vs años de educación del padre Esta tabla muestra
## los coeficientes estimados y las pruebas de hipótesis individuales (para el
## interpto y para la pendiente)
mod4 <- lm(bweight ~ fedu, data = mydata)
sjPlot::tab_model(mod4, show.se = TRUE, show.stat = TRUE)
|
infant birth weight (grams) |
|||||
|---|---|---|---|---|---|
| Predictors | Estimates | std. Error | CI | Statistic | p |
| (Intercept) | 3061.41 | 40.04 | 2982.92 – 3139.91 | 76.46 | <0.001 |
|
father’s education attainment |
24.17 | 3.05 | 18.19 – 30.16 | 7.92 | <0.001 |
| Observations | 4348 | ||||
| R2 / R2 adjusted | 0.014 / 0.014 | ||||
## Tabla ANOVA del modelo Esta tabla muestra los errores cuadrádicos y la
## prueba de hipótesis de la regresión (si el modelo lineal es válodo o no lo
## es)
anovamod4 <- anova(mod4)
anovamod4
# Ecuación del modelo
library(equatiomatic)
extract_eq(mod4)
\[ \operatorname{bweight} = \alpha + \beta_{1}(\operatorname{fedu}) + \epsilon \]
# show the theoretical model
extract_eq(mod4, wrap = TRUE, use_coefs = TRUE)
\[ \begin{aligned} \operatorname{\widehat{bweight}} &= 3061.41 + 24.17(\operatorname{fedu}) \end{aligned} \]
# grafica del modelo
ggplot(mod4, aes(x = fedu, y = bweight)) + geom_point() + geom_smooth(method = lm,
se = TRUE, level = 0.95)
* La tabla ANOVA muestra que la sunción de modelo lineal es significativa (valor-p<0.001), por lo que puede usarse la regresión lineal en este caso.
La pendiente es de 24.17 y es significativa (valor-p<0.001). A partir de 3061.41 gr (Intercepto, valor-p<0.001), por cada año que se incremente la escolaridad del padre, aumenta en 24.17 gramos el peso del bebé al nacer.
Ecuación: Peso_estimado_bebe_gramos = 30.61 + 24.17 * educación_padre_años
El coeficiente de determinación R2 = 0.011, indica que el 1.4% de la variabilidad del peso al nacer del bebé, es explicada por escolardidad del padre; el resto 98.6% es explicado por otras variables no incluidas en este modelo. La regresión lineal simple con sólo estas dos variables no es muy buen modelo para predecir el peso.
La gráfica muestra la pobre relación lineal entre las variables educación del padre y Peso al nacer. La nube de puntos de las observaciones está muy disperda respecto a la línea de regresión estimada con mayor dispersión en los valores extremos en años de educación.
library(sjPlot) #Para la presentación de la tabla con los coeficientes
## Modelo 5. Peso al nacer vs número de visitas prenatales Esta tabla muestra
## los coeficientes estimados y las pruebas de hipótesis individuales (para el
## interpto y para la pendiente)
mod5 <- lm(bweight ~ nprenatal, data = mydata)
sjPlot::tab_model(mod5, show.se = TRUE, show.stat = TRUE)
|
infant birth weight (grams) |
|||||
|---|---|---|---|---|---|
| Predictors | Estimates | std. Error | CI | Statistic | p |
| (Intercept) | 2946.11 | 27.76 | 2891.68 – 3000.55 | 106.11 | <0.001 |
|
number of prenatal care visits |
39.03 | 2.43 | 34.27 – 43.78 | 16.07 | <0.001 |
| Observations | 4348 | ||||
| R2 / R2 adjusted | 0.056 / 0.056 | ||||
## Tabla ANOVA del modelo Esta tabla muestra los errores cuadrádicos y la
## prueba de hipótesis de la regresión (si el modelo lineal es válodo o no lo
## es)
anovamod5 <- anova(mod5)
anovamod5
# Ecuación del modelo
library(equatiomatic)
extract_eq(mod5)
\[ \operatorname{bweight} = \alpha + \beta_{1}(\operatorname{nprenatal}) + \epsilon \]
# show the theoretical model
extract_eq(mod5, wrap = TRUE, use_coefs = TRUE)
\[ \begin{aligned} \operatorname{\widehat{bweight}} &= 2946.11 + 39.03(\operatorname{nprenatal}) \end{aligned} \]
# grafica del modelo
ggplot(mod5, aes(x = nprenatal, y = bweight)) + geom_point() + geom_smooth(method = lm,
se = TRUE, level = 0.95)
* La tabla ANOVA muestra que la sunción de modelo lineal es significativa (valor-p<0.001), por lo que puede usarse la regresión lineal en este caso.
La pendiente es de 39.03 y es significativa (valor-p<0.001). A partir de 2946.11 gr (Intercepto, valor-p<0.001), por cada visita prenatal, aumenta en 39.03 gramos el peso del bebé al nacer.
Ecuación: Peso_estimado_bebe_gramos = 2946.11 + 39.03 * Número de controles prenatales
El coeficiente de determinación R2 = 0.056, indica que el 5.6% de la variabilidad del peso al nacer del bebé, es explicada por el número de controles prenatales realizados; el resto 94.4% es explicado por otras variables no incluidas en este modelo. La regresión lineal simple con sólo estas dos variables no es muy buen modelo para predecir el peso.
La gráfica muestra una baja relación lineal entre las variables el número de controles prenatales y el Peso al nacer. La nube de puntos de las observaciones está muy disperda respecto a la línea de regresión estimada.
library(sjPlot) #Para la presentación de la tabla con los coeficientes
## Modelo 6. Peso al nacer vs estado civil Esta tabla muestra los coeficientes
## estimados y las pruebas de hipótesis individuales (para el interpto y para
## la pendiente)
mod6 <- lm(bweight ~ mmarried, data = mydata)
sjPlot::tab_model(mod6, show.se = TRUE, show.stat = TRUE)
|
infant birth weight (grams) |
|||||
|---|---|---|---|---|---|
| Predictors | Estimates | std. Error | CI | Statistic | p |
| (Intercept) | 3199.80 | 16.87 | 3166.73 – 3232.88 | 189.67 | <0.001 |
| mmarried [Si] | 232.09 | 19.66 | 193.55 – 270.64 | 11.81 | <0.001 |
| Observations | 4348 | ||||
| R2 / R2 adjusted | 0.031 / 0.031 | ||||
## Tabla ANOVA del modelo Esta tabla muestra los errores cuadrádicos y la
## prueba de hipótesis de la regresión (si el modelo lineal es válodo o no lo
## es)
anovamod6 <- anova(mod6)
anovamod6
# Ecuación del modelo
library(equatiomatic)
extract_eq(mod6)
\[ \operatorname{bweight} = \alpha + \beta_{1}(\operatorname{mmarried}_{\operatorname{Si}}) + \epsilon \]
# show the theoretical model
extract_eq(mod6, wrap = TRUE, use_coefs = TRUE)
\[ \begin{aligned} \operatorname{\widehat{bweight}} &= 3199.8 + 232.09(\operatorname{mmarried}_{\operatorname{Si}}) \end{aligned} \]
# grafica del modelo
ggplot(mod6, aes(x = mmarried, y = bweight)) + geom_point() + geom_smooth(method = lm,
se = TRUE, level = 0.95)
La tabla ANOVA muestra que la sunción de modelo lineal es significativa (valor-p<0.001), por lo que puede usarse la regresión lineal en este caso.
La pendiente es de 232.09 y es significativa (valor-p<0.001). A partir de 3199.80 gr (Intercepto, valor-p<0.001), si los padres estan casados, se presenta un aumento de peso de 232.09 gramos el peso del bebé al nacer.
Ecuación: Peso_estimado_bebe_gramos si los padres estan casados = 3199.80 + 232.09 * (1) = 3431.09 gr Peso_estimado_bebe_gramos si los padres no estan casados = 3199.80 + 232.09 * (0) = 3199.80 gr
El coeficiente de determinación R2 = 0.031, indica que el 3.1% de la variabilidad del peso al nacer del bebé, es explicada si la madre esta casada; el 96.9% restante es explicado por otras variables no incluidas en este modelo. La regresión lineal simple con sólo estas dos variables no es muy buen modelo para predecir el peso.
library(sjPlot) #Para la presentación de la tabla con los coeficientes
## Modelo 7. Peso al nacer vs consumo de alcohol Esta tabla muestra los
## coeficientes estimados y las pruebas de hipótesis individuales (para el
## interpto y para la pendiente)
mod7 <- lm(bweight ~ alcohol, data = mydata)
sjPlot::tab_model(mod7, show.se = TRUE, show.stat = TRUE)
|
infant birth weight (grams) |
|||||
|---|---|---|---|---|---|
| Predictors | Estimates | std. Error | CI | Statistic | p |
| (Intercept) | 3375.04 | 8.92 | 3357.54 – 3392.53 | 378.23 | <0.001 |
| alcohol [Si] | -146.57 | 52.01 | -248.53 – -44.61 | -2.82 | 0.005 |
| Observations | 4348 | ||||
| R2 / R2 adjusted | 0.002 / 0.002 | ||||
## Tabla ANOVA del modelo Esta tabla muestra los errores cuadrádicos y la
## prueba de hipótesis de la regresión (si el modelo lineal es válodo o no lo
## es)
anovamod7 <- anova(mod7)
anovamod7
# Ecuación del modelo
library(equatiomatic)
extract_eq(mod7)
\[ \operatorname{bweight} = \alpha + \beta_{1}(\operatorname{alcohol}_{\operatorname{Si}}) + \epsilon \]
# show the theoretical model
extract_eq(mod7, wrap = TRUE, use_coefs = TRUE)
\[ \begin{aligned} \operatorname{\widehat{bweight}} &= 3375.04 - 146.57(\operatorname{alcohol}_{\operatorname{Si}}) \end{aligned} \]
# grafica del modelo
ggplot(mod7, aes(x = alcohol, y = bweight)) + geom_point() + geom_smooth(method = lm,
se = TRUE, level = 0.95)
La tabla ANOVA muestra que la sunción de modelo lineal es significativa (valor-p<0.001), por lo que puede usarse la regresión lineal en este caso.
La pendiente es de -146.57 y es significativa (valor-p<0.001). A partir de 3375.04 gr (Intercepto, valor-p<0.001), si la madre consume alcohol durante el embarazo disminuye el peso al nacer en 156.57gr.
Ecuación: Peso_estimado_bebe_gramos si la madre consume alcohol = 3375.04 - 146.57 * (1) = 3228.47 Peso_estimado_bebe_gramos si la madre no consume alcohol = 3375.04 - 146.57 * (0) = 3375.04
El coeficiente de determinación R2 = 0.002, indica que el 0.2% de la variabilidad del peso al nacer del bebé, es explicada por el consumo de alcohol de la madre durante el embarazo; el 99.8% restante es explicado por otras variables no incluidas en este modelo. La regresión lineal simple con sólo estas dos variables no es buen modelo para predecir el peso.
library(sjPlot) #Para la presentación de la tabla con los coeficientes
## Modelo 8. Peso al nacer vs tabaquismo Esta tabla muestra los coeficientes
## estimados y las pruebas de hipótesis individuales (para el interpto y para
## la pendiente)
mod8 <- lm(bweight ~ mbsmoke, data = mydata)
sjPlot::tab_model(mod8, show.se = TRUE, show.stat = TRUE)
|
infant birth weight (grams) |
|||||
|---|---|---|---|---|---|
| Predictors | Estimates | std. Error | CI | Statistic | p |
| (Intercept) | 3418.27 | 9.52 | 3399.60 – 3436.94 | 358.93 | <0.001 |
| mbsmoke [Si] | -273.83 | 22.85 | -318.63 – -229.02 | -11.98 | <0.001 |
| Observations | 4348 | ||||
| R2 / R2 adjusted | 0.032 / 0.032 | ||||
## Tabla ANOVA del modelo Esta tabla muestra los errores cuadrádicos y la
## prueba de hipótesis de la regresión (si el modelo lineal es válodo o no lo
## es)
anovamod8 <- anova(mod8)
anovamod8
# Ecuación del modelo
library(equatiomatic)
extract_eq(mod8)
\[ \operatorname{bweight} = \alpha + \beta_{1}(\operatorname{mbsmoke}_{\operatorname{Si}}) + \epsilon \]
# show the theoretical model
extract_eq(mod8, wrap = TRUE, use_coefs = TRUE)
\[ \begin{aligned} \operatorname{\widehat{bweight}} &= 3418.27 - 273.83(\operatorname{mbsmoke}_{\operatorname{Si}}) \end{aligned} \]
# grafica del modelo
ggplot(mod8, aes(x = mbsmoke, y = bweight)) + geom_point() + geom_smooth(method = lm,
se = TRUE, level = 0.95)
La tabla ANOVA muestra que la sunción de modelo lineal es significativa (valor-p<0.001), por lo que puede usarse la regresión lineal en este caso.
La pendiente es de -273.83 y es significativa (valor-p<0.001). A partir de 3418.27 gr (Intercepto, valor-p<0.001), si la madre fuma durante el embarazo, se presenta una disminución de peso de 273.83 gramos el peso del bebé al nacer.
Ecuación: Peso_estimado_bebe_gramos si los padres estan casados = 3418.27 - 273.83 * (1) = 3144.44 gr Peso_estimado_bebe_gramos si los padres no estan casados = 3418.27 - 273.83 * (0) = 3418.27 gr
El coeficiente de determinación R2 = 0.032, indica que el 3.2% de la variabilidad del peso al nacer del bebé, es explicada si la madre esta casada; el 96.8% restante es explicado por otras variables no incluidas en este modelo. La regresión lineal simple con sólo estas dos variables no es muy buen modelo para predecir el peso.