Se cargó la base de datos en un documento CSV.

supuestos <- read.csv("supuestos.csv", header = T)

Modelo de regresión lineal simple

modelo_rls <- lm(lifExpFem ~ doctor, data = supuestos)
summary(modelo_rls)
## 
## Call:
## lm(formula = lifExpFem ~ doctor, data = supuestos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -20.053  -5.513   1.614   6.222  14.067 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  61.6726     0.8568   71.98   <2e-16 ***
## doctor        5.3042     0.4314   12.29   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.771 on 170 degrees of freedom
##   (22 observations deleted due to missingness)
## Multiple R-squared:  0.4706, Adjusted R-squared:  0.4675 
## F-statistic: 151.1 on 1 and 170 DF,  p-value: < 2.2e-16

Teniendo en cuenta que la expectativa de vida femenina es la variable respuesta, y que los médicos por 1,000 habitantes es la variable explicativa, podemos comenzar concluyendo que el intercepto de 71.98 es la expectativa promedio de vida de una mujer cuando no hay doctores disponibles. El coeficiente de la variable “doctor” nos deja saber que por cada doctor adicional que tengan disponible, la expectativa de vida aumenta alrededor de 5 años. Este modelo explica el 47% de la variación, ya que el “multiple R-squared” es de 0.4706. Las predicciones del modelo tiene una desviacion de 7.77 (años), dejándonos llevar por el “residual standard error”. Por último, podemos concluir, mirando el p-value, que la variable “doctor” está fuertemente o significativamente asociada con la expectativa de vida de las mujeres ya que es menor que alpha, la cual tiene un valor de 0.05.

Supuesto 1: Normalidad

library(ggplot2)
library(broom)

spt  <- data.frame(
 yhat = fitted.values(modelo_rls),
 res  = rstandard(modelo_rls))

ggplot(spt, aes(sample = res)) +
  stat_qq(color = "blue") +
  stat_qq_line(linewidth = 1) +  
  labs(x = "Cuantiles teoricos", y = "Cuantiles muestrales") +
  theme_minimal(base_size = 14)

Prueba Shapiro-Wilk:

shapiro.test(spt$res)
## 
##  Shapiro-Wilk normality test
## 
## data:  spt$res
## W = 0.9619, p-value = 0.000122

Media:

mean(spt$res)
## [1] -0.001717297

Análisis de la gráfica y el “Shapiro-Wilk test”:

Si tenemos en consideración que la H0 = los datos son normales y que la Ha = los datos no son normales, nos dejamos llevar por los resultados para saber si descartamos la H0; en este caso buscamos que el “p-value” sea mayor a 0.05, sin embargo tenemos un p-value de 0.000122. Por lo tanto, si nos basamos en el “Shapiro-Wilk test”, rechazamos la hipótesis nula y concluimos que los datos no son normales. Adicional a esto, en el gráfico podemos observar que los puntos están alineados y se van creando curvas en direciones opuestas creando una S. La gráfica cumpliría con el supuesto si los puntos siguieran la línea y no formaran la S. En conclusión, no cumple con el supuesto de normalidad de acuerdo a la gráfica y el “Shapiro-Wilk test”.

Supuesto 2: Varianza Constante

ggplot(spt, aes(x = yhat, y = res)) +
  geom_point(alpha = 0.6, color = "blue") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
  labs(x = "Valores ajustados", y = "Residuales estandarizados") +
  theme_minimal(base_size = 14)

Prueba Breusch-Pagan:

library(lmtest)
bptest(modelo_rls)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_rls
## BP = 6.7478, df = 1, p-value = 0.009386

Análisis de la gráfica y el “Breusch-Pagan test”:

Para medir la varianza constante buscamos que los puntos estén dispersados alrededor del 0 sin un patrón; esto significaría que la variabilidad de los errores es constante a lo largo de todos los niveles de los valores ajustados. En esta gráfica, no se puede observar la dispersión sin ningún patrón; al contrario, se observa una dispersión parecida a una distribución normal. Si nos dejamos llevar por la gráfica, podemos decir que este supuesto no se cumple. Por el otro lado, tenemos el “Breusch-Pagan test” para validar lo que muestra la gráfica. Nos fijamos en el p-value y buscamos que no sea pequeño, para cumplir con el supuesto. En este caso, el p-value es 0.009386, menor a 0.05, por lo que rechazamos la hipótesis nula y concluimos que la varianza no es constante y el modelo no cumple con el supuesto. Siendo la H0 = la varianza es constante y H1 = la varianza no es constante.

