library(wooldridge)
library(fixest)
library(ggplot2)
library(data.table)
library(modelsummary)
Aula de laboratório - Variáveis Instrumentais
Retornos da educação para mulheres casadas
Vamos analizar os retornos de educação para mulheres casadas com os dados mroz
do pacote wooldridge
. Filtraremos para usar somente as observações que onde salário não seja faltante. Como variável instrumental para educação usaremos a educação do pai. Você acha que este é um bom instrumento? Por quê?
data("mroz")
<- mroz[!is.na(mroz$wage), ] df
Crie uma tabela com as estatíticas descritivas dos dados. Vamos usar o Copilot para criar o código para nós. Uma sugestão de prompt é:
Prompt | |
---|---|
usando a linguagem R, crie uma tabela de estatísticas descritivas para todas as variáveis do data frame df utilizando a função datasummary do pacote modelsummary. As estatísticas devem ser número de observações, número de valores únicos, média e desvio padrão. |
Código
datasummary(All(df) ~ Ncol + NUnique + Mean + SD + Min + Median + Max, data = df)
Ncol | NUnique | Mean | SD | Min | Median | Max | |
---|---|---|---|---|---|---|---|
inlf | (N = 428) | 1 | 1.00 | 0.00 | 1.00 | 1.00 | 1.00 |
hours | (N = 428) | 305 | 1302.93 | 776.27 | 12.00 | 1365.50 | 4950.00 |
kidslt6 | (N = 428) | 3 | 0.14 | 0.39 | 0.00 | 0.00 | 2.00 |
kidsge6 | (N = 428) | 7 | 1.35 | 1.32 | 0.00 | 1.00 | 8.00 |
age | (N = 428) | 31 | 41.97 | 7.72 | 30.00 | 42.00 | 60.00 |
educ | (N = 428) | 13 | 12.66 | 2.29 | 5.00 | 12.00 | 17.00 |
wage | (N = 428) | 373 | 4.18 | 3.31 | 0.13 | 3.48 | 25.00 |
repwage | (N = 428) | 164 | 3.19 | 2.44 | 0.00 | 3.20 | 9.98 |
hushrs | (N = 428) | 277 | 2233.46 | 582.91 | 175.00 | 2106.50 | 5010.00 |
husage | (N = 428) | 31 | 44.61 | 7.95 | 30.00 | 45.00 | 60.00 |
huseduc | (N = 428) | 14 | 12.61 | 3.04 | 4.00 | 12.00 | 17.00 |
huswage | (N = 428) | 401 | 7.23 | 3.57 | 0.51 | 6.68 | 26.58 |
faminc | (N = 428) | 380 | 24130.42 | 11671.26 | 2400.00 | 21961.00 | 91044.00 |
mtr | (N = 428) | 22 | 0.67 | 0.08 | 0.44 | 0.69 | 0.94 |
motheduc | (N = 428) | 9 | 9.52 | 3.31 | 0.00 | 10.00 | 17.00 |
fatheduc | (N = 428) | 9 | 8.99 | 3.52 | 0.00 | 7.00 | 17.00 |
unem | (N = 428) | 7 | 8.55 | 3.03 | 3.00 | 7.50 | 14.00 |
city | (N = 428) | 2 | 0.64 | 0.48 | 0.00 | 1.00 | 1.00 |
exper | (N = 428) | 39 | 13.04 | 8.06 | 0.00 | 12.00 | 38.00 |
nwifeinc | (N = 428) | 425 | 18.94 | 10.59 | -0.03 | 17.08 | 91.00 |
lwage | (N = 428) | 373 | 1.19 | 0.72 | -2.05 | 1.25 | 3.22 |
expersq | (N = 428) | 39 | 234.72 | 270.04 | 0.00 | 144.00 | 1444.00 |
Regressão simples
Estimamos primeiro um MQO simples com a função feols
do pacote fixest
.
Prompt | |
---|---|
estime um modelo linear com a função feols do pacote fixest. A variável dependente é o logaritmo do salário (lwage) e a variável independente é o número de anos de educação (educ). |
Código
<- feols(lwage ~ educ, data = df) s_ols
Leia a ajuda da função feols
(?feols) e descubra como especificar um modelo de variáveis instrumentais (IVs).
Em seguida rode a regressão com fatheduc
como instrumento para educ
, e apresente os resultados das duas regressões lado a lado em uma tabela.
Prompt | |
---|---|
em R, usando a função feols, estime um modelo linear lwage contra educ onde a variavel instrumental para educ será fatheduc. Apresente os resultados das duas regressões lado a lado em uma tabela usando a função etable. |
Código
<- feols(lwage ~ 1 | educ ~ fatheduc, data = df)
iv_ols etable(list(OLS = s_ols, VI = iv_ols))
OLS VI
Dependent Var.: lwage lwage
Constant -0.1852 (0.1852) 0.4411 (0.4461)
educ 0.1086*** (0.0144) 0.0592. (0.0351)
_______________ __________________ ________________
S.E. type IID IID
Observations 428 428
R2 0.11788 0.09344
Adj. R2 0.11581 0.09131
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Adicionando regressores exógenos
A abordagem de variáveis instrumentais pode facilmente ser estendida para a inclusão de outros regressores exógenos na regressão.
Inclua em ambas as regressões anteriores os regressores experiência (exper
) e experiência ao quadrado (expersq
). Faça também um modelo de MQ2E manualmente e apresente os resultados.
Prompt | |
---|---|
inclua nos dois modelos anteriores os regressores exper e expersq. Em seguida, faça um modelo de minimos quadrados em dois estagios manualmente e apresente os resultados. |
Código
<- feols(lwage ~ educ + exper + expersq, data = df)
s_ols <- feols(lwage ~ exper + expersq | educ ~ fatheduc, data = df)
iv_ols <- feols(educ ~ exper + expersq + fatheduc, data = df)
stage_1 <- df
mq2e_df $pred_educ <- fitted(stage_1)
mq2e_df<- feols(lwage ~ pred_educ + exper + expersq, data = mq2e_df)
stage_2 etable(list(OLS = s_ols, MQ2E = stage_2, VI = iv_ols))
OLS MQ2E VI
Dependent Var.: lwage lwage lwage
Constant -0.5220** (0.1986) -0.0611 (0.4594) -0.0611 (0.4364)
educ 0.1075*** (0.0141) 0.0702* (0.0344)
exper 0.0416** (0.0132) 0.0437** (0.0141) 0.0437** (0.0134)
expersq -0.0008* (0.0004) -0.0009* (0.0004) -0.0009* (0.0004)
pred_educ 0.0702. (0.0363)
_______________ __________________ _________________ _________________
S.E. type IID IID IID
Observations 428 428 428
R2 0.15682 0.05041 0.14302
Adj. R2 0.15085 0.04369 0.13696
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Teste de endogeneidade de Hausman
Tanto MQO quanto MQ2E serão consistentes se todas as variáveis forem exógenas. Se os estimadores diferirem de forma significativa, concluímos que o regressor era de fato endógeno (qual hipótese estamos fazendo aqui?).
Portanto, é sempre uma boa ideia calcular tanto o MQO quanto o MQ2E e compará-los. Para determinar se as estimativas são estatisticamente diferentes, então um teste de regressão é mais adequado. O teste de Hausman faz esse papel.
O teste é separado em dois passos:
estime a forma reduzida de variável endógena e salve os resíduos
inclua estes resíduos como um regressor adicional na equação estrutural
Um teste t ou F no coeficiente dos resíduos nos fornecerá evidência sobre a endogeneidade do regressor caso rejeite-se a hipótese nula.
Implemente o teste de Hausman
$resid_educ <- residuals(stage_1)
mq2e_df<- feols(lwage ~ educ + exper + expersq + resid_educ, data = mq2e_df)
hausman summary(hausman)
OLS estimation, Dep. Var.: lwage
Observations: 428
Standard-errors: IID
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.061117 0.432695 -0.141247 0.887742
educ 0.070226 0.034147 2.056606 0.040337 *
exper 0.043672 0.013285 3.287296 0.001096 **
expersq -0.000882 0.000397 -2.219417 0.026988 *
resid_educ 0.044974 0.037514 1.198879 0.231246
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.662175 Adj. R2: 0.151729
Teste de restrições sobreidentificadoras
Se temos mais instrumentos válidos que variáveis endógenas, a princípio pode-se usar qualquer ou todos os instrumentos. Se todos forem de fato válidos, então, usar todos trará ganhos de eficiência no estimador MQ2E.
Estime a equação estrutural por MQ2E, usando mais instrumentos que variáveis endógenas, e salve os resíduos \(\hat u_1\)
Regrida \(\hat u_1\) em todas as variáveis exógenas e salve o \(R^2\) desta regressão
Sob a hipótese nula de que todas as VI são exógenas, a estatística de teste \(n R^2\) é assintoticamente distribuída como uma Qui-quadrado com \(q\) graus de liberdade, onde \(q\) é a diferença entre o número de instrumentos e de variáveis endógenas.
Faça o teste de restrições sobreidentificadoras considerando que a educação da mãe (motheduc
) também é um instrumento váldio para educação.
<- feols(lwage ~ exper + expersq | educ ~ fatheduc + motheduc, data = df)
sobre_iv <- df
sobre_df $resid <- residuals(sobre_iv)
sobre_df<- feols(resid ~ exper + expersq + fatheduc + motheduc, data = sobre_df)
resid_reg <- nobs(resid_reg)
n <- r2(resid_reg, type = "r2")
r2 <- n * r2
sobre_stat pchisq(sobre_stat, df = 1, lower.tail = FALSE)
r2
0.5386372