Regresiones lineales

0. Objetivo de la práctica

El objetivo del práctico, es avanzar en la etapa de análisis de los datos a través del uso de regresiones lineales. Para esto usaremos datos previamente procesados de la base de datos a utilizar. ¡No olvidemos que nos encontramos en el análisis de datos!

Entonces, en esta práctica aprenderemos trabajar las regresiones lineales, trabajando con predictores continuos y categóricos. Luego veremos las diferencias de la estimación simple con pesos muestrales, para continuar con la extracción de objetos y finalmente veremos como representarlos mediante gráficos y tablas.

1. Recursos del práctico

En este práctico utilizamos los datos procesados de la Encuesta Suplementaria de Ingresos (ESI) 2020.Recuerden siempre consultar el libro códigos antes de trabajar datos.

2. Paquetes a utilizar

En este práctico utilizaremos siete paquetes

  1. pacman: este facilita y agiliza la lectura de los paquetes a utilizar en R;

  2. tidyverse: colección de paquetes;

  3. srvyr: para crear el objeto encuesta;

  4. survey: para crear modelos incorporando el diseño muestral;

  5. sjPlot: para presentar tablas y gráficos con los modelos creados;

pacman::p_load(sjPlot, 
               tidyverse, 
               srvyr,
               survey)

3. Importar datos

Una vez cargado los paquetes a utilizar, debemos cargar los datos procesados.

datos <- readRDS("output/data/datos_proc.rds")

4. Explorar datos

Es relevante explorar los datos que utilizaremos, cómo están previamente procesados ¡no sabemos con que variables estamos trabajando!

names(datos)
## [1] "ing_t_t"      "edad"         "sexo"         "est_conyugal" "ciuo08"      
## [6] "fact_cal_esi"
head(datos)
## # A tibble: 6 x 6
##   ing_t_t  edad       sexo est_conyugal                      ciuo08 fact_cal_esi
##     <dbl> <dbl>  <dbl+lbl> <chr>                          <dbl+lbl>        <dbl>
## 1 320421.    29 2 [Mujer]  Con pareja    5 [Trabajadores de los se~        346. 
## 2 750000     30 2 [Mujer]  Sin pareja    2 [Profesionales, científ~       1056. 
## 3 900000     43 2 [Mujer]  Sin pareja    2 [Profesionales, científ~         41.6
## 4      0     15 2 [Mujer]  Sin pareja   NA                                 265. 
## 5      0     11 1 [Hombre] <NA>         NA                                 282. 
## 6      0     62 2 [Mujer]  Sin pareja   NA                                 165.

Ahora sabemos que trabajaremos con seis variables: "ing_t_t", "est_conyugal", "ciuo08", "sexo", "edad" y "fact_cal_esi",. Ahora inclusive podemos explorar nuestros datos con sjPlot::view_df()

sjPlot::view_df(datos,
                encoding = "UTF-8")
Data frame: datos
IDNameLabelValuesValue Labels
1 ing_t_t Total ingresos del trabajo range: 0.0-18045761.6
2 edad Edad de la persona range: 0-106
3 sexo Sexo 1
2
Hombre
Mujer
4 est_conyugal <output omitted>
5 ciuo08 b1. Grupo ocupacional según CIUO 08 - 1 dígito 1
2
3
4
5
6
7
8
9
10
999
Directores, gerentes y administradores
Profesionales, científicos e intelectuales
Técnicos y profesionales de nivel medio
Personal de apoyo administrativo
Trabajadores de los servicios y vendedores de comercios y mercados
Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros
Artesanos y operarios de oficios
Operadores de instalaciones, maquinas y ensambladores
Ocupaciones elementales
Otros no identificados
Sin clasificación
6 fact_cal_esi Factor de expansión ESI con nueva calibración,
proyecciones de población
range: 2.8-7070.1

Perfecto, podemos ver las variables que tenemos y sus categorías de respuesta pasaremos a la regresión

5. Modelo de regresión lineal

5.1 Formula

Previo a eso recordemos que la fórmula de la regresión lineal simple es:

\begin{equation} \widehat{Y}=b_{0} +b_{1}X \end{equation}

Mientras que en la regresión lineal múltiple es:

\begin{equation} \widehat{Y}=b_{0} +b_{1}X +b_{2}X +b_{x}X \end{equation}

Donde

  • \(\widehat{Y}\) es el valor estimado/predicho de \(Y\)
  • \(b_{0}\) es el intercepto de la recta (el valor de Y cuando X es 0)
  • \(b_{1}\) y \(b_{2}\) son los coeficiente de regresión, que nos dice cuánto aumenta Y por cada punto que aumenta X (pendiente)

Ecuaciones en LateX

Previo a revisar regresiones en R, es necesario aprender cómo están hechas estas ecuaciones

Hay dos maneras de realizarlo. Para ello será muy importante el signo $. Para entenderlo usaremos el ejemplo que está arriba

Forma 1 de ecuación: Esta forma se utiliza para que la fórmula esté centrada en una linea específica

\begin{equation}
\widehat{Y}=b_{0} +b_{1}X
\end{equation}
  • Resultado

\begin{equation} \widehat{Y}=b_{0} +b_{1}X \end{equation}

  • Con

\begin indicamos el inicio y con las llaves ({}) especificamos que queremos escribir una ecuación {equation} \widehat especificamos la ecuación \end decimos a R que es el fin de la ecuación {equation}

Forma 2: Esta forma se utiliza para que la fórmula este de forma contínua en el texto (inline)

${Y} = b_{0} +b_{1}X$
  • Resultado

\({Y}=b_{0} +b_{1}X\)

Forma 3: Con esta forma la ecuación se verá centrada

$${Y}=b_{0} +b_{1}X$$
  • Resultado

$${Y}=b_{0} +b_{1}X$$

Si quieres aprender más sobre el uso de ecuaciones en LateX, dirígete acá

Les mostramos esto porque de la misma forma se diferencian ambos procedimientos en R

Para la regresión lineal simple se utiliza la siguiente estructura:

objeto <- lm(dependiente ~ independiente, data=datos)

Mientras que para la regresión lineal múltiple, sólo se añaden más variables con el signo +

objeto <- lm(dependiente ~ independiente1 + independiente 2 + independientex, data=datos)

5.2 Modelo

En este práctico no sólo aprenderemos a utilizar regresiones en R, sino que también a utilizalas con pesos muestrales. Pero, ¿cuál es la diferencia? ¡Ahora lo veremos!

Modelo nulo sin pesos muestrales

Para ello crearemos en un objeto nuestro modelo nulo

modelo0_sin <- lm(ing_t_t ~ 1,
              data = datos)

y lo visualizaremos con

summary(modelo0_sin)
## 
## Call:
## lm(formula = ing_t_t ~ 1, data = datos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
##  -206355  -206355  -206355    94039 17839407 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   206355       1795     115   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 481300 on 71934 degrees of freedom

Modelo nulo con pesos muestrales

Luego crearemos el modelo con peso muestral, para esto debemos añadir un nuevo argumento weights, donde se especifica el factor de expansión

modelo0 <- lm(ing_t_t ~ 1,
              data = datos, 
              weights = fact_cal_esi)

Ahora veremos los resultados con

