/**** this file extract the hours worked and employment sample **/ cd H:\Giovanni\MyPapers\Peri_Ottaviano_aggregate\REDUX_2008\empirics\selection capture log close #delimit; clear; set memory 2g; set matsize 400; use "H:\ipums_data\state_data\ipums_60"; ** sample selection of the supply construction; * include self employed, people in school, but not non-civilian and convicts; *** in the wage file we will also have more restrictive specifications; * eliminate people in group quarters ; drop if gq ==0 | gq==3 |gq==4 ; *select people in working age; drop if age<18; *working age is defined as above 16 years old (US dept of labor) but for consistency with BGH we eliminate the 17 years old; *select people who worked a positive amount of weeks; drop if wkswork2==0; *we use only the weeks worked variable as it refers to last year; * foreign-born/including US citizens born abroad; generate byte foreign =(bpld>=15000); replace foreign=0 if bpld==90011 | bpld==90021; **male dummy; gen byte male=(sex==1); *define edu and exp codes; generate byte edu=1*(educrec<=6) + 2*(educrec==7) + 3*(educrec==8) + 4*(educrec==9); generate experience=age-17 if edu==1; replace experience=age-19 if edu==2; replace experience=age-21 if edu==3; replace experience=age-23 if edu==4; drop if experience<1 | experience>40; generate exp=1*(experience>=1 & experience<=5) + 2*(experience>=6 & experience<=10) + 3*(experience>=11 & experience<=15) + 4*(experience>=16 & experience<=20) +5*(experience>=21 & experience<=25) + 6*(experience>=26 & experience<=30) + 7*(experience>=31 & experience<=35) + 8*(experience>=36 & experience<=40); ** define hours and weeks worked ***; generate hours=7.5*(hrswork2==1) + 22*(hrswork2==2) + 32*(hrswork2==3) + 37*(hrswork2==4) + 40*(hrswork2==5) + 44.5*(hrswork2==6) + 54*(hrswork2==7) + 70*(hrswork2==8) ; generate weeks=6.5*(wkswork2==1) + 20*(wkswork2==2) + 33*(wkswork2==3) + 43.5*(wkswork2==4) + 48.5*(wkswork2==5) + 51*(wkswork2==6) ; *supply in hours worked 4 groups; gen howo=perwt*hours*weeks/2000; gen howo_ma_us=howo*male*(1-foreign); gen howo_ma_for=howo*male*(foreign); gen howo_fe_us=howo*(1-male)*(1-foreign); gen howo_fe_for=howo*(1-male)*(foreign); *supply in bodycount 4 groups; gen employment=perwt; gen empl_ma_us=employment*male*(1-foreign); gen empl_ma_for=employment*male*(foreign); gen empl_fe_us=employment*(1-male)*(1-foreign); gen empl_fe_for=employment*(1-male)*(foreign); keep edu exp employment empl_ma_us empl_ma_for empl_fe_us empl_fe_for howo howo_ma_us howo_ma_for howo_fe_us howo_fe_for; sort edu exp; collapse (sum) employment empl_ma_us empl_ma_for empl_fe_us empl_fe_for howo howo_ma_us howo_ma_for howo_fe_us howo_fe_for, by(edu exp); gen year=1960; save supply_groups_60,replace; **1970; use "H:\ipums_data\state_data\ipums_70"; * eliminate people in group quarters ; drop if gq ==0 | gq==3 |gq==4 ; *select people in working age; drop if age<18; ** following BGH; *** no need to select the older, as they are cut by experience limit; *select people who worked a positive amount of weeks; drop if wkswork2==0; *we use only the weeks worked variable as it refers to last year; * foreign-born/including US citizens born abroad; generate byte foreign=(citizen==2 | citizen==3); **male dummy; gen byte male=(sex==1); *define edu and exp codes; generate byte edu=1*(educrec<=6) + 2*(educrec==7) + 3*(educrec==8) + 4*(educrec==9); generate experience=age-17 if edu==1; replace experience=age-19 if edu==2; replace experience=age-21 if edu==3; replace experience=age-23 if edu==4; drop if experience<1 | experience>40; generate exp=1*(experience>=1 & experience<=5) + 2*(experience>=6 & experience<=10) + 3*(experience>=11 & experience<=15) + 4*(experience>=16 & experience<=20) +5*(experience>=21 & experience<=25) + 6*(experience>=26 & experience<=30) + 7*(experience>=31 & experience<=35) + 8*(experience>=36 & experience<=40); ** define hours and weeks worked ***; generate hours=7.5*(hrswork2==1) + 22*(hrswork2==2) + 32*(hrswork2==3) + 37*(hrswork2==4) + 40*(hrswork2==5) + 44.5*(hrswork2==6) + 54*(hrswork2==7) + 70*(hrswork2==8) ; generate weeks=6.5*(wkswork2==1) + 20*(wkswork2==2) + 33*(wkswork2==3) + 43.5*(wkswork2==4) + 48.5*(wkswork2==5) + 51*(wkswork2==6) ; *** supply in hours worked, 4 groups; gen howo=perwt*hours*weeks/2000; gen howo_ma_us=howo*male*(1-foreign); gen howo_ma_for=howo*male*(foreign); gen howo_fe_us=howo*(1-male)*(1-foreign); gen howo_fe_for=howo*(1-male)*(foreign); *** supply in bodycount, 4 groups; gen employment=perwt; gen empl_ma_us=employment*male*(1-foreign); gen empl_ma_for=employment*male*(foreign); gen empl_fe_us=employment*(1-male)*(1-foreign); gen empl_fe_for=employment*(1-male)*(foreign); keep edu exp employment empl_ma_us empl_ma_for empl_fe_us empl_fe_for howo howo_ma_us howo_ma_for howo_fe_us howo_fe_for; sort edu exp; collapse (sum) employment empl_ma_us empl_ma_for empl_fe_us empl_fe_for howo howo_ma_us howo_ma_for howo_fe_us howo_fe_for, by(edu exp); gen year=1970; save supply_groups_70,replace; ****1980; use "H:\ipums_data\state_data\ipums_80"; * eliminate people in group quarters ; drop if gq ==0 | gq==3 |gq==4 ; *select people in working age; drop if age<18; ** following BGH; **do not need to select the older, as they are cut by experience limit; *select people who worked a positive amount of weeks; drop if wkswork1==0; *we use only the weeks worked variable as it refers to last year; * foreign-born/including US citizens born abroad; generate byte foreign=(citizen==2 | citizen==3); **male dummy; gen byte male=(sex==1); *define edu and exp codes; generate byte edu=1*(educrec<=6) + 2*(educrec==7) + 3*(educrec==8) + 4*(educrec==9); generate experience=age-17 if edu==1; replace experience=age-19 if edu==2; replace experience=age-21 if edu==3; replace experience=age-23 if edu==4; drop if experience<1 | experience>40; generate exp=1*(experience>=1 & experience<=5) + 2*(experience>=6 & experience<=10) + 3*(experience>=11 & experience<=15) + 4*(experience>=16 & experience<=20) +5*(experience>=21 & experience<=25) + 6*(experience>=26 & experience<=30) + 7*(experience>=31 & experience<=35) + 8*(experience>=36 & experience<=40); ** define hours and weeks worked ***; generate hours=uhrswork; generate weeks=wkswork1; *** supply in hours worked, 4 groups; gen howo=perwt*hours*weeks/2000; gen howo_ma_us=howo*male*(1-foreign); gen howo_ma_for=howo*male*(foreign); gen howo_fe_us=howo*(1-male)*(1-foreign); gen howo_fe_for=howo*(1-male)*(foreign); *** supply in bodycount, 4 groups; gen employment=perwt; gen empl_ma_us=employment*male*(1-foreign); gen empl_ma_for=employment*male*(foreign); gen empl_fe_us=employment*(1-male)*(1-foreign); gen empl_fe_for=employment*(1-male)*(foreign); keep edu exp employment empl_ma_us empl_ma_for empl_fe_us empl_fe_for howo howo_ma_us howo_ma_for howo_fe_us howo_fe_for; sort edu exp; collapse (sum) employment empl_ma_us empl_ma_for empl_fe_us empl_fe_for howo howo_ma_us howo_ma_for howo_fe_us howo_fe_for, by(edu exp); gen year=1980; save supply_groups_80,replace; *** 1990; use "H:\ipums_data\state_data\ipums_90"; * eliminate people in group quarters ; drop if gq ==0 | gq==3 |gq==4 ; *select people in working age; drop if age<18; ** follow BGH; *** do not need to select the older, as they are cut by experience limit; *select people who worked a positive amount of weeks; drop if wkswork1==0; *we use only the weeks worked variable as it refers to last year; * foreign-born/including US citizens born abroad; generate byte foreign=(citizen==2 | citizen==3); **male dummy; gen byte male=(sex==1); *define edu and exp codes; generate byte edu=1*(educrec<=6) + 2*(educrec==7) + 3*(educrec==8) + 4*(educrec==9); generate experience=age-17 if edu==1; replace experience=age-19 if edu==2; replace experience=age-21 if edu==3; replace experience=age-23 if edu==4; drop if experience<1 | experience>40; generate exp=1*(experience>=1 & experience<=5) + 2*(experience>=6 & experience<=10) + 3*(experience>=11 & experience<=15) + 4*(experience>=16 & experience<=20) +5*(experience>=21 & experience<=25) + 6*(experience>=26 & experience<=30) + 7*(experience>=31 & experience<=35) + 8*(experience>=36 & experience<=40); ** define hours and weeks worked ***; generate hours=uhrswork; generate weeks=wkswork1; *** supply in hours worked, 4 groups; gen howo=perwt*hours*weeks/2000; gen howo_ma_us=howo*male*(1-foreign); gen howo_ma_for=howo*male*(foreign); gen howo_fe_us=howo*(1-male)*(1-foreign); gen howo_fe_for=howo*(1-male)*(foreign); *** supply in bodycount, 4 groups; gen employment=perwt; gen empl_ma_us=employment*male*(1-foreign); gen empl_ma_for=employment*male*(foreign); gen empl_fe_us=employment*(1-male)*(1-foreign); gen empl_fe_for=employment*(1-male)*(foreign); keep edu exp employment empl_ma_us empl_ma_for empl_fe_us empl_fe_for howo howo_ma_us howo_ma_for howo_fe_us howo_fe_for; sort edu exp; collapse (sum) employment empl_ma_us empl_ma_for empl_fe_us empl_fe_for howo howo_ma_us howo_ma_for howo_fe_us howo_fe_for, by(edu exp); gen year=1990; save supply_groups_90,replace; **** 2000; use "H:\ipums_data\state_data\ipums_00"; * eliminate people in group quarters ; drop if gq ==0 | gq==3 |gq==4 ; *select people in working age; drop if age<18; ** following BGH; *** do not need to select the older, as they are cut by experience limit; *select people who worked a positive amount of weeks; drop if wkswork1==0; *we use only the weeks worked variable as it refers to last year; * foreign-born/including US citizens born abroad; generate byte foreign=(citizen==2 | citizen==3); **male dummy; gen byte male=(sex==1); *define edu and exp codes; generate byte edu=1*(educrec<=6) + 2*(educrec==7) + 3*(educrec==8) + 4*(educrec==9); generate experience=age-17 if edu==1; replace experience=age-19 if edu==2; replace experience=age-21 if edu==3; replace experience=age-23 if edu==4; drop if experience<1 | experience>40; generate exp=1*(experience>=1 & experience<=5) + 2*(experience>=6 & experience<=10) + 3*(experience>=11 & experience<=15) + 4*(experience>=16 & experience<=20) +5*(experience>=21 & experience<=25) + 6*(experience>=26 & experience<=30) + 7*(experience>=31 & experience<=35) + 8*(experience>=36 & experience<=40); ** define hours and weeks worked ***; generate hours=uhrswork; generate weeks=wkswork1; *** supply in hours worked, 4 groups; gen howo=perwt*hours*weeks/2000; gen howo_ma_us=howo*male*(1-foreign); gen howo_ma_for=howo*male*(foreign); gen howo_fe_us=howo*(1-male)*(1-foreign); gen howo_fe_for=howo*(1-male)*(foreign); *** supply in bodycount, 4 groups; gen employment=perwt; gen empl_ma_us=employment*male*(1-foreign); gen empl_ma_for=employment*male*(foreign); gen empl_fe_us=employment*(1-male)*(1-foreign); gen empl_fe_for=employment*(1-male)*(foreign); keep edu exp employment empl_ma_us empl_ma_for empl_fe_us empl_fe_for howo howo_ma_us howo_ma_for howo_fe_us howo_fe_for; sort edu exp; collapse (sum) employment empl_ma_us empl_ma_for empl_fe_us empl_fe_for howo howo_ma_us howo_ma_for howo_fe_us howo_fe_for, by(edu exp); gen year=2000; save supply_groups_00,replace; **** 2006; use "H:\ipums_data\state_data\ipums_06"; * eliminate people in group quarters ; drop if gq ==0 | gq==3 |gq==4 ; *select people in working age; drop if age<18; ** following BGH; *** do not need to select the older, as they are cut by experience limit; *select people who worked a positive amount of weeks; drop if wkswork1==0; *we use only the weeks worked variable as it refers to last year; * foreign-born/including US citizens born abroad; generate byte foreign=(citizen==2 | citizen==3); **male dummy; gen byte male=(sex==1); *define edu and exp codes; generate byte edu=1*(educrec<=6) + 2*(educrec==7) + 3*(educrec==8) + 4*(educrec==9); generate experience=age-17 if edu==1; replace experience=age-19 if edu==2; replace experience=age-21 if edu==3; replace experience=age-23 if edu==4; drop if experience<1 | experience>40; generate exp=1*(experience>=1 & experience<=5) + 2*(experience>=6 & experience<=10) + 3*(experience>=11 & experience<=15) + 4*(experience>=16 & experience<=20) +5*(experience>=21 & experience<=25) + 6*(experience>=26 & experience<=30) + 7*(experience>=31 & experience<=35) + 8*(experience>=36 & experience<=40); ** define hours and weeks worked ***; generate hours=uhrswork; generate weeks=wkswork1; *** supply in hours worked, 4 groups; gen howo=perwt*hours*weeks/2000; gen howo_ma_us=howo*male*(1-foreign); gen howo_ma_for=howo*male*(foreign); gen howo_fe_us=howo*(1-male)*(1-foreign); gen howo_fe_for=howo*(1-male)*(foreign); *** supply in bodycount, 4 groups; gen employment=perwt; gen empl_ma_us=employment*male*(1-foreign); gen empl_ma_for=employment*male*(foreign); gen empl_fe_us=employment*(1-male)*(1-foreign); gen empl_fe_for=employment*(1-male)*(foreign); keep edu exp employment empl_ma_us empl_ma_for empl_fe_us empl_fe_for howo howo_ma_us howo_ma_for howo_fe_us howo_fe_for; sort edu exp; collapse (sum) employment empl_ma_us empl_ma_for empl_fe_us empl_fe_for howo howo_ma_us howo_ma_for howo_fe_us howo_fe_for, by(edu exp); gen year=2006; save supply_groups_06,replace; *POOL DATA ACROSS YEARS; use supply_groups_60.dta, clear; append using supply_groups_70.dta; append using supply_groups_80.dta; append using supply_groups_90.dta; append using supply_groups_00.dta; append using supply_groups_06.dta; save supply_groups_60_06_specification_1, replace; for any 60 70 80 90 00 06 : erase supply_groups_X.dta;