Os dados em 401K.RData são usados para estudar a relação entre a participação em um plano de pensão dos Estados Unidos e a generosidade do plano. A variável \(prate\) é a percentagem de trabalhadores com uma conta ativa; essa é a variável que gostaríamos de explicar. A medida de generosidade é a taxa de complementação do plano, \(mrate\). Essa variável dá a quantidade média com a qual a firma contribui, em cada plano do trabalhador, para cada $ 1 de contribuição do trabalhador. Por exemplo, se \(mrate = 0,50\), cada \(\$ 1\) de contribuição do trabalhador é complementado por uma contribuição de \(50\) centavos pela firma.
dir.dados <- "G:/Meu Drive/EACH/Disciplinas/ACH3657 - Métodos Quantitativos para Avaliação de Políticas Públicas/Aulas/dados/wooldridge"
load(file.path(dir.dados, "401k.RData"))
Vamos mudar o nome dos conjuntos de dados e fazer uma visualização do seu conteúdo:
dados.401k <- data
desc.401k <- desc
desc.401k
## variable label
## 1 prate participation rate, percent
## 2 mrate 401k plan match rate
## 3 totpart total 401k participants
## 4 totelg total eligible for 401k plan
## 5 age age of 401k plan
## 6 totemp total number of firm employees
## 7 sole = 1 if 401k is firm's sole plan
## 8 ltotemp log of totemp
head(dados.401k)
## prate mrate totpart totelg age totemp sole ltotemp
## 1 26.1 0.21 1653 6322 8 8709 0 9.072112
## 2 100.0 1.42 262 262 6 315 1 5.752573
## 3 97.6 0.91 166 170 10 275 1 5.616771
## 4 100.0 0.42 257 257 7 500 0 6.214608
## 5 82.5 0.53 591 716 28 933 1 6.838405
## 6 100.0 1.82 92 92 7 143 1 4.962845
Obs. Visualize melhor os data frames no RStudio com:
View(desc.401k)
View(dados.401k)
Uma outra forma de inspeção:
str(dados.401k)
## 'data.frame': 1534 obs. of 8 variables:
## $ prate : num 26.1 100 97.6 100 82.5 ...
## $ mrate : num 0.21 1.42 0.91 0.42 0.53 ...
## $ totpart: num 1653 262 166 257 591 ...
## $ totelg : num 6322 262 170 257 716 ...
## $ age : int 8 6 10 7 28 7 31 13 21 10 ...
## $ totemp : num 8709 315 275 500 933 ...
## $ sole : int 0 1 1 0 1 1 1 0 1 1 ...
## $ ltotemp: num 9.07 5.75 5.62 6.21 6.84 ...
## - attr(*, "datalabel")= chr ""
## - attr(*, "time.stamp")= chr "25 Jun 2011 23:03"
## - attr(*, "formats")= chr "%7.0g" "%7.0g" "%7.0g" "%7.0g" ...
## - attr(*, "types")= int 254 254 254 254 251 254 251 254
## - attr(*, "val.labels")= chr "" "" "" "" ...
## - attr(*, "var.labels")= chr "participation rate, percent" "401k plan match rate" "total 401k participants" "total eligible for 401k plan" ...
## - attr(*, "version")= int 10
summary(dados.401k)
## prate mrate totpart totelg
## Min. : 3.00 Min. :0.0100 Min. : 50.0 Min. : 51.0
## 1st Qu.: 78.03 1st Qu.:0.3000 1st Qu.: 156.2 1st Qu.: 176.0
## Median : 95.70 Median :0.4600 Median : 276.0 Median : 330.0
## Mean : 87.36 Mean :0.7315 Mean : 1354.2 Mean : 1628.5
## 3rd Qu.:100.00 3rd Qu.:0.8300 3rd Qu.: 749.5 3rd Qu.: 890.5
## Max. :100.00 Max. :4.9100 Max. :58811.0 Max. :70429.0
## age totemp sole ltotemp
## Min. : 4.00 Min. : 58 Min. :0.0000 Min. : 4.060
## 1st Qu.: 7.00 1st Qu.: 261 1st Qu.:0.0000 1st Qu.: 5.565
## Median : 9.00 Median : 588 Median :0.0000 Median : 6.377
## Mean :13.18 Mean : 3568 Mean :0.4876 Mean : 6.686
## 3rd Qu.:18.00 3rd Qu.: 1804 3rd Qu.:1.0000 3rd Qu.: 7.498
## Max. :51.00 Max. :144387 Max. :1.0000 Max. :11.880
\[\hat{prate} = \hat{\beta_0} + \hat{\beta_1} mrate\]
e relate seus resultados juntamente com o tamanho da amostra.
lm(prate ~ mrate , data = dados.401k)
##
## Call:
## lm(formula = prate ~ mrate, data = dados.401k)
##
## Coefficients:
## (Intercept) mrate
## 83.075 5.861
Vejamos com mais detalhes:
modelo <- lm(prate ~ mrate , data = dados.401k)
summary(modelo)
##
## Call:
## lm(formula = prate ~ mrate, data = dados.401k)
##
## Residuals:
## Min 1Q Median 3Q Max
## -82.303 -8.184 5.178 12.712 16.807
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 83.0755 0.5633 147.48 <2e-16 ***
## mrate 5.8611 0.5270 11.12 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 16.09 on 1532 degrees of freedom
## Multiple R-squared: 0.0747, Adjusted R-squared: 0.0741
## F-statistic: 123.7 on 1 and 1532 DF, p-value: < 2.2e-16
coefficients(modelo)
## (Intercept) mrate
## 83.075455 5.861079
83.075455 é o valor esperado da taxa de particpação (prate) quando a taxa de contribuição (mrate) é zero.
\[ \hat{prate} = \beta_0 + \beta_1 \ mrate \] \[ \hat{prate} = 83.07 + 5.86 \ mrate\] Subtituindo \(mrate = 3.5\), obtemos:
\[ \hat{prate} = 83.07 + 5.86 \times 3.5 = 103.58 \]
Ou:
modelo$coefficients[1] + modelo$coefficients[2] * 3.5
## (Intercept)
## 103.5892
Os dados em ceosal2.RData contêm informações sobre chefes-executivos (CEOs) de corporações dos Estados Unidos. A variável \(salary\) é a compensação anual, em milhares de dólares, e \(ceoten\) é o número de anos na condição de CEO na companhia.
load(file.path(dir.dados, "ceosal2.RData"))
dados.ceosal <- data
desc.ceosal <- desc
head(dados.ceosal)
## salary age college grad comten ceoten sales profits mktval lsalary
## 1 1161 49 1 1 9 2 6200 966 23200 7.057037
## 2 600 43 1 1 10 10 283 48 1100 6.396930
## 3 379 51 1 1 9 3 169 40 1100 5.937536
## 4 651 55 1 0 22 22 1100 -54 1000 6.478509
## 5 497 44 1 1 8 6 351 28 387 6.208590
## 6 1067 64 1 1 7 7 19000 614 3900 6.972606
## lsales lmktval comtensq ceotensq profmarg
## 1 8.732305 10.051908 81 4 15.580646
## 2 5.645447 7.003066 100 100 16.961130
## 3 5.129899 7.003066 81 9 23.668638
## 4 7.003066 6.907755 484 484 -4.909091
## 5 5.860786 5.958425 64 36 7.977208
## 6 9.852194 8.268732 49 49 3.231579
desc.ceosal
## variable label
## 1 salary 1990 compensation, $1000s
## 2 age in years
## 3 college =1 if attended college
## 4 grad =1 if attended graduate school
## 5 comten years with company
## 6 ceoten years as ceo with company
## 7 sales 1990 firm sales, millions
## 8 profits 1990 profits, millions
## 9 mktval market value, end 1990, mills.
## 10 lsalary log(salary)
## 11 lsales log(sales)
## 12 lmktval log(mktval)
## 13 comtensq comten^2
## 14 ceotensq ceoten^2
## 15 profmarg profits as % of sales
summary(dados.ceosal$salary)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 100.0 471.0 707.0 865.9 1119.0 5299.0
summary(dados.ceosal$ceoten)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 3.000 6.000 7.955 11.000 37.000
table(dados.ceosal == 0)
##
## FALSE TRUE
## 2557 98
max(dados.ceosal$ceoten)
## [1] 37
\[salary = \beta_0 + \beta_1 \ ceoten + u\]
e relate seus resultados na forma usual.
modelo.ceo <- lm(salary ~ ceoten, data = dados.ceosal)
summary(modelo.ceo)
##
## Call:
## lm(formula = salary ~ ceoten, data = dados.ceosal)
##
## Residuals:
## Min 1Q Median 3Q Max
## -977.8 -345.9 -169.4 263.8 4373.9
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 772.426 65.676 11.761 <2e-16 ***
## ceoten 11.746 6.148 1.911 0.0577 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 583.2 on 175 degrees of freedom
## Multiple R-squared: 0.02043, Adjusted R-squared: 0.01484
## F-statistic: 3.651 on 1 and 175 DF, p-value: 0.05769
Essa é justamente a intepretação de \(\beta_1\) (no caso, \(ceoten\)). Assim, o aumento esperado no salário dado um ano a mais como CEO é:
coefficients(modelo.ceo)[2]
## ceoten
## 11.74613
Use os dados em sleep75.RData, de Biddle e Hamermesh (1990), para estudar se há relação entre o tempo gasto dormindo por semana e o tempo gasto em um trabalho pago.
load(file.path(dir.dados, "sleep75.RData"))
dados.sleep <- data
desc.sleep <- desc
head(dados.sleep)
## age black case clerical construc educ earns74 gdhlth inlf leis1 leis2
## 1 32 0 1 0 0 12 0 0 1 3529 3479
## 2 31 0 2 0 0 14 9500 1 1 2140 2140
## 3 44 0 3 0 0 17 42500 1 1 4595 4505
## 4 30 0 4 0 0 12 42500 1 1 3211 3211
## 5 64 0 5 0 0 14 2500 1 1 4052 4007
## 6 41 0 6 0 0 12 0 1 1 4812 4797
## leis3 smsa lhrwage lothinc male marr prot rlxall selfe sleep slpnaps
## 1 3479 0 1.955861 10.075380 1 1 1 3163 0 3113 3163
## 2 2140 0 0.357674 0.000000 1 0 1 2920 1 2920 2920
## 3 4227 1 3.021887 0.000000 1 1 0 3038 1 2670 2760
## 4 3211 0 2.263844 0.000000 0 1 1 3083 1 3083 3083
## 5 4007 0 1.011601 9.328213 1 1 1 3493 0 3448 3493
## 6 4797 0 2.957511 10.657280 1 1 1 4078 0 4063 4078
## south spsepay spwrk75 totwrk union worknrm workscnd exper yngkid yrsmarr
## 1 0 0 0 3438 0 3438 0 14 0 13
## 2 1 0 0 5020 0 5020 0 11 0 0
## 3 0 20000 1 2815 0 2815 0 21 0 0
## 4 0 5000 1 3786 0 3786 0 12 0 12
## 5 0 2400 1 2580 0 2580 0 44 0 33
## 6 0 0 0 1205 0 0 1205 23 0 23
## hrwage agesq
## 1 7.070004 1024
## 2 1.429999 961
## 3 20.529997 1936
## 4 9.619998 900
## 5 2.750000 4096
## 6 19.249998 1681
desc.sleep
## variable label
## 1 age in years
## 2 black =1 if black
## 3 case identifier
## 4 clerical =1 if clerical worker
## 5 construc =1 if construction worker
## 6 educ years of schooling
## 7 earns74 total earnings, 1974
## 8 gdhlth =1 if in good or excel. health
## 9 inlf =1 if in labor force
## 10 leis1 sleep - totwrk
## 11 leis2 slpnaps - totwrk
## 12 leis3 rlxall - totwrk
## 13 smsa =1 if live in smsa
## 14 lhrwage log hourly wage
## 15 lothinc log othinc, unless othinc < 0
## 16 male =1 if male
## 17 marr =1 if married
## 18 prot =1 if Protestant
## 19 rlxall slpnaps + personal activs
## 20 selfe =1 if self employed
## 21 sleep mins sleep at night, per wk
## 22 slpnaps minutes sleep, inc. naps
## 23 south =1 if live in south
## 24 spsepay spousal wage income
## 25 spwrk75 =1 if spouse works
## 26 totwrk mins worked per week
## 27 union =1 if belong to union
## 28 worknrm mins work main job
## 29 workscnd mins work second job
## 30 exper age - educ - 6
## 31 yngkid =1 if children < 3 present
## 32 yrsmarr years married
## 33 hrwage hourly wage
## 34 agesq age^2
Queremos estimar o modelo
\[sleep = \beta_0 + \beta_1 \ totwrk + u\]
em que \(sleep\) corresponde a minutos gastos dormindo a noite por semana, e \(totwrk\) e o total de minutos trabalhados durante a semana.