summary(modelo0)
## 
## Call:
## lm(formula = ing_t_t ~ 1, data = datos, weights = fact_cal_esi)
## 
## Weighted Residuals:
##       Min        1Q    Median        3Q       Max 
## -21542431  -3770518  -2542853    488353 328574529 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   256201       2090   122.6   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9240000 on 71934 degrees of freedom

Entonces ¿qué diferencias hay?

summary(modelo0);summary(modelo0_sin)
## 
## Call:
## lm(formula = ing_t_t ~ 1, data = datos, weights = fact_cal_esi)
## 
## Weighted Residuals:
##       Min        1Q    Median        3Q       Max 
## -21542431  -3770518  -2542853    488353 328574529 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   256201       2090   122.6   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9240000 on 71934 degrees of freedom
## 
## Call:
## lm(formula = ing_t_t ~ 1, data = datos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
##  -206355  -206355  -206355    94039 17839407 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   206355       1795     115   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 481300 on 71934 degrees of freedom

Utilizando ecuaciones en LateX, se vería de la siguiente manera

Modelo sin muestral

\begin{equation} \widehat{Y}= 206355 + b_{1}X \end{equation}

Modelo con peso muestral

\begin{equation} \widehat{Y}= 256201 + b_{1}X \end{equation}

Hay diferencias en el intercepto y en los errores estándar, ya que uno asume pesos de precisión y otro asume pesos muestrales.

Por ello es muy importante incorporar el peso muestral en el análisis, sino los estimadores puntuales no serán exactos, no podremos realizar inferencia a nivel poblacional a partir del modelo, debido a la sobrestimación de la precisión de los estimadores.

5.3 Regresión lineal simple

Ahora estimaremos modelos simples

El primero sera entre ingresos y edad (ing_t_t, edad)

modelo1 <- lm(ing_t_t ~ edad,
              data = datos, 
              weights = fact_cal_esi)
summary(modelo1)
## 
## Call:
## lm(formula = ing_t_t ~ edad, data = datos, weights = fact_cal_esi)
## 
## Weighted Residuals:
##       Min        1Q    Median        3Q       Max 
## -21658308  -3745508  -2285119     35317 329034133 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 127658.05    4042.33   31.58   <2e-16 ***
## edad          3511.38      94.84   37.03   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9153000 on 71933 degrees of freedom
## Multiple R-squared:  0.0187,	Adjusted R-squared:  0.01869 
## F-statistic:  1371 on 1 and 71933 DF,  p-value: < 2.2e-16

Ecuación:

\begin{equation}
\widehat{Y}= b_{0} +b_{1}X
\end{equation}

Reemplazamos

\begin{equation}
\widehat{ing_t_t}= 127658.05 + 3511.38*edad
\end{equation}

Resultado:

\begin{equation} \widehat{ing_t_t}= 127658.05 + 3511.38*edad \end{equation}

También podemos ver la relación entre ingresos y sexo (ing_t_t, sexo)

modelo2_sin <- lm(ing_t_t ~ sexo,
              data = datos, 
              weights = fact_cal_esi)
summary(modelo2_sin)
## 
## Call:
## lm(formula = ing_t_t ~ sexo, data = datos, weights = fact_cal_esi)
## 
## Weighted Residuals:
##       Min        1Q    Median        3Q       Max 
## -27280367  -3615240  -2145275    120699 325618868 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   498448       6568   75.89   <2e-16 ***
## sexo         -160784       4138  -38.86   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9145000 on 71933 degrees of freedom
## Multiple R-squared:  0.02056,	Adjusted R-squared:  0.02055 
## F-statistic:  1510 on 1 and 71933 DF,  p-value: < 2.2e-16

¡Pero espera! ¡sexo no es una variable continua!

Predictores categóricos

Previo a esto hay que recordar que sexo no es un predictor continuo, y también debemos recordárselo a R. Este es un proceso que debe realizarse en el código de preparación, pero para ver como procesa R los predictores categóricos en una regresión lo haremos acá

Para ello utilizamos forcats un paquete del universo tidyverse con la función as_factor

datos$sexo <-  forcats::as_factor(datos$sexo) #Recuerden que esto debería ir en el código de preparación

¡Vamos al modelo!

modelo2 <- lm(ing_t_t ~ sexo,
              data = datos, 
              weights = fact_cal_esi)
summary(modelo2)
## 
## Call:
## lm(formula = ing_t_t ~ sexo, data = datos, weights = fact_cal_esi)
## 
## Weighted Residuals:
##       Min        1Q    Median        3Q       Max 
## -27280367  -3615240  -2145275    120699 325618868 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   337664       2945  114.65   <2e-16 ***
## sexoMujer    -160784       4138  -38.86   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9145000 on 71933 degrees of freedom
## Multiple R-squared:  0.02056,	Adjusted R-squared:  0.02055 
## F-statistic:  1510 on 1 and 71933 DF,  p-value: < 2.2e-16

Como pueden ver, ahora especifica qué categoría de respuesta utiliza como nivel de referencia, esto en la variable sexo quizá puede ser intuitivo, pero ¿qué pasaría con las que tienen otras categorías de respuesta?

intentémoslo con ciuo08 y est_conyugal

datos$ciuo08 <-  forcats::as_factor(datos$ciuo08) 
datos$est_conyugal <-  forcats::as_factor(datos$est_conyugal)
# ¡No olviden que esto debe ir en el código de procesamiento!

Modelo para ciuo08

modelo3 <- lm(ing_t_t ~ ciuo08,
              data = datos, 
              weights = fact_cal_esi)
summary(modelo3)
## 
## Call:
## lm(formula = ing_t_t ~ ciuo08, data = datos, weights = fact_cal_esi)
## 
## Weighted Residuals:
##       Min        1Q    Median        3Q       Max 
## -81184669  -3408145   -828630   1334160 263027210 
## 
## Coefficients:
##                                                                                     Estimate
## (Intercept)                                                                          2062790
## ciuo08Profesionales, científicos e intelectuales                                     -925708
## ciuo08Técnicos y profesionales de nivel medio                                       -1327327
## ciuo08Personal de apoyo administrativo                                              -1551221
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados            -1687053
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros -1717604
## ciuo08Artesanos y operarios de oficios                                              -1672564
## ciuo08Operadores de instalaciones, maquinas y ensambladores                         -1550495
## ciuo08Ocupaciones elementales                                                       -1782209
## ciuo08Otros no identificados                                                        -1019599
## ciuo08Sin clasificación                                                             -1737325
##                                                                                     Std. Error
## (Intercept)                                                                              19190
## ciuo08Profesionales, científicos e intelectuales                                         21334
## ciuo08Técnicos y profesionales de nivel medio                                            21921
## ciuo08Personal de apoyo administrativo                                                   24706
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados                 20888
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros      30756
## ciuo08Artesanos y operarios de oficios                                                   21957
## ciuo08Operadores de instalaciones, maquinas y ensambladores                              23380
## ciuo08Ocupaciones elementales                                                            21067
## ciuo08Otros no identificados                                                             58328
## ciuo08Sin clasificación                                                                 118089
##                                                                                     t value
## (Intercept)                                                                          107.49
## ciuo08Profesionales, científicos e intelectuales                                     -43.39
## ciuo08Técnicos y profesionales de nivel medio                                        -60.55
## ciuo08Personal de apoyo administrativo                                               -62.79
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados             -80.77
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros  -55.85
## ciuo08Artesanos y operarios de oficios                                               -76.17
## ciuo08Operadores de instalaciones, maquinas y ensambladores                          -66.32
## ciuo08Ocupaciones elementales                                                        -84.60
## ciuo08Otros no identificados                                                         -17.48
## ciuo08Sin clasificación                                                              -14.71
##                                                                                     Pr(>|t|)
## (Intercept)                                                                           <2e-16
## ciuo08Profesionales, científicos e intelectuales                                      <2e-16
## ciuo08Técnicos y profesionales de nivel medio                                         <2e-16
## ciuo08Personal de apoyo administrativo                                                <2e-16
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados              <2e-16
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros   <2e-16
## ciuo08Artesanos y operarios de oficios                                                <2e-16
## ciuo08Operadores de instalaciones, maquinas y ensambladores                           <2e-16
## ciuo08Ocupaciones elementales                                                         <2e-16
## ciuo08Otros no identificados                                                          <2e-16
## ciuo08Sin clasificación                                                               <2e-16
##                                                                                        
## (Intercept)                                                                         ***
## ciuo08Profesionales, científicos e intelectuales                                    ***
## ciuo08Técnicos y profesionales de nivel medio                                       ***
## ciuo08Personal de apoyo administrativo                                              ***
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados            ***
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros ***
## ciuo08Artesanos y operarios de oficios                                              ***
## ciuo08Operadores de instalaciones, maquinas y ensambladores                         ***
## ciuo08Ocupaciones elementales                                                       ***
## ciuo08Otros no identificados                                                        ***
## ciuo08Sin clasificación                                                             ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10600000 on 26814 degrees of freedom
##   (45110 observations deleted due to missingness)
## Multiple R-squared:  0.3095,	Adjusted R-squared:  0.3092 
## F-statistic:  1202 on 10 and 26814 DF,  p-value: < 2.2e-16

