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",]
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
Evalúe el ajuste/desempeño del modelo: F y R 2
Evalúe si la variable independiente tiene un “efecto” estadísticamente significativo sobre la variable dependiente. Considere el siguiente juego de hipótesis específicas:
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
Evalúe el ajuste/desempeño del modelo: R 2
Evalúe si la variable independiente tiene un “efecto” estadísticamente significativa sobre la variable dependiente. Considere:
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
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”)
¿El ajuste del modelo es adecuado (Prueba F)?
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?
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”)
¿Cuál de los predictores es el más importante en el modelo 5?
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