Supuesto 3: Independencia

library(tidyverse)
library(ggplot2)

spt1 <- data.frame(
  res   =  rstandard(modelo_rls)) %>%
  mutate(orden = 1:length(res))   
  

ggplot(spt1, aes(x = orden, y = res)) +
  geom_point(alpha = 0.6, color = "blue") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
  labs(x = "Orden/tiempo", y = "Residuales estandarizados") +
  theme_minimal(base_size = 14)

Prueba Durbin-Watson:

dwtest(modelo_rls)
## 
##  Durbin-Watson test
## 
## data:  modelo_rls
## DW = 1.9794, p-value = 0.4393
## alternative hypothesis: true autocorrelation is greater than 0

Análisis de la gráfica y el “Durbin-Watson test”:

El tercer supuesto, la independencia, nos deja saber si los errores están relacionados entre sí, un error de una observación no debe predecir el error de otra observación. A diferencia de las gráficas de los primeros dos supuestos, esta gráfica no muestra un patrón, los puntos están dispersos alrededor del cero. Si nos dejamos llevar por el gráfico, podemos decir que cumple con el supuesto. Si nos dejamos llevar por el “Durbin-Watson test”, tenemos como resultado un p-value mayor a 0.05, por lo que no debemos rechazar la hipótesis nula. Considerando que también tenemos que la H0 = no hay autocorrelación y H1 = hay autocorrelación, nos quedamos con la H0 de acuerdo al valor del p-value anteriormente mencionado.

Diagnóstico de los residuos: Este modelo viola los supuestos de normalidad y homocedasticidad. Aunque en el análisis podemos ver que el coeficiente es significativo, se debería mejorar la validez del modelo para que cumpla con los tres supuestos, ya que este no tiene datos normales y no hay varianza constante en los datos.

Modelo de regresión lineal múltiple

modelo_rlm <- lm(tfr ~ contracep + yearSchF, data = supuestos)
summary(modelo_rlm)
## 
## Call:
## lm(formula = tfr ~ contracep + yearSchF, data = supuestos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.88868 -0.52076  0.06251  0.50355  2.22631 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  6.950649   0.169315  41.051  < 2e-16 ***
## contracep   -0.042085   0.004648  -9.054 3.25e-15 ***
## yearSchF    -0.194993   0.030539  -6.385 3.44e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7979 on 119 degrees of freedom
##   (72 observations deleted due to missingness)
## Multiple R-squared:  0.8018, Adjusted R-squared:  0.7985 
## F-statistic: 240.7 on 2 and 119 DF,  p-value: < 2.2e-16

En este modelo se toman en cuenta las siguientes variables: tasa de fecundidad como variable dependiente, y el uso de anticonceptivos y promedio de años de educación femenina como variables independientes. Teniendo en cuenta que el intercepto es el valor promedio de la tasa de fecundidad cuando las otras variables independientes tienen un valor de 0, podemos inferir que si no existiera el uso de anticonceptivos y las mujeres no tuvieran escolaridad, tendrían 6.95 hijos por mujer en promedio. En este caso, podemos decir que serían 7 hijos por mujer como una mejor aproximación. Ambas variables independientes son altamente significativas, ya que tienen un “p-value” bastante pequeño. Por cada porciento de aumento en el uso de anticonceptivos, la tasa de fecundidad disminuye 0.042 hijos por mujer, manteniento la variable de educación femenina constante. En cuanto a la variable de años promedio de educación femenina, por cada año adicional de escolaridad que una mujer reciba, la tasa de fecundidad disminuye alrededor de 0.195 hijos por mujer, manteniendo constante la variable de anticonceptivos. El “residual standard error”, que es 0.7979, nos deja saber el promedio de cuánto se desvían los valores en comparación con la predicción. Por último, el valor al que debemos también prestarle atención es el R ajustado, que nos indica la variación total en la tasa de fecundidad entre los paises. Este modelo explica un 80% de las diferencias en la tasa de fecundidad entre países.

Supuesto 1: Normalidad

library(ggplot2)
library(broom)

spt2  <- data.frame(
 yhat = fitted.values(modelo_rlm),
 res  = rstandard(modelo_rlm))