Modelo para est_conyugal

modelo4 <- lm(ing_t_t ~ est_conyugal,
              data = datos, 
              weights = fact_cal_esi)
summary(modelo4)
## 
## Call:
## lm(formula = ing_t_t ~ est_conyugal, data = datos, weights = fact_cal_esi)
## 
## Weighted Residuals:
##       Min        1Q    Median        3Q       Max 
## -34630072  -4193409  -2453049    492227 322927197 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)              411851       3546  116.13   <2e-16 ***
## est_conyugalSin pareja  -185302       4956  -37.39   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9845000 on 58830 degrees of freedom
##   (13103 observations deleted due to missingness)
## Multiple R-squared:  0.02321,	Adjusted R-squared:  0.0232 
## F-statistic:  1398 on 1 and 58830 DF,  p-value: < 2.2e-16

En síntesis, el nivel de referencia siempre será el level más bajo de cada variable. Por ello es fundamental asegurarnos de que los factores que generemos en el código de procesamiento sea correcto y se adecue a nuestros fines.

5.4 Regresión lineal múltiple

¡Incorporemos más variables con el signo más (+)!

modelo5 <- lm(ing_t_t ~ edad + sexo + ciuo08 + est_conyugal,
              data = datos, 
              weights = fact_cal_esi)
summary(modelo5)
## 
## Call:
## lm(formula = ing_t_t ~ edad + sexo + ciuo08 + est_conyugal, data = datos, 
##     weights = fact_cal_esi)
## 
## Weighted Residuals:
##       Min        1Q    Median        3Q       Max 
## -77029860  -3327667   -903696   1562319 261766339 
## 
## Coefficients:
##                                                                                       Estimate
## (Intercept)                                                                          1977240.3
## edad                                                                                    3645.5
## sexoMujer                                                                            -179308.4
## ciuo08Profesionales, científicos e intelectuales                                     -838561.6
## ciuo08Técnicos y profesionales de nivel medio                                       -1245145.4
## ciuo08Personal de apoyo administrativo                                              -1467502.5
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados            -1600971.8
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros -1752079.3
## ciuo08Artesanos y operarios de oficios                                              -1675160.8
## ciuo08Operadores de instalaciones, maquinas y ensambladores                         -1578961.8
## ciuo08Ocupaciones elementales                                                       -1718318.8
## ciuo08Otros no identificados                                                        -1042107.7
## ciuo08Sin clasificación                                                             -1693602.6
## est_conyugalSin pareja                                                               -113981.1
##                                                                                     Std. Error
## (Intercept)                                                                            23485.6
## edad                                                                                     290.2
## sexoMujer                                                                               7968.4
## ciuo08Profesionales, científicos e intelectuales                                       21117.6
## ciuo08Técnicos y profesionales de nivel medio                                          21664.4
## ciuo08Personal de apoyo administrativo                                                 24391.5
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados               20672.5
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros    30256.0
## ciuo08Artesanos y operarios de oficios                                                 21582.2
## ciuo08Operadores de instalaciones, maquinas y ensambladores                            23049.0
## ciuo08Ocupaciones elementales                                                          20781.6
## ciuo08Otros no identificados                                                           57343.4
## ciuo08Sin clasificación                                                               115936.4
## est_conyugalSin pareja                                                                  7609.8
##                                                                                     t value
## (Intercept)                                                                           84.19
## edad                                                                                  12.56
## sexoMujer                                                                            -22.50
## ciuo08Profesionales, científicos e intelectuales                                     -39.71
## ciuo08Técnicos y profesionales de nivel medio                                        -57.47
## ciuo08Personal de apoyo administrativo                                               -60.16
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados             -77.44
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros  -57.91
## ciuo08Artesanos y operarios de oficios                                               -77.62
## ciuo08Operadores de instalaciones, maquinas y ensambladores                          -68.50
## ciuo08Ocupaciones elementales                                                        -82.69
## ciuo08Otros no identificados                                                         -18.17
## ciuo08Sin clasificación                                                              -14.61
## est_conyugalSin pareja                                                               -14.98
##                                                                                     Pr(>|t|)
## (Intercept)                                                                           <2e-16
## edad                                                                                  <2e-16
## sexoMujer                                                                             <2e-16
## ciuo08Profesionales, científicos e intelectuales                                      <2e-16
## ciuo08Técnicos y profesionales de nivel medio                                         <2e-16
## ciuo08Personal de apoyo administrativo                                                <2e-16
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados              <2e-16
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros   <2e-16
## ciuo08Artesanos y operarios de oficios                                                <2e-16
## ciuo08Operadores de instalaciones, maquinas y ensambladores                           <2e-16
## ciuo08Ocupaciones elementales                                                         <2e-16
## ciuo08Otros no identificados                                                          <2e-16
## ciuo08Sin clasificación                                                               <2e-16
## est_conyugalSin pareja                                                                <2e-16
##                                                                                        
## (Intercept)                                                                         ***
## edad                                                                                ***
## sexoMujer                                                                           ***
## ciuo08Profesionales, científicos e intelectuales                                    ***
## ciuo08Técnicos y profesionales de nivel medio                                       ***
## ciuo08Personal de apoyo administrativo                                              ***
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados            ***
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros ***
## ciuo08Artesanos y operarios de oficios                                              ***
## ciuo08Operadores de instalaciones, maquinas y ensambladores                         ***
## ciuo08Ocupaciones elementales                                                       ***
## ciuo08Otros no identificados                                                        ***
## ciuo08Sin clasificación                                                             ***
## est_conyugalSin pareja                                                              ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10400000 on 26807 degrees of freedom
##   (45114 observations deleted due to missingness)
## Multiple R-squared:  0.3351,	Adjusted R-squared:  0.3348 
## F-statistic:  1039 on 13 and 26807 DF,  p-value: < 2.2e-16

