Introducción

Este ejercicio de práctica de Regresión Lineal forma parte de la materia Estadística 2 de la Maestría en Generación y Análisis de Información Estadística de UNTREF.

Primero cargamos los paquetes necesarios.

pacman::p_load(tidyverse, haven, janitor, tidyr,
               olsrr, corrplot, ggpubr, rstatix, 
               psych, RColorBrewer)

Ejercicio 1. Estadística descriptiva y correlación

Por medio de este ejercicio se propone evaluar la capacidad de análisis de asociación y de predicción entre variables cuantitativas. Para este fin se utilizará el conjunto de datos que se describe a continuación: Archivo CORDOBA.SAV

El archivo CORDOBA.SAV contiene información de algunas características de vivienda, hogar y población de departamentos de la provincia de Córdoba. Este archivo consta de las siguientes variables:

Nota: Las Necesidades Básicas Insatisfechas fueron definidas según la metodología utilizada en “La pobreza en la Argentina” (Serie Estudios INDEC. N° 1, Buenos Aires, 1984). Los hogares con Necesidades Básicas Insatisfechas (NBI) son los hogares que presentan al menos uno de los siguientes indicadores de privación:

  1. Hacinamiento: hogares que tuvieran más de tres personas por cuarto.

  2. Vivienda: hogares en una vivienda de tipo inconveniente (pieza de inquilinato, vivienda precaria u otro tipo, lo que excluye casa, departamento y rancho).

  3. Condiciones sanitarias: hogares que no tuvieran ningún tipo de retrete.

  4. Asistencia escolar: hogares que tuvieran algún niño en edad escolar (6 a 12 años) que no asistiera a la escuela.

  5. Capacidad de subsistencia: hogares que tuvieran cuatro o más personas por miembro ocupado y, además, cuyo jefe no haya completado tercer grado de escolaridad primaria.

Se requiere realizar los siguientes análisis estadísticos sobre este conjunto de variables:

cordoba <- read_sav("4_cordoba.sav")


head(cordoba)
## # A tibble: 6 × 9
##   depart              nbi1  nbi2 calmat1 calmat2 calmat3 calmat4 alfab   cob
##   <chr>              <dbl> <dbl>   <dbl>   <dbl>   <dbl>   <dbl> <dbl> <dbl>
## 1 Calamuchita         13.7  15.1    47.5    40.2    9.15    3.21  97.1  49.9
## 2 Capital              9.6  12.2    57.3    35.8    6       0.85  98.7  55.3
## 3 Colón               13.1  16.4    41.2    45.6   11.2     2.02  98.0  49.3
## 4 Cruz del Eje        24.6  29.2    32.8    45.4   10.6    11.1   94.8  37.2
## 5 General Roca        13.8  15.3    59.7    28.7    9.61    1.96  96.6  53.3
## 6 General San Martín   9.4  10      53.1    40.1    5.97    0.82  98.0  60.3

1. Realizar un análisis exploratorio de todas las variables de interés.

a.  Mediante los gráficos de Boxplot e Histograma, evaluar simetría,
    presencia de observaciones atípicas, dispersión de cada
    variable.
boxplot(cordoba[-1])

psych::multi.hist(cordoba[-1], bcol = "grey",  dcol = "steelblue", 
                  global = F, nrow = 2)

b.  Calcular indicadores de tendencia central y de dispersión,
    indicando cuál/cuáles son los más adecuados a las
    características de las variables.
    
summary(cordoba[-1])
##       nbi1            nbi2          calmat1         calmat2     
##  Min.   : 9.00   Min.   : 8.80   Min.   :10.70   Min.   :27.38  
##  1st Qu.:10.53   1st Qu.:10.72   1st Qu.:32.58   1st Qu.:40.10  
##  Median :13.70   Median :15.70   Median :46.23   Median :41.95  
##  Mean   :17.01   Mean   :18.77   Mean   :40.80   Mean   :43.00  
##  3rd Qu.:21.48   3rd Qu.:25.23   3rd Qu.:52.43   3rd Qu.:46.50  
##  Max.   :39.90   Max.   :40.80   Max.   :64.98   Max.   :62.75  
##     calmat3          calmat4            alfab            cob       
##  Min.   : 5.030   Min.   : 0.5600   Min.   :91.66   Min.   :29.93  
##  1st Qu.: 6.400   1st Qu.: 0.9675   1st Qu.:95.66   1st Qu.:37.26  
##  Median : 9.380   Median : 2.0950   Median :97.08   Median :49.62  
##  Mean   : 9.364   Mean   : 6.8381   Mean   :96.47   Mean   :47.77  
##  3rd Qu.:11.645   3rd Qu.:10.7250   3rd Qu.:97.51   3rd Qu.:57.55  
##  Max.   :16.100   Max.   :34.8900   Max.   :98.67   Max.   :62.53
cordoba %>% get_summary_stats(type = "mean_sd")
## Warning: attributes are not identical across measure variables;
## they will be dropped
## # A tibble: 8 × 4
##   variable     n  mean    sd
##   <chr>    <dbl> <dbl> <dbl>
## 1 alfab       26 96.5   1.67
## 2 calmat1     26 40.8  15.3 
## 3 calmat2     26 43.0   7.43
## 4 calmat3     26  9.36  3.11
## 5 calmat4     26  6.84  8.90
## 6 cob         26 47.8  10.8 
## 7 nbi1        26 17.0   8.72
## 8 nbi2        26 18.8   9.64

