Cargamos paquetes y base

Para el proyecto final hay puntaje por formato de gráficos, tablas, regresiones, entre otros. A continuación se les muestra algunos paquetes y funciones que les serán de ayuda para el informe y presentación.

library(data.table)
library(htmltools)
library(stargazer)
library(texreg)

Utilizaremos la base de la CASEN 2020 de Valparaíso como ejemplo. Supongamos que queremos estudiar el mercado laboral en chile:

casen <- fread('Clase 11/CASEn 2020 Valpo.csv')
casen <- casen[activ == 1 & edad >= 15 & ocup_inf != 9 & inmigrante != 9,
               .(ytrabajocor,sexo,edad,esc2,inmigrante,ocup_inf)]
casen[,sexo := factor(sexo,levels = 1:2, labels = c('Hombre','Mujer'))]
casen[,ocup_inf := factor(ocup_inf, levels = 1:2, labels = c('Formal','Informal'))]
casen[,inmigrante := factor(inmigrante,levels = 0:1,c('Chileno','Inmigrante'))]


Paquete stargazer

Veamos primero como hacer resumenes estadísticos. El paquete “stargazer” les puede ser util para esto. Aquí un pequeño ejemplo.

resumen <- stargazer(casen,type = 'html',summary = T,digits = 0)
## 
## <table style="text-align:center"><tr><td colspan="8" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Statistic</td><td>N</td><td>Mean</td><td>St. Dev.</td><td>Min</td><td>Pctl(25)</td><td>Pctl(75)</td><td>Max</td></tr>
## <tr><td colspan="8" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">ytrabajocor</td><td>5,824</td><td>589,796</td><td>702,532</td><td>250</td><td>279,500</td><td>663,333</td><td>17,000,000</td></tr>
## <tr><td style="text-align:left">edad</td><td>6,412</td><td>44</td><td>14</td><td>15</td><td>32</td><td>55</td><td>99</td></tr>
## <tr><td style="text-align:left">esc2</td><td>6,305</td><td>13</td><td>4</td><td>0</td><td>12</td><td>16</td><td>27</td></tr>
## <tr><td colspan="8" style="border-bottom: 1px solid black"></td></tr></table>
HTML(resumen)

StatisticNMeanSt. Dev.MinPctl(25)Pctl(75)Max
ytrabajocor5,824589,796702,532250279,500663,33317,000,000
edad6,412441415325599
esc26,3051340121627


Si desean mejorar el aspecto de la tabla:

resumen2 <- stargazer(casen,type = 'html',summary = T,digits = 0,
                      title = 'Resumen estadístico principales variables',
                      covariate.labels = c('Ingreso total<br>del trabajo',
                                           'Edad','Años de<br>educación'),
                      flip = T,
                      header=FALSE,single.row = TRUE,no.space = TRUE,
                      column.sep.width = "20pt",font.size = "small")
## 
## <table style="text-align:center"><caption><strong>Resumen estadístico principales variables</strong></caption>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Statistic</td><td>Ingreso total<br>del trabajo</td><td>Edad</td><td>Años de<br>educación</td></tr>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">N</td><td>5,824</td><td>6,412</td><td>6,305</td></tr>
## <tr><td style="text-align:left">Mean</td><td>589,796</td><td>44</td><td>13</td></tr>
## <tr><td style="text-align:left">St. Dev.</td><td>702,532</td><td>14</td><td>4</td></tr>
## <tr><td style="text-align:left">Min</td><td>250</td><td>15</td><td>0</td></tr>
## <tr><td style="text-align:left">Pctl(25)</td><td>279,500</td><td>32</td><td>12</td></tr>
## <tr><td style="text-align:left">Pctl(75)</td><td>663,333</td><td>55</td><td>16</td></tr>
## <tr><td style="text-align:left">Max</td><td>17,000,000</td><td>99</td><td>27</td></tr>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr></table>
HTML(resumen2)

Resumen estadístico principales variables
StatisticIngreso total
del trabajo
EdadAños de
educación
N5,8246,4126,305
Mean589,7964413
St. Dev.702,532144
Min250150
Pctl(25)279,5003212
Pctl(75)663,3335516
Max17,000,0009927


Lo importante es que mejoren lo más posible el formato de la tabla. Les recomiendo ver el resto de argumentos de la función. Si luego desea exportar la tabla, utiliza el argumento “out” de la función de stargazer y el formato al cua desea exportar.