Regresión con paquete

stats

stats tiene su función para generar diversos tipo de regresiones. Esta función es glm(), y tiene una estructura similar a lm(), sólo que en esta se debe especificar el tipo de regresión que se necesita en el argumento family. Así quedaría nuestro modelo de regresión lineal:

modelo5_glm <- glm(ing_t_t ~ edad + sexo + ciuo08 + est_conyugal,
               family = gaussian(link = "identity"), #Especificamos la regresión lineal
               data = datos, 
               weights = fact_cal_esi)
summary(modelo5_glm)
## 
## Call:
## glm(formula = ing_t_t ~ edad + sexo + ciuo08 + est_conyugal, 
##     family = gaussian(link = "identity"), data = datos, weights = fact_cal_esi)
## 
## Deviance Residuals: 
##       Min         1Q     Median         3Q        Max  
## -77029860   -3327667    -903696    1562319  261766339  
## 
## Coefficients:
##                                                                                       Estimate
## (Intercept)                                                                          1977240.3
## edad                                                                                    3645.5
## sexoMujer                                                                            -179308.4
## ciuo08Profesionales, científicos e intelectuales                                     -838561.6
## ciuo08Técnicos y profesionales de nivel medio                                       -1245145.4
## ciuo08Personal de apoyo administrativo                                              -1467502.5
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados            -1600971.8
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros -1752079.3
## ciuo08Artesanos y operarios de oficios                                              -1675160.8
## ciuo08Operadores de instalaciones, maquinas y ensambladores                         -1578961.8
## ciuo08Ocupaciones elementales                                                       -1718318.8
## ciuo08Otros no identificados                                                        -1042107.7
## ciuo08Sin clasificación                                                             -1693602.6
## est_conyugalSin pareja                                                               -113981.1
##                                                                                     Std. Error
## (Intercept)                                                                            23485.6
## edad                                                                                     290.2
## sexoMujer                                                                               7968.4
## ciuo08Profesionales, científicos e intelectuales                                       21117.6
## ciuo08Técnicos y profesionales de nivel medio                                          21664.4
## ciuo08Personal de apoyo administrativo                                                 24391.5
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados               20672.5
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros    30256.0
## ciuo08Artesanos y operarios de oficios                                                 21582.2
## ciuo08Operadores de instalaciones, maquinas y ensambladores                            23049.0
## ciuo08Ocupaciones elementales                                                          20781.6
## ciuo08Otros no identificados                                                           57343.4
## ciuo08Sin clasificación                                                               115936.4
## est_conyugalSin pareja                                                                  7609.8
##                                                                                     t value
## (Intercept)                                                                           84.19
## edad                                                                                  12.56
## sexoMujer                                                                            -22.50
## ciuo08Profesionales, científicos e intelectuales                                     -39.71
## ciuo08Técnicos y profesionales de nivel medio                                        -57.47
## ciuo08Personal de apoyo administrativo                                               -60.16
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados             -77.44
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros  -57.91
## ciuo08Artesanos y operarios de oficios                                               -77.62
## ciuo08Operadores de instalaciones, maquinas y ensambladores                          -68.50
## ciuo08Ocupaciones elementales                                                        -82.69
## ciuo08Otros no identificados                                                         -18.17
## ciuo08Sin clasificación                                                              -14.61
## est_conyugalSin pareja                                                               -14.98
##                                                                                     Pr(>|t|)
## (Intercept)                                                                           <2e-16
## edad                                                                                  <2e-16
## sexoMujer                                                                             <2e-16
## ciuo08Profesionales, científicos e intelectuales                                      <2e-16
## ciuo08Técnicos y profesionales de nivel medio                                         <2e-16
## ciuo08Personal de apoyo administrativo                                                <2e-16
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados              <2e-16
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros   <2e-16
## ciuo08Artesanos y operarios de oficios                                                <2e-16
## ciuo08Operadores de instalaciones, maquinas y ensambladores                           <2e-16
## ciuo08Ocupaciones elementales                                                         <2e-16
## ciuo08Otros no identificados                                                          <2e-16
## ciuo08Sin clasificación                                                               <2e-16
## est_conyugalSin pareja                                                                <2e-16
##                                                                                        
## (Intercept)                                                                         ***
## edad                                                                                ***
## sexoMujer                                                                           ***
## ciuo08Profesionales, científicos e intelectuales                                    ***
## ciuo08Técnicos y profesionales de nivel medio                                       ***
## ciuo08Personal de apoyo administrativo                                              ***
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados            ***
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros ***
## ciuo08Artesanos y operarios de oficios                                              ***
## ciuo08Operadores de instalaciones, maquinas y ensambladores                         ***
## ciuo08Ocupaciones elementales                                                       ***
## ciuo08Otros no identificados                                                        ***
## ciuo08Sin clasificación                                                             ***
## est_conyugalSin pareja                                                              ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 1.08223e+14)
## 
##     Null deviance: 4.3633e+18  on 26820  degrees of freedom
## Residual deviance: 2.9011e+18  on 26807  degrees of freedom
##   (45114 observations deleted due to missingness)
## AIC: 801135
## 
## Number of Fisher Scoring iterations: 2

Regresión con paquete survey

survey también tiene su función para regresiones, para ello primero crearemos un objeto encuesta

esi_design <- as_survey_design(datos, 
                               ids = 1, 
                               weights = fact_cal_esi)

Luego usamos la función svyglm y en el argumento design dejamos el objeto creado y así generamos nuestro modelo:

modelo5_survey <- svyglm(ing_t_t ~ edad + sexo + ciuo08 + est_conyugal,
                         family = gaussian(link = "identity"),
                         design = esi_design)

Ahora visualizamos

