ivreg_1 <- function(vi, ri, si, study, label){ nn <<- nn+1 vv <- ivr[ivr$vi==vi & ivr$ri==ri & ivr$si==si,] print(sprintf("%2d) %9.4f %9.4f %8.4f %8.2f %8.3f %8.3f %8.3f %s", nn, vv$coef1, vv$coef2, study, vv$pdiff, vv$sum22, vv$sum23, vv$sum24, label)) #readline("Press enter to continue, escape to exit") } ivreg_print <- function(ri, si){ nn <<- 0 print(" N INTERCEPT SLOPE STUDY % DIFF S.E. T-STAT P-VAL DESCRIPTION") print("-- --------- -------- ------- ------- ------- ------- ------- -----------------------------------") #print(paste(labyears, "USING STUDY'S FORMULA")) ivreg_1(1, ri, si, 6.65, "Weekly Wage, Native STEM") ivreg_1(2, ri, si, 8.03, "Weekly Wage, Native College-Educated") ivreg_1(3, ri, si, 3.78, "Weekly Wage, Native Non-College-Educated") ivreg_1(4, ri, si, 0.53, "Employment, Native STEM") ivreg_1(5, ri, si, 2.48, "Employment, Native College-Educated") ivreg_1(6, ri, si,-5.17, "Employment, Native Non-College-Educated") print("") } save_mm <- function(vi, ri, si, coef1, coef2, sum, study){ pdiff <- 100* (coef2 - study) / study sum22 <- sum[2,2] sum23 <- sum[2,3] sum24 <- sum[2,4] newrow <- data.frame(vi, ri, si, coef1, coef2, study, pdiff, sum22, sum23, sum24) ivr <<- rbind(ivr, newrow) } ivreg_all_save <- function(si){ mm <- ivreg(delta_native_stemO4_wkwage ~ delta_imm_stemO4 +fspan + fmets + bartik_coll_wage + bartik_coll_emp | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(1, 1, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 6.65) mm <- ivreg(delta_native_coll_wkwage ~ delta_imm_stemO4 +fspan + fmets + bartik_coll_wage + bartik_coll_emp | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(2, 1, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 8.03) mm <- ivreg(delta_native_nocoll_wkwage ~ delta_imm_stemO4 +fspan + fmets + bartik_nocoll_wage + bartik_nocoll_emp | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(3, 1, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 3.78) mm <- ivreg(delta_native_stemO4_emp ~ delta_imm_stemO4 +fspan + fmets + bartik_coll_wage + bartik_coll_emp | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(4, 1, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 0.53) mm <- ivreg(delta_native_coll_emp ~ delta_imm_stemO4 +fspan + fmets + bartik_coll_wage + bartik_coll_emp | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(5, 1, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 2.48) mm <- ivreg(delta_native_nocoll_emp ~ delta_imm_stemO4 +fspan + fmets + bartik_nocoll_wage + bartik_nocoll_emp | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(6, 1, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients,-5.17) } ivreg_nomets_save <- function(si){ mm <- ivreg(delta_native_stemO4_wkwage ~ delta_imm_stemO4 +fspan + bartik_coll_wage + bartik_coll_emp | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(1, 2, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 6.65) mm <- ivreg(delta_native_coll_wkwage ~ delta_imm_stemO4 +fspan + bartik_coll_wage + bartik_coll_emp | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(2, 2, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 8.03) mm <- ivreg(delta_native_nocoll_wkwage ~ delta_imm_stemO4 +fspan + bartik_nocoll_wage + bartik_nocoll_emp | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(3, 2, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 3.78) mm <- ivreg(delta_native_stemO4_emp ~ delta_imm_stemO4 +fspan + bartik_coll_wage + bartik_coll_emp | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(4, 2, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 0.53) mm <- ivreg(delta_native_coll_emp ~ delta_imm_stemO4 +fspan + bartik_coll_wage + bartik_coll_emp | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(5, 2, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 2.48) mm <- ivreg(delta_native_nocoll_emp ~ delta_imm_stemO4 +fspan + bartik_nocoll_wage + bartik_nocoll_emp | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(6, 2, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients,-5.17) } ivreg_nobartik_save <- function(si){ mm <- ivreg(delta_native_stemO4_wkwage ~ delta_imm_stemO4 +fspan + fmets | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(1, 3, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 6.65) mm <- ivreg(delta_native_coll_wkwage ~ delta_imm_stemO4 +fspan + fmets | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(2, 3, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 8.03) mm <- ivreg(delta_native_nocoll_wkwage ~ delta_imm_stemO4 +fspan + fmets | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(3, 3, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 3.78) mm <- ivreg(delta_native_stemO4_emp ~ delta_imm_stemO4 +fspan + fmets | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(4, 3, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 0.53) mm <- ivreg(delta_native_coll_emp ~ delta_imm_stemO4 +fspan + fmets | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(5, 3, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 2.48) mm <- ivreg(delta_native_nocoll_emp ~ delta_imm_stemO4 +fspan + fmets | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(6, 3, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients,-5.17) } ivreg_nomets_nobartik_save <- function(si){ mm <- ivreg(delta_native_stemO4_wkwage ~ delta_imm_stemO4 +fspan | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(1, 4, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 6.65) mm <- ivreg(delta_native_coll_wkwage ~ delta_imm_stemO4 +fspan | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(2, 4, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 8.03) mm <- ivreg(delta_native_nocoll_wkwage ~ delta_imm_stemO4 +fspan | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(3, 4, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 3.78) mm <- ivreg(delta_native_stemO4_emp ~ delta_imm_stemO4 +fspan | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(4, 4, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 0.53) mm <- ivreg(delta_native_coll_emp ~ delta_imm_stemO4 +fspan | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(5, 4, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 2.48) mm <- ivreg(delta_native_nocoll_emp ~ delta_imm_stemO4 +fspan | . + delta_imm_stemO4_H1B_hat80 - delta_imm_stemO4, data=ff) save_mm(6, 4, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients,-5.17) } ivreg_xy_save <- function(si){ mm <- ivreg(delta_native_stemO4_wkwage ~ delta_imm_stemO4, data=ff) save_mm(1, 5, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 6.65) mm <- ivreg(delta_native_coll_wkwage ~ delta_imm_stemO4, data=ff) save_mm(2, 5, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 8.03) mm <- ivreg(delta_native_nocoll_wkwage ~ delta_imm_stemO4, data=ff) save_mm(3, 5, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 3.78) mm <- ivreg(delta_native_stemO4_emp ~ delta_imm_stemO4, data=ff) save_mm(4, 5, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 0.53) mm <- ivreg(delta_native_coll_emp ~ delta_imm_stemO4, data=ff) save_mm(5, 5, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients, 2.48) mm <- ivreg(delta_native_nocoll_emp ~ delta_imm_stemO4, data=ff) save_mm(6, 5, si, mm$coefficients[1], mm$coefficients[2], summary(mm)$coefficients,-5.17) } do_cv_1 <- function(form){ nfolds <- 20 # 20 IF 2005 INCLUDED, ELSE 73 ms <- numeric(0) cv1 <- CVlm(plotit=TRUE, printit=FALSE, df=ff, form.lm=as.formula(paste("delta_native_stemO4_wkwage", form, sep="~")), m=nfolds) ms[1] <- attr(cv1, "ms") cv1 <- CVlm(plotit=TRUE, printit=FALSE, df=ff, form.lm=as.formula(paste("delta_native_coll_wkwage", form, sep="~")), m=nfolds) ms[2] <- attr(cv1, "ms") #readline("Press enter to continue, escape to exit") # stop on native_coll_wkwage cv1 <- CVlm(plotit=TRUE, printit=FALSE, df=ff, form.lm=as.formula(paste("delta_native_nocoll_wkwage", form, sep="~")), m=nfolds) ms[3] <- attr(cv1, "ms") cv1 <- CVlm(plotit=TRUE, printit=FALSE, df=ff, form.lm=as.formula(paste("delta_native_stemO4_emp", form, sep="~")), m=nfolds) ms[4] <- attr(cv1, "ms") cv1 <- CVlm(plotit=TRUE, printit=FALSE, df=ff, form.lm=as.formula(paste("delta_native_coll_emp", form, sep="~")), m=nfolds) ms[5] <- attr(cv1, "ms") cv1 <- CVlm(plotit=TRUE, printit=FALSE, df=ff, form.lm=as.formula(paste("delta_native_nocoll_emp", form, sep="~")), m=nfolds) ms[6] <- attr(cv1, "ms") line <- sprintf("%7.5f %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %s", ms[1], ms[2], ms[3], ms[4], ms[5], ms[6], sum(ms), form) } do_cv_6 <- function(form){ line <- character(0) line[1] <- do_cv_1("delta_imm_stemO4 + fspan + fmets + bartik_coll_wage + bartik_coll_emp") line[2] <- do_cv_1("delta_imm_stemO4 + fspan + bartik_coll_wage + bartik_coll_emp") line[3] <- do_cv_1("delta_imm_stemO4 + fspan + bartik_coll_wage") line[4] <- do_cv_1("delta_imm_stemO4 + fspan") line[5] <- do_cv_1("delta_imm_stemO4") print("Overall MS (residual sums of squares)") print("=====================================") print(" native native native native native native") print(" stemO4 coll nocoll stemO4 coll nocoll") print(" wkwage wkwage wkwage emp emp emp TOTAL regressors") print("------- ------- ------- ------- ------- ------- ------- ----------") for (i in 1:5){ print(line[i]) } } do_cv_plot <- function(){ nfolds <- 20 # 20 IF 2005 INCLUDED, ELSE 73 cv1 <- CVlm(plotit=TRUE, printit=FALSE, df=ff, lm(delta_native_coll_wkwage ~ delta_imm_stemO4 + fspan + fmets + bartik_coll_wage + bartik_coll_emp, data=ff), m=nfolds) readline("Press enter to continue, escape to exit") cv1 <- CVlm(plotit=TRUE, printit=FALSE, df=ff, lm(delta_native_coll_wkwage ~ delta_imm_stemO4 + fspan + bartik_coll_wage + bartik_coll_emp, data=ff), m=nfolds) readline("Press enter to continue, escape to exit") cv1 <- CVlm(plotit=TRUE, printit=FALSE, df=ff, lm(delta_native_coll_wkwage ~ delta_imm_stemO4 + fspan + bartik_coll_wage, data=ff), m=nfolds) readline("Press enter to continue, escape to exit") cv1 <- CVlm(plotit=TRUE, printit=FALSE, df=ff, lm(delta_native_coll_wkwage ~ delta_imm_stemO4 + fspan, data=ff), m=nfolds) readline("Press enter to continue, escape to exit") cv1 <- CVlm(plotit=TRUE, printit=FALSE, df=ff, lm(delta_native_coll_wkwage ~ delta_imm_stemO4, data=ff), m=nfolds) readline("Press enter to continue, escape to exit") } do_plot_1 <- function(df, var_i, set_i, set_str, yin, xname, yname, sympos, linepos){ filename <- paste("jole_pss_id", set_i, var_i, ".csv", sep="") if (file.exists(filename)) { print(paste("Read", filename)) textinfo <- read.csv(filename) ff$pos <- textinfo$ff.pos } else { print(paste("Can't find", filename)) ff$pos <- 0 } xx <- 100 * df$delta_imm_stemO4 yy <- 100 * df[[yin]] xlabel <- paste("Percentage Growth of", xname) ylabel <- paste("Percentage Growth of", yname) ff$col <- "green" ff$col[ff$year == 1990] <- "black" ff$col[ff$year == 2000] <- "red" ff$col[ff$year == 2005] <- "royalblue" gg <- ff[ff$pos > 0,] ggxx <- 100 * gg$delta_imm_stemO4 ggyy <- 100 * gg[[yin]] with(ff, plot(yy ~ xx, col=col, pch=3, cex=0.6, xlab=xlabel, ylab=ylabel)) if (nrow(gg) > 0){ text(ggxx, ggyy, labels=gg$metarea, pos=gg$pos, col=gg$col, cex=0.6) } grid() title(main=paste(yname, "vs.", xname, labyears)) if (length(set_str) > 1){ mtext(set_str, side = 3) } vv <- ivr[ivr$vi==var_i & ivr$ri==1 & ivr$si==set_i,] print(vv) print(dim(vv)) abline(a=vv$coef1, b=vv$coef2, col="black", lty=1) print(sprintf("%2d) %9.4f %9.4f", var_i, vv$coef1, vv$coef2)) vv <- ivr[ivr$vi==var_i & ivr$ri==2 & ivr$si==set_i,] print(vv) print(dim(vv)) abline(a=vv$coef1, b=vv$coef2, col="red", lty=2) print(sprintf("%2d) %9.4f %9.4f", var_i, vv$coef1, vv$coef2)) cols=c("black","red","royalblue") cols2=c("black","red") legend(sympos, inset=0, cex=0.5, pch=3, col=cols, horiz=FALSE, c("1990-2000","2000-2005","2005-2010"), text.col=cols) legend(linepos, inset=0, cex=0.5, lty=c(1,2), col=cols2, horiz=FALSE, c("2SLS","w/o metareas"), text.col=cols2) #legend(linepos, inset=0, cex=0.5, lty=c(1,2,3,4), col=cols2, horiz=FALSE, # c("2SLS","w/o metareas","OLS", "w/o metarea"), text.col=cols2) readline("Press enter to continue, escape to exit") } do_plot_6 <- function(si, ss){ do_plot_1(ff, 1, si, ss, "delta_native_stemO4_wkwage", "Foreign STEM Workers", "Native STEM Weekly Wage", "bottomright", "topright") do_plot_1(ff, 2, si, ss, "delta_native_coll_wkwage", "Foreign STEM Workers", "Native College Weekly Wage", "bottomright", "topright") do_plot_1(ff, 3, si, ss, "delta_native_nocoll_wkwage", "Foreign STEM Workers", "Native Non-College Weekly Wage", "bottomright", "topright") do_plot_1(ff, 4, si, ss, "delta_native_stemO4_emp", "Foreign STEM Workers", "Native STEM Employment", "bottomright", "topright") do_plot_1(ff, 5, si, ss, "delta_native_coll_emp", "Foreign STEM Workers", "Native College Employment", "bottomright", "topright") do_plot_1(ff, 6, si, ss, "delta_native_nocoll_emp", "Foreign STEM Workers", "Native Non-College Employment", "bottomleft", "topright") } adjust_xy <- function(df){ df$delta_native_stemO4_wkwage <- (1 + df$diff_native_stemO4_wkwage / df$nat_stemO4_wkwage) ^ (1 / df$nyrs) - 1 df$delta_native_coll_wkwage <- (1 + df$diff_native_coll_wkwage / df$nat_coll_wkwage) ^ (1 / df$nyrs) - 1 df$delta_native_nocoll_wkwage <- (1 + df$diff_native_nocoll_wkwage / df$nat_nocoll_wkwage) ^ (1 / df$nyrs) - 1 df$delta_native_stemO4_emp <- (1 + df$diff_native_stemO4_emp / df$labforce) ^ (1 / df$nyrs) - 1 df$delta_native_coll_emp <- (1 + df$diff_native_coll_emp / df$labforce) ^ (1 / df$nyrs) - 1 df$delta_native_nocoll_emp <- (1 + df$diff_native_nocoll_emp / df$labforce) ^ (1 / df$nyrs) - 1 df$delta_imm_stemO4 <- (1 + df$diff_imm_stemO4 / df$labforce) ^ (1 / df$nyrs) - 1 df$delta_imm_stemO4_H1B_hat80 <- (1 + df$diff_imm_stemO4_H1B_hat80 / df$labforce_hat80) ^ (1 / df$nyrs) - 1 df } adjust_log_xy <- function(df){ df$delta_native_stemO4_wkwage <- log((1 + df$diff_native_stemO4_wkwage / df$nat_stemO4_wkwage) ^ (1 / df$nyrs)) df$delta_native_coll_wkwage <- log((1 + df$diff_native_coll_wkwage / df$nat_coll_wkwage) ^ (1 / df$nyrs)) df$delta_native_nocoll_wkwage <- log((1 + df$diff_native_nocoll_wkwage / df$nat_nocoll_wkwage) ^ (1 / df$nyrs)) df$delta_native_stemO4_emp <- log((1 + df$diff_native_stemO4_emp / df$labforce) ^ (1 / df$nyrs)) df$delta_native_coll_emp <- log((1 + df$diff_native_coll_emp / df$labforce) ^ (1 / df$nyrs)) df$delta_native_nocoll_emp <- log((1 + df$diff_native_nocoll_emp / df$labforce) ^ (1 / df$nyrs)) df$delta_imm_stemO4 <- log((1 + df$diff_imm_stemO4 / df$labforce) ^ (1 / df$nyrs)) df$delta_imm_stemO4_H1B_hat80 <- log((1 + df$diff_imm_stemO4_H1B_hat80 / df$labforce_hat80) ^ (1 / df$nyrs)) df } adjust_bartik <- function(df){ df$bartik_coll_wage <- (1 + df$diff_bartik_coll_wage / df$pred_coll_wkwage) ^ (1 / df$nyrs) - 1 df$bartik_nocoll_wage <- (1 + df$diff_bartik_nocoll_wage / df$pred_nocoll_wkwage) ^ (1 / df$nyrs) - 1 df$bartik_coll_emp <- (1 + df$diff_bartik_coll_emp / df$pred_emp) ^ (1 / df$nyrs) - 1 df$bartik_nocoll_emp <- (1 + df$diff_bartik_nocoll_emp / df$pred_emp) ^ (1 / df$nyrs) - 1 df } adjust_log_bartik <- function(df){ df$bartik_coll_wage <- log((1 + df$diff_bartik_coll_wage / df$pred_coll_wkwage) ^ (1 / df$nyrs)) df$bartik_nocoll_wage <- log((1 + df$diff_bartik_nocoll_wage / df$pred_nocoll_wkwage) ^ (1 / df$nyrs)) df$bartik_coll_emp <- log((1 + df$diff_bartik_coll_emp / df$pred_emp) ^ (1 / df$nyrs)) df$bartik_nocoll_emp <- log((1 + df$diff_bartik_nocoll_emp / df$pred_emp) ^ (1 / df$nyrs)) df } do_regress <- function(set_i, set_str){ ivreg_all_save(set_i) print(paste("1990-2010 USING STUDY'S FORMULA", set_str)) print("") ivreg_print(1, set_i) ivreg_nomets_save(set_i) print(paste("1990-2010 USING STUDY'S FORMULA MINUS METRO AREAS", set_str)) print("") ivreg_print(2, set_i) if (0==1){ ivreg_nobartik_save(set_i) print(paste("1990-2010 USING STUDY'S FORMULA MINUS BARTIK VARIABLES", set_str)) print("") ivreg_print(3, set_i) ivreg_nomets_nobartik_save(set_i) print(paste("1990-2010 USING STUDY'S FORMULA MINUS METRO AND BARTIK VARIABLES", set_str)) print("") ivreg_print(4, set_i) } #do_cv_6() do_cv_plot() do_plot_6(set_i, set_str) readline("Press enter to continue, escape to exit") } ############################################################################################### # formulas from 13042data/JOLE Data & Do Files/JOLE_regressions_tables/Table_5_April_30_2014.do ############################################################################################### # *Table 5, row (a) # * explanatory is STEM O*net definition 4%, coefficients (1)-(6) in order # xi: ivreg2 delta_native_stemO4_wkwage (delta_imm_stemO4 = delta_imm_stemO4_H1B_hat80) bartik_coll_wage bartik_coll_emp i.year i.metarea if year>1990 & panel1980==1, robust cluster(metarea) # test delta_imm_stemO4==8.03 # xi: ivreg2 delta_native_coll_wkwage (delta_imm_stemO4 = delta_imm_stemO4_H1B_hat80) bartik_coll_wage bartik_coll_emp i.year i.metarea if year>1990 & panel1980==1, robust cluster(metarea) # xi: ivreg2 delta_native_nocoll_wkwage (delta_imm_stemO4 = delta_imm_stemO4_H1B_hat80) bartik_nocoll_wage bartik_nocoll_emp i.year i.metarea if year>1990 & panel1980==1, robust cluster(metarea) # xi: ivreg2 delta_native_stemO4_emp (delta_imm_stemO4 = delta_imm_stemO4_H1B_hat80) bartik_coll_wage bartik_coll_emp i.year i.metarea if year>1990 & panel1980==1, robust cluster(metarea) # xi: ivreg2 delta_native_coll_emp (delta_imm_stemO4 = delta_imm_stemO4_H1B_hat80) bartik_coll_wage bartik_coll_emp i.year i.metarea if year>1990 & panel1980==1, robust cluster(metarea) # xi: ivreg2 delta_native_nocoll_emp (delta_imm_stemO4 = delta_imm_stemO4_H1B_hat80) bartik_nocoll_wage bartik_nocoll_emp i.year i.metarea if year>1990 & panel1980==1, robust cluster(metarea) # xi: ivreg2 delta_native_stemO4_wkwage (delta_imm_stemO4 = delta_imm_stemO4_H1B_hat80) bartik_coll_wage bartik_coll_emp i.year i.metarea if year>1990 & panel1980==1, robust cluster(metarea) # xi: ivreg2 delta_native_coll_wkwage (delta_imm_stemO4 = delta_imm_stemO4_H1B_hat80) bartik_coll_wage bartik_coll_emp i.year i.metarea if year>1990 & panel1980==1, robust cluster(metarea) # xi: ivreg2 delta_native_nocoll_wkwage (delta_imm_stemO4 = delta_imm_stemO4_H1B_hat80) bartik_nocoll_wage bartik_nocoll_emp i.year i.metarea if year>1990 & panel1980==1, robust cluster(metarea) # xi: ivreg2 delta_native_stemO4_emp (delta_imm_stemO4 = delta_imm_stemO4_H1B_hat80) bartik_coll_wage bartik_coll_emp i.year i.metarea if year>1990 & panel1980==1, robust cluster(metarea) # xi: ivreg2 delta_native_coll_emp (delta_imm_stemO4 = delta_imm_stemO4_H1B_hat80) bartik_coll_wage bartik_coll_emp i.year i.metarea if year>1990 & panel1980==1, robust cluster(metarea) # xi: ivreg2 delta_native_nocoll_emp (delta_imm_stemO4 = delta_imm_stemO4_H1B_hat80) bartik_nocoll_wage bartik_nocoll_emp i.year i.metarea if year>1990 & panel1980==1, robust cluster(metarea) #gen delta_native_stemO4_wkwage=(nat_stemO4_wkwage-nat_stemO4_wkwage[_n-1])/nat_stemO4_wkwage[_n-1] if year>=1980 #gen delta_native_coll _wkwage=(nat_coll _wkwage-nat_coll _wkwage[_n-1])/nat_coll_wkwage [_n-1] if year>=1980 #gen delta_native_nocoll_wkwage=(nat_nocoll_wkwage-nat_nocoll_wkwage[_n-1])/nat_nocoll_wkwage[_n-1] if year>=1980 #gen delta_native_stemO4_emp =(nat_stemO4_emp -nat_stemO4_emp [_n-1])/labforce [_n-1] if year>=1980 #gen delta_native_coll _emp =(nat_coll _emp -nat_coll _emp [_n-1])/labforce [_n-1] if year>=1980 #gen delta_native_nocoll_emp =(nat_nocoll_emp -nat_nocoll_emp [_n-1])/labforce [_n-1] if year>=1980 #gen delta_imm_stemO4 =(imm_stemO4-imm_stemO4 [_n-1])/labforce [_n-1] if year>=1980 #gen delta_imm_stemO4_H1B_hat80=(imm_stemO4_H1B_hat80-imm_stemO4_H1B_hat80[_n-1])/labforce_hat80[_n-1] if year>=1990 #gen bartik_coll_wage =(pred_coll_wkwage-pred_coll_wkwage [_n-1])/pred_coll_wkwage [_n-1] if year>1990 #gen bartik_nocoll_wage=(pred_nocoll_wkwage-pred_nocoll_wkwage[_n-1])/pred_nocoll_wkwage[_n-1] if year>1990 #gen bartik_coll_emp =(pred_coll_emp-pred_coll_emp [_n-1])/pred_emp [_n-1] if year>1990 #gen bartik_nocoll_emp =(pred_nocoll_emp-pred_nocoll_emp [_n-1])/pred_emp [_n-1] if year>1990 #install.packages("foreign") #install.packages("plyr") #install.packages("DAAG") #install.packages("AER") #install.packages("plm") library("foreign") library(plyr) library(DAAG) library(AER) library(plm) cc <- read.dta("13042data\\JOLE Data & Do Files\\JOLE_regressions_tables\\PSS_Data.dta") print(summary(cc$year)) cc$span <- 0 cc$span[cc$year==1980] <- 1 cc$span[cc$year==1990] <- 2 cc$span[cc$year==2000] <- 3 cc$span[cc$year==2005] <- 4 cc$span[cc$year==2010] <- 5 cc$nyrs <- 1 # 5 years dd <- cc[order(cc$metarea, cc$year),] dd <- dd[dd$panel1980 == 1,] # 219 common metareas print(summary(dd$year)) print(dim(dd)) dd$diff_native_stemO4_wkwage <- c(diff(dd$nat_stemO4_wkwage), 0) dd$diff_native_coll_wkwage <- c(diff(dd$nat_coll_wkwage), 0) dd$diff_native_nocoll_wkwage <- c(diff(dd$nat_nocoll_wkwage), 0) dd$diff_native_stemO4_emp <- c(diff(dd$nat_stemO4_emp), 0) dd$diff_native_coll_emp <- c(diff(dd$nat_coll_emp), 0) dd$diff_native_nocoll_emp <- c(diff(dd$nat_nocoll_emp), 0) dd$diff_imm_stemO4 <- c(diff(dd$imm_stemO4), 0) dd$diff_imm_stemO4_H1B_hat80 <- c(diff(dd$imm_stemO4_H1B_hat80), 0) dd$delta_native_stemO4_wkwage <- dd$diff_native_stemO4_wkwage / dd$nat_stemO4_wkwage dd$delta_native_coll_wkwage <- dd$diff_native_coll_wkwage / dd$nat_coll_wkwage dd$delta_native_nocoll_wkwage <- dd$diff_native_nocoll_wkwage / dd$nat_nocoll_wkwage dd$delta_native_stemO4_emp <- dd$diff_native_stemO4_emp / dd$labforce dd$delta_native_coll_emp <- dd$diff_native_coll_emp / dd$labforce dd$delta_native_nocoll_emp <- dd$diff_native_nocoll_emp / dd$labforce dd$delta_imm_stemO4 <- dd$diff_imm_stemO4 / dd$labforce dd$delta_imm_stemO4_H1B_hat80 <- dd$diff_imm_stemO4_H1B_hat80 / dd$labforce_hat80 dd$diff_bartik_coll_wage <- c(diff(dd$pred_coll_wkwage), 0) dd$diff_bartik_nocoll_wage <- c(diff(dd$pred_nocoll_wkwage), 0) dd$diff_bartik_coll_emp <- c(diff(dd$pred_coll_emp), 0) dd$diff_bartik_nocoll_emp <- c(diff(dd$pred_nocoll_emp), 0) dd$bartik_coll_wage <- dd$diff_bartik_coll_wage / dd$pred_coll_wkwage dd$bartik_nocoll_wage <- dd$diff_bartik_nocoll_wage / dd$pred_nocoll_wkwage dd$bartik_coll_emp <- dd$diff_bartik_coll_emp / dd$pred_emp dd$bartik_nocoll_emp <- dd$diff_bartik_nocoll_emp / dd$pred_emp dd$fspan <- as.factor(dd$span) dd$fmets <- as.factor(dd$metarea) ff <- dd[dd$span >= 2,] # 2 ff <- ff[ff$span <= 4,] # 4 labyears <- "1990-2010" print(dim(ff)) for(ii in 1:ncol(ff)) { jj=sum(is.na(ff[,ii])) if (jj > 0) { print(paste(colnames(ff)[ii], "contains", jj, "NAs")) } } ff <- na.omit(ff) print(dim(ff)) ff90 <- ff[ff$year==1990,] ff00 <- ff[ff$year==2000,] ff05 <- ff[ff$year==2005,] vi <- numeric(0) ri <- numeric(0) si <- numeric(0) coef1 <- numeric(0) coef2 <- numeric(0) study <- numeric(0) pdiff <- numeric(0) sum22 <- numeric(0) sum23 <- numeric(0) sum24 <- numeric(0) ivr <- data.frame(vi, ri, si, coef1, coef2, study, pdiff, sum22, sum23, sum24) if (1==1){ print("USING ORIGINAL DATA") print("===================") do_regress(1, "") # adjust data ff$nyrs <- 5 # 5 years ff$nyrs[ff$year==1980] <- 10 # 10 years ff$nyrs[ff$year==1990] <- 10 # 10 years ff <- adjust_xy(ff) ff <- adjust_bartik(ff) # rerun regression print("ADJUSTING ALL YEARS TO 1-YEAR GROWTH RATE") print("=========================================") do_regress(2, "(all years annualized to show 1-year growth)") # adjust data ff$nyrs <- 1 # 5 years ff$nyrs[ff$year==1980] <- 2 # 10 years ff$nyrs[ff$year==1990] <- 2 # 10 years ff <- adjust_xy(ff) ff <- adjust_bartik(ff) # rerun regression print("ADJUSTING 1990-2000 TO 5-YEAR GROWTH RATE") print("=========================================") do_regress(3, "(1990-2000 adjusted to show 5-year growth)") } # adjust data ff$nyrs <- 5 # 5 years ff$nyrs[ff$year==1980] <- 10 # 10 years ff$nyrs[ff$year==1990] <- 10 # 10 years ff <- adjust_log_xy(ff) ff <- adjust_log_bartik(ff) # rerun regression print("ADJUSTING 1990-2000 TO 1-YEAR GROWTH RATE AND USING LOGS") print("========================================================") do_regress(4, "(1990-2000 adjusted to show 1-year growth)") # adjust data ff$nyrs <- 1 # 5 years ff$nyrs[ff$year==1980] <- 2 # 10 years ff$nyrs[ff$year==1990] <- 2 # 10 years ff <- adjust_log_xy(ff) ff <- adjust_log_bartik(ff) # rerun regression print("ADJUSTING 1990-2000 TO 5-YEAR GROWTH RATE AND USING LOGS") print("========================================================") do_regress(5, "(1990-2000 adjusted to show 5-year growth)")