Modelo de Regresión Lineal Simple y Múltiple

César Córdova Cáceres

12/4/2021

Vamos a calcular 02 modelos de regresión lineal: uno simple y el otro múltiple. Para ello utilizaremos datos compilados por el proyecto Gapminder (https://www.gapminder.org/). La data final, luego de adecuación, se puede descargar en el siguiente enlace:

https://www.dropbox.com/sh/fbeyyikum4i0m8p/AADDk_VHnqsdcRoGE7Q509zUa?dl=0

Antes de empezar debemos cargar un par de paquetes de R con la función “library” y luego cargamos la data (“load”) para explorarla (“names”, “head”).

Carga de paquetes


library(ggplot2)
library(stargazer)
library(lm.beta)

Carga de datos


load("dataWorld_q.rda")

Exploración de “dataWorld”


names(dataWorld_q)
##  [1] "country"    "quinq"      "tfr"        "yearSchF"   "contracep" 
##  [6] "age1mar"    "sanitat"    "water"      "birthSkill" "childMort" 
## [11] "deathRate"  "extPov"     "famWorkFem" "femWork"    "incomePp"  
## [16] "income10p"  "gini"       "lifExpFem"  "lifExpTot"  "maleWork"  
## [21] "materMort"  "vaccMeas"   "schGenEq"   "doctor"     "teenFert"

head(dataWorld_q)
##               country     quinq   tfr yearSchF contracep age1mar sanitat water
## 1         Afghanistan 1950-1954 7.550      NaN       NaN     NaN     NaN   NaN
## 2             Albania 1950-1954 6.122      NaN       NaN     NaN     NaN   NaN
## 3             Algeria 1950-1954 7.448      NaN       NaN    19.6     NaN   NaN
## 4              Angola 1950-1954 7.152      NaN       NaN     NaN     NaN   NaN
## 5 Antigua and Barbuda 1950-1954 4.492      NaN       NaN     NaN     NaN   NaN
## 6           Argentina 1950-1954 3.156      NaN       NaN     NaN     NaN   NaN
##   birthSkill childMort deathRate extPov famWorkFem femWork incomePp income10p
## 1        NaN    413.40    37.140    NaN        NaN     NaN     1084       NaN
## 2        NaN    258.80    16.280    NaN        NaN     NaN     2034       NaN
## 3        NaN    257.60    23.200    NaN        NaN     NaN     4104       NaN
## 4        NaN    325.80    35.040    NaN        NaN     NaN     3298       NaN
## 5        NaN    135.80    10.760    NaN        NaN     NaN     3648       NaN
## 6        NaN     88.26     9.146    NaN        NaN     NaN     8152       NaN
##   gini lifExpFem lifExpTot maleWork materMort vaccMeas schGenEq doctor teenFert
## 1  NaN     29.22     33.10      NaN       NaN      NaN      NaN    NaN      NaN
## 2  NaN     55.88     55.34      NaN       NaN      NaN      NaN    NaN      NaN
## 3  NaN     43.36     47.66      NaN       NaN      NaN      NaN    NaN      NaN
## 4  NaN     32.72     37.56      NaN       NaN      NaN      NaN    NaN      NaN
## 5  NaN     60.56     59.04      NaN       NaN      NaN      NaN    NaN      NaN
## 6  NaN     64.92     61.50      NaN       NaN      NaN      NaN    NaN     62.4

Adecuación de data

Para este ejercicio vamos a trabajar con la data que corresponde al quinquenio 2015-2019.


data1519 <- dataWorld_q[dataWorld_q$quinq=="2015-2019",]

Ejercicio 1

Modelo de regresión lineal simple

Primero, vamos a calcular 01 modelo de regresión lineal simple para la esperanza de vida de las mujeres según la tasa de fertilidad. Considere las siguientes variables:

Variable dependiente: Expectativa de vida (“lifExpFem”)

Variable independiente: Tasa de fecundidad (“tfr”)

Exploración gráfica


#Gráfico 1

ggplot(data1519, aes(x=tfr, y=lifExpFem)) +
    geom_point() + 
    geom_smooth(method="lm", se = F) + 
    xlab("Número de hijos por mujer") +
    ylab("Esperanza de vida en años") +
    ggtitle("Mundo 2015-2019: Esperanza de vida al nacer de las mujeres según \ntasa global de fecundidad") +
  theme_classic()

Estimación de parámetros y bondad de ajuste


reg_evida1 <- lm(lifExpFem ~ tfr, data = data1519)

summary(reg_evida1)
## 
## Call:
## lm(formula = lifExpFem ~ tfr, data = data1519)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -16.1850  -2.2070   0.2299   2.8533  10.9325 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  88.6175     0.7295  121.47   <2e-16 ***
## tfr          -5.1858     0.2364  -21.93   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.251 on 182 degrees of freedom
##   (10 observations deleted due to missingness)
## Multiple R-squared:  0.7255, Adjusted R-squared:  0.724 
## F-statistic:   481 on 1 and 182 DF,  p-value: < 2.2e-16

H0: B1 = 0; H1: B1 < 0

Modelo de regresión lineal múltiple

Ahora, vamos calcular 01 modelo de regresión lineal múltiple para la esperanza de vida de las mujeres según la tasa de fertilidad y el porcentaje de contracepción. Considere las siguientes variables:

Variable dependiente: Expectativa de vida (“lifExpFem”)

Variable independiente: Tasa de fecundidad (“tfr”)

Variable independiente: Porcentaje de contracepción (“contracep”)

Exploración gráfica


#Gráfico 2

ggplot(data1519, aes(x=contracep, y=lifExpFem)) +
    geom_point() + 
    geom_smooth(method="lm", se = F) + 
    xlab("Número de hijos por mujer") +
    ylab("Esperanza de vida en años") +
    ggtitle("Mundo 2015-2019: Esperanza de vida al nacer de las mujeres según \nContracepción") + 
  theme_classic()

Estimación de parámetros y bondad de ajuste


reg_evida2 <- lm(lifExpFem ~ tfr + contracep, data = data1519)

summary(reg_evida2)
## 
## Call:
## lm(formula = lifExpFem ~ tfr + contracep, data = data1519)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.5628 -1.8275 -0.1801  2.5416  9.4862 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 79.45111    4.34713  18.277  < 2e-16 ***
## tfr         -3.71723    0.67542  -5.504 1.35e-06 ***
## contracep    0.08792    0.04642   1.894   0.0641 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.306 on 49 degrees of freedom
##   (142 observations deleted due to missingness)
## Multiple R-squared:  0.7584, Adjusted R-squared:  0.7485 
## F-statistic: 76.89 on 2 and 49 DF,  p-value: 7.721e-16

H0: B1 = 0; H1: B1 < 0

H0: B2 = 0; H1: B2 > 0


library(stargazer)

stargazer(reg_evida1 , reg_evida2  , type = "text",
        omit.stat=c("ser", "f"), 
        dep.var.labels = "Expectativa de vida femenina",
        dep.var.caption = "Variable dependiente:",
        star.cutoffs = c(0.05, 0.01, 0.001))
## 
## ===========================================
##                  Variable dependiente:     
##              ------------------------------
##               Expectativa de vida femenina 
##                    (1)             (2)     
## -------------------------------------------
## tfr             -5.186***       -3.717***  
##                  (0.236)         (0.675)   
##                                            
## contracep                         0.088    
##                                  (0.046)   
##                                            
## Constant        88.617***       79.451***  
##                  (0.730)         (4.347)   
##                                            
## -------------------------------------------
## Observations       184             52      
## R2                0.725           0.758    
## Adjusted R2       0.724           0.748    
## ===========================================
## Note:         *p<0.05; **p<0.01; ***p<0.001

Comparación de modelos de regresión simple y múltiple


Estimación puntual

Durante el quinquenio 2015-2019:


new.data <- data.frame(tfr = 4 , contracep = 70)
predict(reg_evida2 , new.data, type = "response")
##        1 
## 70.73641


new.data <- data.frame(tfr = 5, contracep = 70)
predict(reg_evida2 , new.data, type = "response")
##        1 
## 67.01918

Ejercicio 2

  1. Calcule un modelo 3 de regresión lineal simple que considere las siguientes variables:

    • Dependiente: Tasa de fertilidad(“tfr”)

    • Independiente: Participación femenina en la fuerza laboral(“femWork”)

  1. ¿El ajuste del modelo es adecuado (Prueba F)?

  2. Ahora, incluya en el modelo anterior el porcentaje de personas que viven con menos de US$ 1.90 al día (“extPov”)

    • Calcule el modelo 4 de regresión múltiple

    • ¿El ajuste del modelo 4 es adecuado?

    • ¿Cuánta varianza de la variable dependiente explica el modelo 2?

    • ¿Las variables independientes presentan un “efecto” real sobre la variable dependiente?


Ejercicio 3

  1. Calcule un modelo 5 de regresión lineal simple que considere las siguientes variables:

    • Dependiente: Tasa de fertilidad (“tfr”)

    • Independiente 1: % Mujeres que utilizan anticonceptivos(“contracep”)

    • Independiente 2: cobertura de servicios básicos(%)(“sanitat”)

  2. ¿Cuál de los predictores es el más importante en el modelo 5?

  3. Finalmente, incluya una variable más que, según su criterio, tenga un “efecto” real en la tasa de fertilidad:

    • Calcule un modelo 6

    • Compare el desempéño de ambos modelos