library(readr)
supuestos <- read_csv("supuestos.csv")
## Rows: 194 Columns: 23
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (1): country
## dbl (22): tfr, yearSchF, contracep, sanitat, water, birthSkill, childMort, d...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(supuestos)

1. Modelo de regresión lineal simple:

Variable dependiente: expectativa de vida femenina (lifExpFem)

Variable independiente: médicos por 1000 habitantes (doctor)

lm <- lm(lifExpFem ~ doctor, data = supuestos)
summary(lm)
## 
## 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

De primera instancia podemos observar que el modelo ajustado presenta que la disponibilidad de médicos por cada 1,000 habitantes tiene un impacto positivo y significativo sobre la expectativa de vida femenina con un cambio en promedio de 5.3042 y un valor de p de <2e-16. El R^2 de 0.4675 explica aproximadamente el 46.75% de la variabilidad de las variables. Otra observación significativa son la distribución de los residuales, cuales la mayoría esta dispersa más para un lado que de forma uniforme.

Normalidad

library(ggplot2)
library(broom)


df2  <- data.frame(
 yhat = fitted.values(lm),
 res  = rstandard(lm))

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

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

De acuerdo con la prueba de Shapiro, se puede concluir que los residuales de error no tienen normalidad ya que el valor de p es menor que 0.05.

Varianza constante (homocedasticidad)

ggplot(df2, 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)

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

De acuerdo con la prueba de Breusch-Pagan, podemos ver que el valor de p es mucho menor que el 0.05, indicando que no tiene varianza constante.

Independencia (autocorrelación)

library(ggplot2)
library(dplyr)

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

ggplot(df3, 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)

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

El valor de p en la prueba de Durbin-Watson indica que hay independencia entre los errores.

A pesar de que el modelo ajustado presenta un impacto positivo, al haber falta de normalidad y heterocedasticidad, los MCO se ven afectados, y los intervalos de confianza podrían no ser tan confiables ni enteramente correctos. Indicando que se tendrá que hacer correcciones y revisar variables e incluso considerar otros métodos.

2. Modelo de regresión lineal múltiple:

Variable dependiente: tasa de fecundidad (tfr)

Variables independientes: uso de anticonceptivos (contracep) y promedio de años de educación femenina (yearSchF)

lm2 <- lm(tfr ~ contracep + yearSchF, data = supuestos)
summary(lm2)
## 
## 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

Podemos observar en este modelo de regresión lineal múltiple el impacto negativo que tienen el uso de anticonceptivos y los años de educación femenina tiene en la tasa de fecundidad. El modelo presenta un 0.7985 o un 79.85% de variabilidad en la tasa de fecundidad. Además podemos observar los residuales están distribuidos de manera bastante uniformes.

Normalidad

library(ggplot2)
library(broom)


df4  <- data.frame(
 yhat = fitted.values(lm2),
 res  = rstandard(lm2))

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

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

De acuerdo a el valor de p con 0.7397, la prueba de Shapiro muestra una normalidad en los errores.

Varianza constante (homocedasticidad)

ggplot(df4, 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)

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

La prueba de Breusch-Pagan indica que hay varianza constante, con un valor de p de 0.1021.

Independencia (autocorrelación)

library(ggplot2)

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

ggplot(df5, 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)

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

La prueba de Durbin-Watson indica que los errores son independientes.

A diferencia de el modelo de regresión lineal simple, el modelo de regresión lineal multiple cumple con los tres supuestos: la normalidad, homocedasticidad e independencia. La confianza de este modelo es alta y eficaz. Indicando que los intervalos de confianza y las pruebas sean confiables.