Diagnostico de residuos y supuestos del modelo de regresion lineal

Cesar Cordova

20/4/2021

Ejercicios

Vamos a calcular 01 modelo de regresión lineal y luego realizar un diagnóstico de sus residuos. 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 o en el classroom de la práctica:

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)
library(ggfortify)

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 2000-2004.


data0004 <- dataWorld_q[dataWorld_q$quinq=="2000-2004",]

Ejercicio 1

En esta ocasión, vamos a realizar un diagnóstico del comportamiento de los residuos de un modelo de regresión lineal simple. Considere las siguientes variables:

- Dependiente: Expectativa de vida femenina ("lifExpFem")

- Independiente 1: Médicos por 1000 habitantes ("doctor")

Primer paso: cálculo del modelo


modelo1 <- lm(lifExpFem ~ doctor, data = data0004)

summary(modelo1)
## 
## Call:
## lm(formula = lifExpFem ~ doctor, data = data0004)
## 
## 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

Segundo paso: Diagnóstico de residuos: exploración gráfica


autoplot(modelo1)


Tercer paso: Evaluación de supuestos


Cuarto: paso: Propuesta de solución

Como propuesta de solución, vamos a tratar de especificar mejor el modelo 1. Para ello, incgresamos una segunda variable independiente: Cobertura de servicios básicos(%)(“sanitat”).


modelo2 <- lm(lifExpFem ~ doctor + sanitat, data = data0004)

stargazer(modelo1 , modelo2  , 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)     
## -------------------------------------------
## doctor           5.304***        1.197**   
##                  (0.431)         (0.411)   
##                                            
## sanitat                         0.253***   
##                                  (0.018)   
##                                            
## Constant        61.673***       50.403***  
##                  (0.857)         (0.968)   
##                                            
## -------------------------------------------
## Observations       172             168     
## R2                0.471           0.765    
## Adjusted R2       0.468           0.762    
## ===========================================
## Note:         *p<0.05; **p<0.01; ***p<0.001

autoplot(modelo2)


Repaso

knitr::include_app("https://cesarcordova.shinyapps.io/residuos/", height = "1250px")

Ejercicio 2

En este segundo ejercicio, Ud. debe calcular, por su cuenta, un “modelo3” de regresión lineal múltiple con las variables que se describen a continuación. Seguidamente, realice un diagnóstico ára los residuos del modelo:

Considere las siguientes variables:

- Dependiente: Tasa de fecundidad ("tfr")

- Independiente 1: Uso de anticonceptivos ("contracep")

- Independiente 2: Promedio de años de educación ("yearSchF")

Desarrolle los siguientes puntos

Ejercicio 3

En este último ejercicio, Ud. debe incomporar una variable adicional al “modelo4” que pueda resolver los problemas de falta de linealidad, homocedasticidad, normalidad y efecto palanca que se observan en el gráfico de diagnóstico de residuos.

Seguidamente, realice un diagnóstico para evaluar el comportamiento de los residuos de su modelo (“modelo5”):

modelo4 <- lm(tfr~incomePp , dataWorld_q) 

summary(modelo4)
## 
## Call:
## lm(formula = tfr ~ incomePp, data = dataWorld_q)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4369 -1.6677 -0.1994  1.6067 10.0085 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  4.865e+00  4.454e-02  109.22   <2e-16 ***
## incomePp    -5.139e-05  2.273e-06  -22.61   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.866 on 2574 degrees of freedom
##   (140 observations deleted due to missingness)
## Multiple R-squared:  0.1657, Adjusted R-squared:  0.1654 
## F-statistic: 511.3 on 1 and 2574 DF,  p-value: < 2.2e-16
autoplot(modelo4)