stargazer(casen,type = 'html',summary = T,digits = 0,title = 'Resumen estadístico principales variables',
          covariate.labels = c('Ingreso total<br>del trabajo','Edad','Años de<br>educación'),flip = T,
          out = 'Resumen estadístico.html')
## 
## <table style="text-align:center"><caption><strong>Resumen estadístico principales variables</strong></caption>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Statistic</td><td>Ingreso total<br>del trabajo</td><td>Edad</td><td>Años de<br>educación</td></tr>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">N</td><td>5,824</td><td>6,412</td><td>6,305</td></tr>
## <tr><td style="text-align:left">Mean</td><td>589,796</td><td>44</td><td>13</td></tr>
## <tr><td style="text-align:left">St. Dev.</td><td>702,532</td><td>14</td><td>4</td></tr>
## <tr><td style="text-align:left">Min</td><td>250</td><td>15</td><td>0</td></tr>
## <tr><td style="text-align:left">Pctl(25)</td><td>279,500</td><td>32</td><td>12</td></tr>
## <tr><td style="text-align:left">Pctl(75)</td><td>663,333</td><td>55</td><td>16</td></tr>
## <tr><td style="text-align:left">Max</td><td>17,000,000</td><td>99</td><td>27</td></tr>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr></table>


Paquete texreg

Supongamos que deseamos hacer una regresión de las variables independientes incluidas en la base sobre el nivel de ingreso del trabajo.

f1 <- formula(ytrabajocor ~ edad + esc2)
reg01 <- lm(formula = f1, data = casen)
summary(reg01)
## 
## Call:
## lm(formula = f1, data = casen)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1269438  -303748   -95691   133851 15545056 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -931845.6    48512.3  -19.21   <2e-16 ***
## edad           8893.8      636.9   13.96   <2e-16 ***
## esc2          86975.2     2417.0   35.98   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 631000 on 5724 degrees of freedom
##   (685 observations deleted due to missingness)
## Multiple R-squared:  0.1859, Adjusted R-squared:  0.1856 
## F-statistic: 653.6 on 2 and 5724 DF,  p-value: < 2.2e-16

La idea es que no muestren este tipo de output, sino algo mas estilizado. El paquete texreg puede serles de ayuda.

regresion1 <- htmlreg(reg01)
HTML(regresion1)
Statistical models
  Model 1
(Intercept) -931845.62***
  (48512.32)
edad 8893.81***
  (636.94)
esc2 86975.21***
  (2417.02)
R2 0.19
Adj. R2 0.19
Num. obs. 5727
***p < 0.001; **p < 0.01; *p < 0.05

Como les comenté en las reuniones, sería bueno que tengan más de una especificación del modelo para ver que tan robustos son sus resultados (¿cambia la magnitud y senntido de sus variables independientes de interés si incluyen más variables de control?).

f2 <- formula(ytrabajocor ~ edad + esc2 + sexo + ocup_inf + inmigrante)
reg02 <- lm(formula = f2, data = casen)
regresion2 <- htmlreg(list(reg01,reg02))
HTML(regresion2)
Statistical models
  Model 1 Model 2
(Intercept) -931845.62*** -693161.14***
  (48512.32) (49123.28)
edad 8893.81*** 8608.28***
  (636.94) (621.51)
esc2 86975.21*** 82794.43***
  (2417.02) (2437.88)
sexoMujer   -210514.64***
    (16384.36)
ocup_infInformal   -230666.28***
    (18436.57)
inmigranteInmigrante   -120098.62**
    (39153.76)
R2 0.19 0.23
Adj. R2 0.19 0.23
Num. obs. 5727 5727
***p < 0.001; **p < 0.01; *p < 0.05

No se olviden que no solo importa tener las regresiones, sino también interpretar los coeficientes y explicar los mecanismos por los cuales creen que sus variables de interés afectan su variable dependiente. Nuevamente, se recomienda ver el resto de argumentos de la función “htmlreg” para ver que cosas se pueden mejorar en la tabla (título, nombre de coeficientes, nombre de los modelos, etc). Para exportar, mismo procedimiento que para el resumen estadístico.

htmlreg(list(reg01,reg02),file = 'regresion01.html')