ggplot(spt2, aes(sample = res)) +
  stat_qq(color = "red") +
  stat_qq_line(linewidth = 1) +  
  labs(x = "Cuantiles teoricos", y = "Cuantiles muestrales") +
  theme_minimal(base_size = 14)

Prueba Shapiro-Wilk:

shapiro.test(spt2$res)
## 
##  Shapiro-Wilk normality test
## 
## data:  spt2$res
## W = 0.99231, p-value = 0.7397

Media:

mean(spt2$res)
## [1] -0.0007677076

Análisis de la gráfica y el “Shapiro-Wilk test”:

Cuando observamos la gráfica, podemos apreciar que los puntos mayormente siguen la línea y no forman ningún patrón en su mayoría o una S. Ya que el supuesto de normalidad se cumple cuando los puntos siguen la línea, podemos decir que este modelo cumple con el supuesto de normalidad; en otras palabras, en este modelo los errores siguen una distribución normal. Igualmente, si nos dejamos llevar por el “Shapiro-Wilk test”, teniendo en cuenta que la H0 = los datos son normales y Ha = los datos no son normales, podemos decir que cumple con el supuesto de normalidad. Para rechazar la H0, el “p-value” debe ser menos de 0.05, y en este caso tenemos uno de 0.7397. No rechazamos H0 y concluimos que los datos son normales.

Supuesto 2: Varianza Constante

ggplot(spt2, aes(x = yhat, y = res)) +
  geom_point(alpha = 0.6, color = "red") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
  labs(x = "Valores ajustados", y = "Residuales estandarizados") +
  theme_minimal(base_size = 14)

Prueba Breusch-Pagan:

library(lmtest)
bptest(modelo_rlm)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_rlm
## BP = 4.5645, df = 2, p-value = 0.1021

Análisis de la gráfica y el “Breusch-Pagan test”:

Cuando vamos a evaluar con una gráfica el supuesto de la varianza constante, buscamos que los puntos no muestren ningún patrón o tendencia; en esta gráfica los puntos están dispersos y no se puede apreciar ningún patrón. Podemos concluir que este modelo cumple con el segundo supuesto y la varianza es constante. Por otro lado, nos podemos dejar llevar por el “Breusch-Pagan test”, al igual que en el primer modelo, H0 = la varianza es constante y Ha = la varianza no es constante. Rechazamos la H0 cuando el “p-value” sea menor a 0.05, y en este caso es mayor. Nos quedamos con la H0 y podemos decir que según el “Breusch-Pagan test”, el modelo cumple con este segundo supuesto.

Supuesto 3: Independencia

library(tidyverse)
library(ggplot2)

spt3 <- data.frame(
  res   =  rstandard(modelo_rlm)) %>%
  mutate(orden = 1:length(res))   
  

ggplot(spt3, aes(x = orden, y = res)) +
  geom_point(alpha = 0.6, color = "red") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
  labs(x = "Orden/tiempo", y = "Residuales estandarizados") +
  theme_minimal(base_size = 14)

Prueba Durbin-Watson:
dwtest(modelo_rlm)
## 
##  Durbin-Watson test
## 
## data:  modelo_rlm
## DW = 1.9599, p-value = 0.4015
## alternative hypothesis: true autocorrelation is greater than 0

Análisis de la gráfica y el “Durbin Watson-test”:

Al igual que para el segundo supuesto, cuando evaluamos con la gráfica si el modelo cumple con el supuesto de la independencia, se busca que los puntos no formen un patrón o muestren una tendencia. En este caso, también tenemos una gráfica que no muestra un patrón o tendencia. Por lo tanto, podemos decir que el modelo cumple con el tercer supuesto y no hay autocorrelación. Igualmente podemos reafirmar con el “Durbin-Watson test” y dejarnos llevar por el “p-value”. Teniendo que la H0 = no hay autocorrelación y la Ha = hay autocorrelación, necesitamos un “p-value” mayor a 0.05 para quedarnos con la H0. En este caso, tenemos un “p-value” de 0.4015. Podemos decir que no rechazamos la hipótesis nula y el modelo cumple con el tercer supuesto de independencia, ya que el error asociado a una observación no predice el error asociado a otra observación.

Diagnóstico de los residuos: El modelo cumple con los tres supuestos básicos de la regresión lineal. En otras palabras, los resultados pueden interpretarse con confianza dado a que el modelo tiene: datos normales, la varianza es constante, y no hay autocorrelación.