summary(modelo5_survey)
## 
## Call:
## svyglm(formula = ing_t_t ~ edad + sexo + ciuo08 + est_conyugal, 
##     design = esi_design, family = gaussian(link = "identity"))
## 
## Survey design:
## Called via srvyr
## 
## Coefficients:
##                                                                                       Estimate
## (Intercept)                                                                          1977240.3
## edad                                                                                    3645.5
## sexoMujer                                                                            -179308.4
## ciuo08Profesionales, científicos e intelectuales                                     -838561.6
## ciuo08Técnicos y profesionales de nivel medio                                       -1245145.4
## ciuo08Personal de apoyo administrativo                                              -1467502.5
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados            -1600971.8
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros -1752079.3
## ciuo08Artesanos y operarios de oficios                                              -1675160.8
## ciuo08Operadores de instalaciones, maquinas y ensambladores                         -1578961.8
## ciuo08Ocupaciones elementales                                                       -1718318.8
## ciuo08Otros no identificados                                                        -1042107.7
## ciuo08Sin clasificación                                                             -1693602.6
## est_conyugalSin pareja                                                               -113981.1
##                                                                                     Std. Error
## (Intercept)                                                                            88363.0
## edad                                                                                     452.1
## sexoMujer                                                                              13546.1
## ciuo08Profesionales, científicos e intelectuales                                       86714.7
## ciuo08Técnicos y profesionales de nivel medio                                          85675.3
## ciuo08Personal de apoyo administrativo                                                 84472.8
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados               83698.5
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros    83437.6
## ciuo08Artesanos y operarios de oficios                                                 83301.6
## ciuo08Operadores de instalaciones, maquinas y ensambladores                            83666.1
## ciuo08Ocupaciones elementales                                                          83108.3
## ciuo08Otros no identificados                                                          103555.4
## ciuo08Sin clasificación                                                               118605.3
## est_conyugalSin pareja                                                                 11951.0
##                                                                                     t value
## (Intercept)                                                                          22.376
## edad                                                                                  8.063
## sexoMujer                                                                           -13.237
## ciuo08Profesionales, científicos e intelectuales                                     -9.670
## ciuo08Técnicos y profesionales de nivel medio                                       -14.533
## ciuo08Personal de apoyo administrativo                                              -17.372
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados            -19.128
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros -20.999
## ciuo08Artesanos y operarios de oficios                                              -20.110
## ciuo08Operadores de instalaciones, maquinas y ensambladores                         -18.872
## ciuo08Ocupaciones elementales                                                       -20.676
## ciuo08Otros no identificados                                                        -10.063
## ciuo08Sin clasificación                                                             -14.279
## est_conyugalSin pareja                                                               -9.537
##                                                                                     Pr(>|t|)
## (Intercept)                                                                          < 2e-16
## edad                                                                                7.74e-16
## sexoMujer                                                                            < 2e-16
## ciuo08Profesionales, científicos e intelectuales                                     < 2e-16
## ciuo08Técnicos y profesionales de nivel medio                                        < 2e-16
## ciuo08Personal de apoyo administrativo                                               < 2e-16
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados             < 2e-16
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros  < 2e-16
## ciuo08Artesanos y operarios de oficios                                               < 2e-16
## ciuo08Operadores de instalaciones, maquinas y ensambladores                          < 2e-16
## ciuo08Ocupaciones elementales                                                        < 2e-16
## ciuo08Otros no identificados                                                         < 2e-16
## ciuo08Sin clasificación                                                              < 2e-16
## est_conyugalSin pareja                                                               < 2e-16
##                                                                                        
## (Intercept)                                                                         ***
## edad                                                                                ***
## sexoMujer                                                                           ***
## ciuo08Profesionales, científicos e intelectuales                                    ***
## ciuo08Técnicos y profesionales de nivel medio                                       ***
## ciuo08Personal de apoyo administrativo                                              ***
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados            ***
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros ***
## ciuo08Artesanos y operarios de oficios                                              ***
## ciuo08Operadores de instalaciones, maquinas y ensambladores                         ***
## ciuo08Ocupaciones elementales                                                       ***
## ciuo08Otros no identificados                                                        ***
## ciuo08Sin clasificación                                                             ***
## est_conyugalSin pareja                                                              ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 398202555644)
## 
## Number of Fisher Scoring iterations: 2

Modelos de regresión logística

5.4 Información de los modelos

Para conocer la información de los modelos, hay múltiples funciones que podemos utilizar:

La primera función es str, la cual nos mostrará su estructura

str(modelo5)
## List of 15
##  $ coefficients : Named num [1:14] 1977240 3645 -179308 -838562 -1245145 ...
##   ..- attr(*, "names")= chr [1:14] "(Intercept)" "edad" "sexoMujer" "ciuo08Profesionales, científicos e intelectuales" ...
##  $ residuals    : Named num [1:26821] 17742 -204754 -102145 15920 -253034 ...
##   ..- attr(*, "label")= chr "Total ingresos del trabajo"
##   ..- attr(*, "format.stata")= chr "%10.0g"
##   ..- attr(*, "names")= chr [1:26821] "1" "2" "3" "7" ...
##  $ fitted.values: Named num [1:26821] 302679 954754 1002145 235781 393816 ...
##   ..- attr(*, "label")= chr "Total ingresos del trabajo"
##   ..- attr(*, "format.stata")= chr "%10.0g"
##   ..- attr(*, "names")= chr [1:26821] "1" "2" "3" "7" ...
##  $ effects      : Named num [1:26821] -1.74e+09 1.33e+08 1.76e+08 6.89e+08 2.83e+08 ...
##   ..- attr(*, "label")= chr "Total ingresos del trabajo"
##   ..- attr(*, "format.stata")= chr "%10.0g"
##   ..- attr(*, "names")= chr [1:26821] "(Intercept)" "edad" "sexoMujer" "ciuo08Profesionales, científicos e intelectuales" ...
##  $ weights      : num [1:26821] 345.8 1056.5 41.6 730.4 270.1 ...
##  $ rank         : int 14
##  $ assign       : int [1:14] 0 1 2 3 3 3 3 3 3 3 ...
##  $ qr           :List of 5
##   ..$ qr   : num [1:26821, 1:14] -2.84e+03 1.15e-02 2.27e-03 9.52e-03 5.79e-03 ...
##   .. ..- attr(*, "assign")= int [1:14] 0 1 2 3 3 3 3 3 3 3 ...
##   .. ..- attr(*, "contrasts")=List of 3
##   .. .. ..$ sexo        : chr "contr.treatment"
##   .. .. ..$ ciuo08      : chr "contr.treatment"
##   .. .. ..$ est_conyugal: chr "contr.treatment"
##   .. ..- attr(*, "dimnames")=List of 2
##   .. .. ..$ : chr [1:26821] "1" "2" "3" "7" ...
##   .. .. ..$ : chr [1:14] "(Intercept)" "edad" "sexoMujer" "ciuo08Profesionales, científicos e intelectuales" ...
##   ..$ qraux: num [1:14] 1.01 1.01 1 1.01 1 ...
##   ..$ pivot: int [1:14] 1 2 3 4 5 6 7 8 9 10 ...
##   ..$ tol  : num 1e-07
##   ..$ rank : int 14
##   ..- attr(*, "class")= chr "qr"
##  $ df.residual  : int 26807
##  $ na.action    : 'omit' Named int [1:45114] 4 5 6 8 11 14 16 17 19 21 ...
##   ..- attr(*, "names")= chr [1:45114] "4" "5" "6" "8" ...
##  $ contrasts    :List of 3
##   ..$ sexo        : chr "contr.treatment"
##   ..$ ciuo08      : chr "contr.treatment"
##   ..$ est_conyugal: chr "contr.treatment"
##  $ xlevels      :List of 3
##   ..$ sexo        : chr [1:2] "Hombre" "Mujer"
##   ..$ ciuo08      : chr [1:11] "Directores, gerentes y administradores" "Profesionales, científicos e intelectuales" "Técnicos y profesionales de nivel medio" "Personal de apoyo administrativo" ...
##   ..$ est_conyugal: chr [1:2] "Con pareja" "Sin pareja"
##  $ call         : language lm(formula = ing_t_t ~ edad + sexo + ciuo08 + est_conyugal, data = datos,      weights = fact_cal_esi)
##  $ terms        :Classes 'terms', 'formula'  language ing_t_t ~ edad + sexo + ciuo08 + est_conyugal
##   .. ..- attr(*, "variables")= language list(ing_t_t, edad, sexo, ciuo08, est_conyugal)
##   .. ..- attr(*, "factors")= int [1:5, 1:4] 0 1 0 0 0 0 0 1 0 0 ...
##   .. .. ..- attr(*, "dimnames")=List of 2
##   .. .. .. ..$ : chr [1:5] "ing_t_t" "edad" "sexo" "ciuo08" ...
##   .. .. .. ..$ : chr [1:4] "edad" "sexo" "ciuo08" "est_conyugal"
##   .. ..- attr(*, "term.labels")= chr [1:4] "edad" "sexo" "ciuo08" "est_conyugal"
##   .. ..- attr(*, "order")= int [1:4] 1 1 1 1
##   .. ..- attr(*, "intercept")= int 1
##   .. ..- attr(*, "response")= int 1
##   .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
##   .. ..- attr(*, "predvars")= language list(ing_t_t, edad, sexo, ciuo08, est_conyugal)
##   .. ..- attr(*, "dataClasses")= Named chr [1:6] "numeric" "numeric" "factor" "factor" ...
##   .. .. ..- attr(*, "names")= chr [1:6] "ing_t_t" "edad" "sexo" "ciuo08" ...
##  $ model        :'data.frame':	26821 obs. of  6 variables:
##   ..$ ing_t_t     : num [1:26821] 320421 750000 900000 251701 140782 ...
##   .. ..- attr(*, "label")= chr "Total ingresos del trabajo"
##   .. ..- attr(*, "format.stata")= chr "%10.0g"
##   ..$ edad        : num [1:26821] 29 30 43 31 54 67 50 43 59 40 ...
##   .. ..- attr(*, "label")= chr "Edad de la persona"
##   .. ..- attr(*, "format.stata")= chr "%10.0g"
##   ..$ sexo        : Factor w/ 2 levels "Hombre","Mujer": 2 2 2 2 2 2 1 2 1 2 ...
##   .. ..- attr(*, "label")= chr "Sexo"
##   ..$ ciuo08      : Factor w/ 11 levels "Directores, gerentes y administradores",..: 5 2 2 7 5 9 4 4 8 5 ...
##   .. ..- attr(*, "label")= chr "b1. Grupo ocupacional según CIUO 08 - 1 dígito"
##   ..$ est_conyugal: Factor w/ 2 levels "Con pareja","Sin pareja": 1 2 2 1 1 1 1 2 1 2 ...
##   ..$ (weights)   : num [1:26821] 345.8 1056.5 41.6 730.4 270.1 ...
##   .. ..- attr(*, "label")= chr "Factor de expansión ESI con nueva calibración, proyecciones de población "
##   .. ..- attr(*, "format.stata")= chr "%10.0g"
##   ..- attr(*, "terms")=Classes 'terms', 'formula'  language ing_t_t ~ edad + sexo + ciuo08 + est_conyugal
##   .. .. ..- attr(*, "variables")= language list(ing_t_t, edad, sexo, ciuo08, est_conyugal)
##   .. .. ..- attr(*, "factors")= int [1:5, 1:4] 0 1 0 0 0 0 0 1 0 0 ...
##   .. .. .. ..- attr(*, "dimnames")=List of 2
##   .. .. .. .. ..$ : chr [1:5] "ing_t_t" "edad" "sexo" "ciuo08" ...
##   .. .. .. .. ..$ : chr [1:4] "edad" "sexo" "ciuo08" "est_conyugal"
##   .. .. ..- attr(*, "term.labels")= chr [1:4] "edad" "sexo" "ciuo08" "est_conyugal"
##   .. .. ..- attr(*, "order")= int [1:4] 1 1 1 1
##   .. .. ..- attr(*, "intercept")= int 1
##   .. .. ..- attr(*, "response")= int 1
##   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
##   .. .. ..- attr(*, "predvars")= language list(ing_t_t, edad, sexo, ciuo08, est_conyugal)
##   .. .. ..- attr(*, "dataClasses")= Named chr [1:6] "numeric" "numeric" "factor" "factor" ...
##   .. .. .. ..- attr(*, "names")= chr [1:6] "ing_t_t" "edad" "sexo" "ciuo08" ...
##   ..- attr(*, "na.action")= 'omit' Named int [1:45114] 4 5 6 8 11 14 16 17 19 21 ...
##   .. ..- attr(*, "names")= chr [1:45114] "4" "5" "6" "8" ...
##  - attr(*, "class")= chr "lm"

