8 Child Labor Laws as an IV

2SLS estimates of the returns to schooling using child labor laws as instruments for years of schooling (Acemoglu and Angrist 2000). This replicates Table 6.3 of Mastering ’Metrics.

library("AER")
library("sandwich")
library("clubSandwich")
library("tidyverse")
library("broom")

Load the child_labor data.

data("child_labor", package = "masteringmetrics")
child_labor <- mutate(child_labor,
                      year = factor(year),
                      yob_fct = factor(yob),
                      sob = factor(sob))

8.1 First stages and reduced forms

Column 1. Years of Schooling.

mod1 <- lm(indEduc ~ year + yob_fct + sob + cl7 + cl8 + cl9,
           data = child_labor, weights = weight)
# coef_test(mod1, vcov = vcovCR(mod1, cluster = child_labor[["sob"]]))

Column 2. Years of Schooling. State of birth dummies x linear year of birth trends.

mod2 <- lm(indEduc ~ year + yob_fct + sob + sob:yob + cl7 + cl8 + cl9,
           data = child_labor, weights = weight)
# coef_test(mod2, vcov = vcovCR(mod2, cluster = child_labor[["sob"]]))

Column 3. Log weekly wages.

mod3 <- lm(lnwkwage ~ year + yob_fct + sob + cl7 + cl8 + cl9,
           data = child_labor, weights = weight)
# coef_test(mod3, vcov = vcovCR(mod1), cluster = child_labor[["state"]])

Column 4. Log weekly wages. State of birth dummies x linear year of birth trends.

mod4 <- lm(lnwkwage ~ year + yob_fct + sob + sob:yob + cl7 + cl8 + cl9,
           data = child_labor, weights = weight)
# coef_test(mod4, vcov = vcovCR(mod2), cluster = child_labor[["state"]])

8.2 IV returns

Column 3. Log weekly wages.

mod5 <- ivreg(lnwkwage ~ year + yob_fct + sob + indEduc |
               . - indEduc + cl7 + cl8 + cl9,
              data = child_labor, weights = weight)
# coef_test(mod5, vcov = vcovCR(mod1), cluster = child_labor[["state"]])

Column 4. Log weekly wages. State of birth dummies x linear year of birth trends.

mod6 <- ivreg(lnwkwage ~ year + yob_fct + sob + sob:yob + indEduc |
               . - indEduc + cl7 + cl8 + cl9,
              data = child_labor, weights = weight)
# coef_test(mod6, vcov = vcovCR(mod2), cluster = child_labor[["state"]])