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")
df <- mroz[!is.na(mroz$wage), ]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
s_ols <- feols(lwage ~ educ, data = df) 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
iv_ols <- feols(lwage ~ 1 | educ ~ fatheduc, data = df)
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
s_ols <- feols(lwage ~ educ + exper + expersq, data = df)
iv_ols <- feols(lwage ~ exper + expersq | educ ~ fatheduc, data = df)
stage_1 <- feols(educ ~ exper + expersq + fatheduc, data = df)
mq2e_df <- df
mq2e_df$pred_educ <- fitted(stage_1)
stage_2 <- feols(lwage ~ pred_educ + exper + expersq, data = mq2e_df)
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
mq2e_df$resid_educ <- residuals(stage_1)
hausman <- feols(lwage ~ educ + exper + expersq + resid_educ, data = mq2e_df)
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.
sobre_iv <- feols(lwage ~ exper + expersq | educ ~ fatheduc + motheduc, data = df)
sobre_df <- df
sobre_df$resid <- residuals(sobre_iv)
resid_reg <- feols(resid ~ exper + expersq + fatheduc + motheduc, data = sobre_df)
n <- nobs(resid_reg)
r2 <- r2(resid_reg, type = "r2")
sobre_stat <- n * r2
pchisq(sobre_stat, df = 1, lower.tail = FALSE) r2
0.5386372