Luego esta summary, la cual hemos estado utilizando a lo largo del práctico

summary(modelo5)
## 
## Call:
## lm(formula = ing_t_t ~ edad + sexo + ciuo08 + est_conyugal, data = datos, 
##     weights = fact_cal_esi)
## 
## Weighted Residuals:
##       Min        1Q    Median        3Q       Max 
## -77029860  -3327667   -903696   1562319 261766339 
## 
## Coefficients:
##                                                                                       Estimate
## (Intercept)                                                                          1977240.3
## edad                                                                                    3645.5
## sexoMujer                                                                            -179308.4
## ciuo08Profesionales, científicos e intelectuales                                     -838561.6
## ciuo08Técnicos y profesionales de nivel medio                                       -1245145.4
## ciuo08Personal de apoyo administrativo                                              -1467502.5
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados            -1600971.8
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros -1752079.3
## ciuo08Artesanos y operarios de oficios                                              -1675160.8
## ciuo08Operadores de instalaciones, maquinas y ensambladores                         -1578961.8
## ciuo08Ocupaciones elementales                                                       -1718318.8
## ciuo08Otros no identificados                                                        -1042107.7
## ciuo08Sin clasificación                                                             -1693602.6
## est_conyugalSin pareja                                                               -113981.1
##                                                                                     Std. Error
## (Intercept)                                                                            23485.6
## edad                                                                                     290.2
## sexoMujer                                                                               7968.4
## ciuo08Profesionales, científicos e intelectuales                                       21117.6
## ciuo08Técnicos y profesionales de nivel medio                                          21664.4
## ciuo08Personal de apoyo administrativo                                                 24391.5
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados               20672.5
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros    30256.0
## ciuo08Artesanos y operarios de oficios                                                 21582.2
## ciuo08Operadores de instalaciones, maquinas y ensambladores                            23049.0
## ciuo08Ocupaciones elementales                                                          20781.6
## ciuo08Otros no identificados                                                           57343.4
## ciuo08Sin clasificación                                                               115936.4
## est_conyugalSin pareja                                                                  7609.8
##                                                                                     t value
## (Intercept)                                                                           84.19
## edad                                                                                  12.56
## sexoMujer                                                                            -22.50
## ciuo08Profesionales, científicos e intelectuales                                     -39.71
## ciuo08Técnicos y profesionales de nivel medio                                        -57.47
## ciuo08Personal de apoyo administrativo                                               -60.16
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados             -77.44
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros  -57.91
## ciuo08Artesanos y operarios de oficios                                               -77.62
## ciuo08Operadores de instalaciones, maquinas y ensambladores                          -68.50
## ciuo08Ocupaciones elementales                                                        -82.69
## ciuo08Otros no identificados                                                         -18.17
## ciuo08Sin clasificación                                                              -14.61
## est_conyugalSin pareja                                                               -14.98
##                                                                                     Pr(>|t|)
## (Intercept)                                                                           <2e-16
## edad                                                                                  <2e-16
## sexoMujer                                                                             <2e-16
## ciuo08Profesionales, científicos e intelectuales                                      <2e-16
## ciuo08Técnicos y profesionales de nivel medio                                         <2e-16
## ciuo08Personal de apoyo administrativo                                                <2e-16
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados              <2e-16
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros   <2e-16
## ciuo08Artesanos y operarios de oficios                                                <2e-16
## ciuo08Operadores de instalaciones, maquinas y ensambladores                           <2e-16
## ciuo08Ocupaciones elementales                                                         <2e-16
## ciuo08Otros no identificados                                                          <2e-16
## ciuo08Sin clasificación                                                               <2e-16
## est_conyugalSin pareja                                                                <2e-16
##                                                                                        
## (Intercept)                                                                         ***
## edad                                                                                ***
## sexoMujer                                                                           ***
## ciuo08Profesionales, científicos e intelectuales                                    ***
## ciuo08Técnicos y profesionales de nivel medio                                       ***
## ciuo08Personal de apoyo administrativo                                              ***
## ciuo08Trabajadores de los servicios y vendedores de comercios y mercados            ***
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros ***
## ciuo08Artesanos y operarios de oficios                                              ***
## ciuo08Operadores de instalaciones, maquinas y ensambladores                         ***
## ciuo08Ocupaciones elementales                                                       ***
## ciuo08Otros no identificados                                                        ***
## ciuo08Sin clasificación                                                             ***
## est_conyugalSin pareja                                                              ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10400000 on 26807 degrees of freedom
##   (45114 observations deleted due to missingness)
## Multiple R-squared:  0.3351,	Adjusted R-squared:  0.3348 
## F-statistic:  1039 on 13 and 26807 DF,  p-value: < 2.2e-16