2. Realizar gráficos de dispersión de la variable NBI con cada una de

las restantes variables.
pairs(cordoba[2:9], pch = 19, lower.panel = NULL)

Para una visión más clara sobre la dispersión de las variables:

pivot_cordoba <- cordoba[2:9] %>% 
  pivot_longer(-c(nbi1, nbi2), names_to = "var", values_to = "value")

ggplot(pivot_cordoba, aes(x = value, y = nbi1)) +
  geom_point() +
  stat_smooth(method = "lm")+
  facet_wrap(~ var, scales = "free")
## `geom_smooth()` using formula 'y ~ x'

3. Calcular correlaciones lineales de la variable NBI con cada una de

las variables disponibles.
M <-cor(cordoba[2:9])
M
##               nbi1       nbi2    calmat1    calmat2    calmat3    calmat4
## nbi1     1.0000000  0.9885581 -0.8924089  0.3893973  0.6928712  0.9644483
## nbi2     0.9885581  1.0000000 -0.8862140  0.3798820  0.7446440  0.9436909
## calmat1 -0.8924089 -0.8862140  1.0000000 -0.7458662 -0.8127386 -0.8096014
## calmat2  0.3893973  0.3798820 -0.7458662  1.0000000  0.5955555  0.2370857
## calmat3  0.6928712  0.7446440 -0.8127386  0.5955555  1.0000000  0.5483462
## calmat4  0.9644483  0.9436909 -0.8096014  0.2370857  0.5483462  1.0000000
## alfab   -0.8165181 -0.8076804  0.9034763 -0.6971058 -0.8078057 -0.6863838
## cob     -0.8794067 -0.9190894  0.8370384 -0.3913652 -0.8007534 -0.8301653
##              alfab        cob
## nbi1    -0.8165181 -0.8794067
## nbi2    -0.8076804 -0.9190894
## calmat1  0.9034763  0.8370384
## calmat2 -0.6971058 -0.3913652
## calmat3 -0.8078057 -0.8007534
## calmat4 -0.6863838 -0.8301653
## alfab    1.0000000  0.7524168
## cob      0.7524168  1.0000000
corrplot::corrplot(M, type="upper", order="original", 
                   addCoef.col = "black", method = "color",
                   col=brewer.pal(n=8, name="RdYlBu"))

4. Calcular la recta de regresión utilizando como variable dependiente

el NBI y como independiente cada una de las restantes variables

Creamos un modelo con todas las variables

model_cordoba <- lm(nbi1 ~ calmat1 + calmat2 + calmat3 + calmat4 + alfab + cob,
                    cordoba)

summary(model_cordoba)
## 
## Call:
## lm(formula = nbi1 ~ calmat1 + calmat2 + calmat3 + calmat4 + alfab + 
##     cob, data = cordoba)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2743 -0.5281  0.0653  0.4753  2.1315 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)  
## (Intercept) 5588.52605 5375.98653   1.040    0.312  
## calmat1      -54.73675   53.73513  -1.019    0.321  
## calmat2      -54.75060   53.75323  -1.019    0.321  
## calmat3      -54.51372   53.77170  -1.014    0.323  
## calmat4      -54.00628   53.73910  -1.005    0.328  
## alfab         -1.06366    0.41079  -2.589    0.018 *
## cob           -0.03639    0.07081  -0.514    0.613  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.392 on 19 degrees of freedom
## Multiple R-squared:  0.9806, Adjusted R-squared:  0.9745 
## F-statistic: 160.4 on 6 and 19 DF,  p-value: 3.1e-15

Chequeamos multicolinealidad

ols_vif_tol(model_cordoba)
##   Variables    Tolerance          VIF
## 1   calmat1 1.150529e-07 8.691654e+06
## 2   calmat2 4.860191e-07 2.057532e+06
## 3   calmat3 2.776672e-06 3.601433e+05
## 4   calmat4 3.387577e-07 2.951962e+06
## 5     alfab 1.642795e-01 6.087186e+00
## 6       cob 1.319205e-01 7.580323e+00

Usamos el método stepwise para la selección con un P-value de entrada de 0.01 y de salida de 0.05

ols_step_both_p(model_cordoba, pent = 0.01, prem= 0.05)
## 
##                              Stepwise Selection Summary                               
## -------------------------------------------------------------------------------------
##                      Added/                   Adj.                                       
## Step    Variable    Removed     R-Square    R-Square     C(p)        AIC        RMSE     
## -------------------------------------------------------------------------------------
##    1    calmat4     addition       0.930       0.927    46.5370    122.1731    2.3518    
##    2     alfab      addition       0.975       0.973     4.2240     97.1323    1.4282    
## -------------------------------------------------------------------------------------

Quedando el modelo de la siguiente manera:

model_cordoba <- lm(nbi1 ~ calmat4 + alfab, cordoba)

summary(model_cordoba)
## 
## Call:
## lm(formula = nbi1 ~ calmat4 + alfab, data = cordoba)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.5284 -0.9714  0.1083  0.6394  2.7129 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 158.91872   22.87651   6.947 4.42e-07 ***
## calmat4       0.74848    0.04414  16.957 1.71e-14 ***
## alfab        -1.52406    0.23496  -6.486 1.28e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.428 on 23 degrees of freedom
## Multiple R-squared:  0.9753, Adjusted R-squared:  0.9732 
## F-statistic: 454.4 on 2 and 23 DF,  p-value: < 2.2e-16