clear set mem 2g set matsize 800 *** produces the aggregate labor term and executes the regressions in table 4 ** cd H:\Giovanni\MyPapers\Peri_Ottaviano_aggregate\REDUX_2008\empirics\regressions_IPUMS use supply_groups_60_06_specification_1.dta sort year edu exp save employment, replace clear use supply_wage_60_06_specification_1 sort year edu exp merge year edu exp using employment sort edu exp year * generate dummies gen eduyear=year+edu gen eduexp=(edu*10)+exp gen expyear=year*10+exp tab exp, gen(ex) tab edu, gen (edu) tab year, gen (y) tab eduyear, gen (edy) tab eduexp, gen(edex) tab expyear, gen(exy) *** supply index *** in the case of perfect subst is just hours worked gen howo_us=howo_ma_us+howo_fe_us gen howo_for=howo_ma_for+howo_fe_for gen lnhowo=ln(howo_ma_us+howo_fe_us+howo_ma_for+howo_fe_for) gen lnhowo_for=ln(howo_fe_for+howo_ma_for) gen lnhowo_male=ln(howo_ma_us+howo_ma_for) gen lnhowo_male_for=ln(howo_ma_for) gen lnhowo_female=ln(howo_fe_us+howo_fe_for) gen lnhowo_female_for=ln(howo_fe_for) ** employed bodies in log variables gen empl_us=empl_ma_us+empl_fe_us gen empl_for=empl_ma_for+empl_fe_for gen lnempl=ln(empl_ma_us+empl_fe_us+empl_ma_for+empl_fe_for) gen lnempl_male=ln(empl_ma_us+empl_ma_for) gen lnempl_female=ln(empl_fe_us+empl_fe_for) gen lnempl_for=ln(empl_ma_for+empl_fe_for) gen lnempl_ma_for=ln(empl_ma_for) gen lnempl_fe_for=ln(empl_fe_for) ******************* * generate variables for the 1/sigma_immi regression*** gen lnrel_hours=ln((howo_ma_for+howo_fe_for)/(howo_ma_us+howo_fe_us)) gen lnrel_hours_male=ln(howo_ma_for/howo_ma_us) gen lnrel_hours_female=ln(howo_fe_for/howo_fe_us) gen lnrel_empl=ln((empl_ma_for+empl_fe_for)/(empl_ma_us+empl_fe_us)) gen lnrel_empl_male=ln(empl_ma_for/empl_ma_us) gen lnrel_empl_female=ln(empl_fe_for/empl_fe_us) gen weekly_for=(weekly_ma_for*howo_ma_for+weekly_fe_for*howo_fe_for)/(howo_ma_for+howo_fe_for) gen weekly_us=(weekly_ma_us*howo_ma_us+weekly_fe_us*howo_fe_us)/(howo_ma_us+howo_fe_us) gen lnrel_weekly= ln(weekly_for/weekly_us) gen lnrel_weekly_male= ln(weekly_ma_for/weekly_ma_us) gen lnrel_weekly_female= ln(weekly_fe_for/weekly_fe_us) ** basic 1/sigma_immi ragression male, construct the theta xi:reg lnrel_weekly_male lnrel_hours_male i.edu*i.exp [aw=employment], robust cluster(eduexp) predict e_male, resid gen base_kj_male= lnrel_weekly_male +0.065*lnrel_hours_male-e_male gen theta_Fkj_male=exp(base_kj_male)/(1+exp(base_kj_male)) ** basic 1/sigma_immi regression female, construct the theta xi:reg lnrel_weekly_female lnrel_hours_female i.edu*i.exp [aw=employment], robust cluster(eduexp) predict e_female, resid gen base_kj_female= lnrel_weekly_female +0.058*lnrel_hours_female-e_female gen theta_Fkj_female=exp(base_kj_female)/(1+exp(base_kj_female)) ** basic 1/sigma_immi regression pooled, construct the theta xi:reg lnrel_weekly lnrel_hours i.edu*i.exp [aw=employment], robust cluster(eduexp) predict e_pool, resid gen base_kj_pool= lnrel_weekly +0.044*lnrel_hours-e_pool gen theta_Fkj_pool=exp(base_kj_pool)/(1+exp(base_kj_pool)) ** construction of L_kjt in the case of imperfect subst gen N_kj_male_hours=[theta_Fkj_male*(howo_ma_for^0.935)+(1-theta_Fkj_male)*(howo_ma_us^0.935)]^(1.069) gen N_kj_female_hours=[theta_Fkj_female*(howo_fe_for^0.942)+(1-theta_Fkj_female)*(howo_fe_us^0.942)]^(1.061) gen N_kj_pooled_hours=[theta_Fkj_pool*(howo_for^0.956)+(1-theta_Fkj_pool)*(howo_us^0.956)]^(1.046) gen N_kj_pooled_employment=[theta_Fkj_pool*(empl_for^0.956)+(1-theta_Fkj_pool)*(empl_us^0.956)]^(1.046) gen lnN_kj_male_hours=ln(N_kj_male_hours) gen lnN_kj_female_hours=ln(N_kj_female_hours) gen lnN_kj_pooled_hours=ln(N_kj_pooled_hours) gen lnN_kj_pooled_employment=ln(N_kj_pooled_employment) *********************************** ** dependent variable: weekly wages gen weekly=(weekly_ma_us*howo_ma_us+weekly_fe_us*howo_fe_us+weekly_ma_for*howo_ma_for+weekly_fe_for*howo_fe_for)/howo gen weekly_male=(weekly_ma_us*howo_ma_us+weekly_ma_for*howo_ma_for)/(howo_ma_us+howo_ma_for) gen weekly_female=(weekly_fe_us*howo_fe_us+weekly_fe_for*howo_fe_for)/(howo_fe_us+howo_fe_for) ** log variables gen lnweekly=ln(weekly) gen lnweekly_male=ln(weekly_male) gen lnweekly_female=ln(weekly_female) *Table 4 **row 1 male xi:ivreg lnweekly_male (lnN_kj_pooled_hours=lnhowo_for) i.edu*i.exp i.edu*i.year [aw=employment],robust cluster(eduexp) xi:ivreg lnweekly_male (lnhowo=lnhowo_for) i.edu*i.exp i.edu*i.year [aw=employment],robust cluster(eduexp) xi:ivreg lnweekly_male (lnN_kj_pooled_hours=lnhowo_for) i.edu*i.exp i.edu*i.year i.exp*i.year [aw=employment],robust cluster(eduexp) ** row 2 female xi:ivreg lnweekly_female (lnN_kj_pooled_hours=lnhowo_for) i.edu*i.exp i.edu*i.year [aw=employment],robust cluster(eduexp) xi:ivreg lnweekly_female (lnhowo=lnhowo_for) i.edu*i.exp i.edu*i.year [aw=employment],robust cluster(eduexp) xi:ivreg lnweekly_female (lnN_kj_pooled_hours=lnhowo_for) i.edu*i.exp i.edu*i.year i.exp*i.year [aw=employment],robust cluster(eduexp) **row 3 pooled xi:ivreg lnweekly (lnN_kj_pooled_hours=lnhowo_for) i.edu*i.exp i.edu*i.year [aw=employment],robust cluster(eduexp) xi:ivreg lnweekly (lnhowo=lnhowo_for) i.edu*i.exp i.edu*i.year [aw=employment],robust cluster(eduexp) xi:ivreg lnweekly (lnN_kj_pooled_hours=lnhowo_for) i.edu*i.exp i.edu*i.year i.exp*i.year [aw=employment],robust cluster(eduexp) **row 4 pooled, employment xi:ivreg lnweekly (lnN_kj_pooled_employment=lnempl_for) i.edu*i.exp i.edu*i.year [aw=employment],robust cluster(eduexp) xi:ivreg lnweekly (lnempl=lnempl_for) i.edu*i.exp i.edu*i.year [aw=employment],robust cluster(eduexp) xi:ivreg lnweekly (lnN_kj_pooled_employment=lnempl_for) i.edu*i.exp i.edu*i.year i.exp*i.year [aw=employment],robust cluster(eduexp) **row 5 pooled, 1970-2006 xi:ivreg lnweekly (lnN_kj_pooled_hours=lnhowo_for) i.edu*i.exp i.edu*i.year if year>1960 [aw=employment],robust cluster(eduexp) xi:ivreg lnweekly (lnhowo=lnhowo_for) i.edu*i.exp i.edu*i.year if year>1960 [aw=employment],robust cluster(eduexp) xi:ivreg lnweekly (lnN_kj_pooled_hours=lnhowo_for) i.edu*i.exp i.edu*i.year i.exp*i.year if year>1960 [aw=employment],robust cluster(eduexp)