¿Pero que pasa si queremos un elemento en particular del modelo?, como este es un objeto, se puede utilizar el símbolo $ para extraer información de este

modelo5$coefficients
##                                                                         (Intercept) 
##                                                                         1977240.278 
##                                                                                edad 
##                                                                            3645.488 
##                                                                           sexoMujer 
##                                                                         -179308.422 
##                                    ciuo08Profesionales, científicos e intelectuales 
##                                                                         -838561.638 
##                                       ciuo08Técnicos y profesionales de nivel medio 
##                                                                        -1245145.411 
##                                              ciuo08Personal de apoyo administrativo 
##                                                                        -1467502.547 
##            ciuo08Trabajadores de los servicios y vendedores de comercios y mercados 
##                                                                        -1600971.794 
## ciuo08Agricultores y trabajadores calificados agropecuarios, forestales y pesqueros 
##                                                                        -1752079.303 
##                                              ciuo08Artesanos y operarios de oficios 
##                                                                        -1675160.786 
##                         ciuo08Operadores de instalaciones, maquinas y ensambladores 
##                                                                        -1578961.831 
##                                                       ciuo08Ocupaciones elementales 
##                                                                        -1718318.836 
##                                                        ciuo08Otros no identificados 
##                                                                        -1042107.683 
##                                                             ciuo08Sin clasificación 
##                                                                        -1693602.555 
##                                                              est_conyugalSin pareja 
##                                                                         -113981.138
modelo5$coefficients[2]
##     edad 
## 3645.488
modelo5$coefficients["edad"]
##     edad 
## 3645.488

¿Qué otros elementos puedo extraer?, para eso str nos dirá estructura y elementos que podremos utilizar

str(summary(modelo5))
## List of 13
##  $ call         : language lm(formula = ing_t_t ~ edad + sexo + ciuo08 + est_conyugal, data = datos,      weights = fact_cal_esi)
##  $ terms        :Classes 'terms', 'formula'  language ing_t_t ~ edad + sexo + ciuo08 + est_conyugal
##   .. ..- attr(*, "variables")= language list(ing_t_t, edad, sexo, ciuo08, est_conyugal)
##   .. ..- attr(*, "factors")= int [1:5, 1:4] 0 1 0 0 0 0 0 1 0 0 ...
##   .. .. ..- attr(*, "dimnames")=List of 2
##   .. .. .. ..$ : chr [1:5] "ing_t_t" "edad" "sexo" "ciuo08" ...
##   .. .. .. ..$ : chr [1:4] "edad" "sexo" "ciuo08" "est_conyugal"
##   .. ..- attr(*, "term.labels")= chr [1:4] "edad" "sexo" "ciuo08" "est_conyugal"
##   .. ..- attr(*, "order")= int [1:4] 1 1 1 1
##   .. ..- attr(*, "intercept")= int 1
##   .. ..- attr(*, "response")= int 1
##   .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
##   .. ..- attr(*, "predvars")= language list(ing_t_t, edad, sexo, ciuo08, est_conyugal)
##   .. ..- attr(*, "dataClasses")= Named chr [1:6] "numeric" "numeric" "factor" "factor" ...
##   .. .. ..- attr(*, "names")= chr [1:6] "ing_t_t" "edad" "sexo" "ciuo08" ...
##  $ weights      : num [1:26821] 345.8 1056.5 41.6 730.4 270.1 ...
##  $ residuals    : Named num [1:26821] 329915 -6655171 -658927 430264 -4158305 ...
##   ..- attr(*, "label")= chr "Total ingresos del trabajo"
##   ..- attr(*, "format.stata")= chr "%10.0g"
##   ..- attr(*, "names")= chr [1:26821] "1" "2" "3" "7" ...
##  $ coefficients : num [1:14, 1:4] 1977240 3645 -179308 -838562 -1245145 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:14] "(Intercept)" "edad" "sexoMujer" "ciuo08Profesionales, científicos e intelectuales" ...
##   .. ..$ : chr [1:4] "Estimate" "Std. Error" "t value" "Pr(>|t|)"
##  $ aliased      : Named logi [1:14] FALSE FALSE FALSE FALSE FALSE FALSE ...
##   ..- attr(*, "names")= chr [1:14] "(Intercept)" "edad" "sexoMujer" "ciuo08Profesionales, científicos e intelectuales" ...
##  $ sigma        : num 10403029
##  $ df           : int [1:3] 14 26807 14
##  $ r.squared    : num 0.335
##  $ adj.r.squared: num 0.335
##  $ fstatistic   : Named num [1:3] 1039 13 26807
##   ..- attr(*, "names")= chr [1:3] "value" "numdf" "dendf"
##  $ cov.unscaled : num [1:14, 1:14] 5.10e-06 -3.68e-08 -1.59e-07 -3.41e-06 -3.38e-06 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:14] "(Intercept)" "edad" "sexoMujer" "ciuo08Profesionales, científicos e intelectuales" ...
##   .. ..$ : chr [1:14] "(Intercept)" "edad" "sexoMujer" "ciuo08Profesionales, científicos e intelectuales" ...
##  $ na.action    : 'omit' Named int [1:45114] 4 5 6 8 11 14 16 17 19 21 ...
##   ..- attr(*, "names")= chr [1:45114] "4" "5" "6" "8" ...
##  - attr(*, "class")= chr "summary.lm"
summary(modelo5)$fstatistic
##     value     numdf     dendf 
##  1039.257    13.000 26807.000
summary(modelo5)$r.squared
## [1] 0.3351

Para los valores predichos utilizaremos la función de sjPlot::get_model_data()

modelo5$fitted.values
get_model_data(modelo5, 
               type = "pred")
## $edad
## # Predicted values of Total ingresos del trabajo
## 
## edad | Predicted | group_col |               95% CI
## ---------------------------------------------------
##   10 |  2.01e+06 |      edad | [1.97e+06, 2.06e+06]
##   20 |  2.05e+06 |      edad | [2.01e+06, 2.09e+06]
##   30 |  2.09e+06 |      edad | [2.05e+06, 2.13e+06]
##   40 |  2.12e+06 |      edad | [2.09e+06, 2.16e+06]
##   60 |  2.20e+06 |      edad | [2.16e+06, 2.23e+06]
##   70 |  2.23e+06 |      edad | [2.19e+06, 2.27e+06]
##   80 |  2.27e+06 |      edad | [2.23e+06, 2.31e+06]
##  100 |  2.34e+06 |      edad | [2.29e+06, 2.39e+06]
## 
## Adjusted for:
## *         sexo =                                 Hombre
## *       ciuo08 = Directores, gerentes y administradores
## * est_conyugal =                             Con pareja
## 
## $sexo
## # Predicted values of Total ingresos del trabajo
## 
## sexo | Predicted | group_col |               95% CI
## ---------------------------------------------------
##    1 |  2.13e+06 |      sexo | [2.09e+06, 2.17e+06]
##    2 |  1.95e+06 |      sexo | [1.91e+06, 1.99e+06]
## 
## Adjusted for:
## *         edad =                                  42.13
## *       ciuo08 = Directores, gerentes y administradores
## * est_conyugal =                             Con pareja
## 
## $ciuo08
## # Predicted values of Total ingresos del trabajo
## 
## ciuo08 | Predicted | group_col |               95% CI
## -----------------------------------------------------
##      1 |  2.13e+06 |    ciuo08 | [2.09e+06, 2.17e+06]
##      2 |  1.29e+06 |    ciuo08 | [1.27e+06, 1.31e+06]
##      4 |  6.63e+05 |    ciuo08 | [6.32e+05, 6.95e+05]
##      5 |  5.30e+05 |    ciuo08 | [5.11e+05, 5.49e+05]
##      6 |  3.79e+05 |    ciuo08 | [3.32e+05, 4.26e+05]
##      7 |  4.56e+05 |    ciuo08 | [4.34e+05, 4.77e+05]
##      8 |  5.52e+05 |    ciuo08 | [5.26e+05, 5.78e+05]
##     11 |  4.37e+05 |    ciuo08 | [2.13e+05, 6.61e+05]
## 
## Adjusted for:
## *         edad =      42.13
## *         sexo =     Hombre
## * est_conyugal = Con pareja
## 
## $est_conyugal
## # Predicted values of Total ingresos del trabajo
## 
## est_conyugal | Predicted |    group_col |               95% CI
## --------------------------------------------------------------
##            1 |  2.13e+06 | est_conyugal | [2.09e+06, 2.17e+06]
##            2 |  2.02e+06 | est_conyugal | [1.98e+06, 2.06e+06]
## 
## Adjusted for:
## *   edad =                                  42.13
## *   sexo =                                 Hombre
## * ciuo08 = Directores, gerentes y administradores
get_model_data(modelo5, 
               type = "pred", 
               terms = "sexo")
## # Predicted values of Total ingresos del trabajo
## 
## sexo | Predicted | group_col |               95% CI
## ---------------------------------------------------
##    1 |  2.13e+06 |         1 | [2.09e+06, 2.17e+06]
##    2 |  1.95e+06 |         1 | [1.91e+06, 1.99e+06]
## 
## Adjusted for:
## *         edad =                                  42.13
## *       ciuo08 = Directores, gerentes y administradores
## * est_conyugal =                             Con pareja

BONUS

Con broom, podemos convertir objetos en dataframes, lo cual nos permitirá presentarlo con tab_df de sjPlot

print <- broom::augment(modelo5) 
tab_df(print, file = "output/data/modelo.doc")

Esto nos lleva al último punto del práctico, la visualización

6. Visualización

Si bien summary es un código muy útil para visualizar los modelos creados, el problema es que al observar el objeto creado, no es muy presentable para informes, por eso usaremos la función tab_model de sjPlot, que tiene la siguiente estructura:

sjPlot::tab_model(objeto_creado, 
                  show.ci= F/T,  # este argumento muestra los intervalos de confianza
                  show.p = F/T, #Este argumento muestra los valores p
                  show.obs = F/T, # Este argumento muestra las observaciones
                  title = "Título de la tabla a crear",
                  digits = 2, # muestra la cantidad de dígitos que tednrá la tabla
                  p.style = c("numeric", "stars", "numeric_stars", "scientific", "scientific_stars"), #cómo representa el pvalue 
                  encoding = "UTF-8",  # evita errores en caracteres
                  file = "output/figures/reg1_tab.doc") # guarda lo creado automáticamente

Para visualizar sólo un modelo puede hacerse de esta forma y en nuestros datos se vería así:

sjPlot::tab_model(modelo0, 
                  show.ci=FALSE,  
                  encoding = "UTF-8", 
                  file = "output/figures/regnc_tab.doc")
  Total ingresos del
trabajo
Predictors Estimates p
(Intercept) 256201.13 <0.001
Observations 71935
R2 / R2 adjusted 0.000 / 0.000

Las ventajas de este código es que se puede especificar el encoding, así como exportar la tabla, cuya presentación es superior al output de la función summary()

Pero además se pueden incluir más modelos creados en una sola tabla, para eso usaremos nuevamente la función tab_model de sjPlot

sjPlot::tab_model(list(modelo0, modelo1, modelo2), # los modelos estimados
  show.ci=FALSE, # no mostrar intervalo de confianza (por defecto lo hace)
  p.style = "stars", # asteriscos de significación estadística
  dv.labels = c("Modelo 1", "Modelo 2", "Modelo 3"), # etiquetas de modelos o variables dep.
  string.pred = "Predictores", string.est = "β", # nombre predictores y símbolo beta en tabla
  encoding =  "UTF-8",
  file = "output/figures/reg_tab_all.doc")
  Modelo 1 Modelo 2 Modelo 3
Predictores ß ß ß
(Intercept) 256201.13 *** 127658.05 *** 337663.87 ***
Edad de la persona 3511.38 ***
Sexo: Mujer -160784.29 ***
Observations 71935 71935 71935
R2 / R2 adjusted 0.000 / 0.000 0.019 / 0.019 0.021 / 0.021
* p<0.05   ** p<0.01   *** p<0.001

También se pueden especificar las etiquetas con dv.labels y cómo queremos que nos incorpore la significación estadística, con p.style

Para visualizar o graficar los coeficientes de regresión para poder observar el impacto de cada variable en el modelo utilizaremos la función plot_model de sjPlot, su estructura es la siguiente:

sjPlot::plot_model(objeto_creado, 
                   ci.lvl = "", #estima el nivel de confianza 
                   title = "",  # es el título
                   show.p = T, # nos muestra los valores p
                   show.values =  T, # nos muestra los valores
                   vline.color = "") # color de la recta vertical

Esto visualizado con nuestro modelo se ve así:

sjPlot::plot_model(modelo5, 
                   show.p = T,
                   show.values =  T,
                   ci.lvl = c(0.95), 
                   title = "Estimación de predictores", 
                   vline.color = "purple")

Terminamos por este práctico ¡Pero aún falta la regresión logística!, para eso nos vemos en la próxima clase

7. Resumen

En este práctico aprendimos a

  • Crear y visualizar regresiones lineales y logísticas binomiales
  • Incorporar predictores categóricos
  • Crear y visualizar regresiones múltiples

8. Recursos

Previous
Next