I am attaching below the sample data and the sequence I am following.
Code:
* Example generated by -dataex-. To install: ssc install dataex clear input long gvkey double year int sic3 float(size_w aray_w total_females all_male total_board) 1004 1996 508 6.272092 .23215203 0 1 0 1004 1997 508 6.508111 .24361615 0 1 5 1004 1998 508 6.588418 .2261151 0 1 5 1004 1999 508 6.607998 .17320964 0 1 5 1004 2000 508 6.553725 .1641182 0 1 5 1004 2001 508 6.565545 .10916377 0 1 7 1004 2002 508 6.531783 .09659186 0 1 8 1004 2003 508 6.564267 .147557 0 1 7 1004 2004 508 6.596095 .173608 0 1 8 1004 2005 508 6.886347 .13922083 0 1 7 1004 2006 508 6.973199 .17018114 0 1 9 1004 2007 508 7.216717 .14865677 0 1 11 1004 2008 508 7.228034 .16500776 0 1 11 1004 2009 508 7.313915 .15886697 0 1 11 1004 2010 508 7.440574 .17402378 0 1 10 1004 2011 508 7.694235 .14796464 0 1 11 1004 2012 508 7.667111 .14759699 0 1 11 1004 2013 508 7.695985 .13543987 0 1 11 1004 2014 508 7.323171 .15254125 0 1 11 1004 2015 508 7.273856 .16829623 0 1 11 1004 2017 508 7.329553 .13314095 1 0 12 1004 2018 508 7.324622 .170116 1 0 12 1013 1996 366 6.644785 .21231325 0 1 0 1013 1997 366 6.841939 .26299286 1 0 6 1013 1998 366 7.170571 .28140295 1 0 6 1013 1999 366 7.422092 .2611321 1 0 6 1013 2000 366 8.286647 .1799018 1 0 7 1013 2001 366 7.823926 .11229347 1 0 7 1013 2002 366 7.042461 .1231428 1 0 8 1013 2003 366 7.167732 .108875 1 0 9 1013 2004 366 7.2641 .13619494 1 0 10 1013 2005 366 7.336286 .15224756 2 0 13 1013 2006 366 7.384859 .11983369 1 0 12 1013 2008 366 7.560601 .12524727 1 0 10 1013 2009 366 7.203108 .1490771 1 0 10 1034 1997 283 6.448678 .2020001 0 1 3 1034 1998 283 6.812274 .1867502 0 1 3 1034 1999 283 7.056405 .16311863 0 1 3 1034 2000 283 7.38426 .15122187 1 0 4 1034 2001 283 7.779052 .10847077 1 0 4 1034 2002 283 7.739326 .10201775 1 0 5 1034 2003 283 7.753309 .11096662 3 0 8 1034 2004 283 7.602822 .11307827 3 0 9 1034 2005 283 7.392268 .05599295 3 0 10 1034 2006 283 6.832211 .11630982 1 0 6 1034 2007 283 7.160974 .10110972 0 1 6 1045 2015 451 10.787565 .029433027 1 0 11 1045 2016 451 10.84494 .03108788 2 0 13 1045 2017 451 10.847316 .034088258 2 0 13 1045 2018 451 11.01172 .02816111 2 0 12 1045 2019 451 11.002016 .0291691 2 0 10 1055 1996 357 6.722698 .48138815 0 1 0 1056 1996 382 4.7575736 .2989072 0 1 0 1056 2002 382 5.763513 .2132699 0 1 8 1056 2003 382 5.800958 .1973377 0 1 10 1056 2004 382 6.312444 .17597495 0 1 11 1056 2005 382 6.379867 .1717677 0 1 7 1056 2006 382 6.458373 .18854523 0 1 9 1072 1998 367 6.964173 .15128823 0 1 1 1072 1999 367 7.176507 .19481233 0 1 1 1072 2000 367 7.541735 .16252047 0 1 1 1072 2001 367 7.43343 .07638513 0 1 1 1075 1996 491 8.852134 .032150213 0 1 0 1075 1997 491 8.832065 .03533595 2 0 6 1075 1998 491 8.828281 .04419576 2 0 6 1075 1999 491 8.796113 .04804686 2 0 8 1075 2000 491 8.874749 .0823018 3 0 10 1075 2001 491 8.984913 .05554823 3 0 11 1075 2002 491 9.039055 .05315931 3 0 12 1075 2003 491 9.162869 .04667789 3 0 12 1075 2004 491 9.199962 .04609535 3 0 12 1075 2005 491 9.33456 .04395634 3 0 12 1075 2006 491 9.346264 .04329901 3 0 12 1075 2007 491 9.327564 .04013132 2 0 11 1075 2008 491 9.360491 .033509888 3 0 12 1075 2009 491 9.376546 .034445092 3 0 13 1075 2010 491 9.42244 .033934165 3 0 11 1075 2011 491 9.481208 .030941457 3 0 12 1075 2012 491 9.501488 .02755909 2 0 10 1075 2013 491 9.511088 .029129185 2 0 10 1075 2014 491 9.56896 .02760877 2 0 11 1075 2015 491 9.617687 .024474293 1 0 10 1075 2016 491 9.68061 .022206785 1 0 10 1075 2017 491 9.74209 .02438839 2 0 11 1075 2018 491 9.779295 .0227006 2 0 10 1075 2019 491 9.824404 .020911025 2 0 11 1076 2001 735 5.98443 .063975975 1 0 8 1076 2002 735 6.181357 .0557699 1 0 8 1076 2003 735 6.319494 .05560678 1 0 9 1076 2004 735 6.551492 .04674648 1 0 10 1076 2005 735 6.755204 .0498675 1 0 10 1076 2006 735 6.88715 .04440051 0 1 10 1076 2010 735 7.314601 .04637727 0 1 11 1076 2011 735 7.458848 .05041123 0 1 10 1076 2012 735 7.502699 .05469437 1 0 9 1076 2013 735 7.510527 .03759025 2 0 10 1076 2014 735 7.806633 .09421762 2 0 9 1076 2015 735 7.885658 .14231884 2 0 10 1076 2016 735 7.869301 .07357968 2 0 10 1076 2017 735 7.898138 .10731563 2 0 9 end
Code:
*hired female first time bys gvkey: gen hired_female=1 if total_females>0 & total_females[_n-1]==0 /// there are missing years in the data replace hired_female=0 if hired_female==. & all_male==1 /// I need to match firms that hired females with those that did not hire females hence I need to keep only those who hired females for the first time and match them with all male firms tsset gvkey year *to keep only first female hiring event per firm tsspell hired_female if hired_female==1 summarize _spell, detail forvalues x = 1/`=r(max)'{ gen hired_female_`x' = (_spell == `x') } /// there are missing years so the code gave me a warning. Anyways, the purpose was to only keep the first female hiring event per firm and that was fulfilled i suppose. drop _* psmatch2 hired_female_1 size_w i.year i.sic3 , out(aray_w) neighbor(1) noreplacement caliper(0.01) *generating treatment bys gvkey: egen treatment=max( hired_female_1) if _weight==1 *generating post by gvkey (year): gen byte post = sum( hired_female_1 ) if _weight==1 *alternate generating treatment by gvkey (year): egen byte treatment1= max(post) if _weight==1 *three years window by gvkey (year): gen post1 = inlist(1, hired_female_1 , L1.hired_female_1 , /// F1.hired_female_1) if _weight==1 /// I have doubts about this code. this did not generate what I wanted * i need to run a three-year window for the treatment group as well but i don't know how to do it. *alternatively, I did this to generate post and treatment observations after psmatch2 command gen control=1 if _weight==1 & _treated==0 gen treated=1 if _weight==1 & _treated==1 *control group bysort gvkey: egen before_after_control = min(cond(control== 1, year, .)) gen before_after_dummy_control = before_after_control == year forvalues i = 1/3 { gen before_after_dummy_cminus`i' = year == (before_after_control - `i') } forvalues i = 1/3 { gen before_after_cplus`i' = year == (before_after_control + `i') } *treatment group bysort gvkey: egen before_after_treated = min(cond(treated== 1, year, .)) gen before_after_dummy_treated = before_after_treated == year forvalues i = 1/3 { gen before_after_dummy_minus`i' = year == (before_after_treated - `i') } forvalues i = 1/3 { gen before_after_plus`i' = year == (before_after_treated + `i') } gen treatment=1 if before_after_dummy_minus1==1 | before_after_dummy_minus2==1| before_after_dummy_minus3==1 | before_after_plus1==1 | before_after_plus2==1 | before_after_plus3==1 replace treatment=0 if before_after_dummy_cminus1==1 | before_after_dummy_cminus2==1 | before_after_dummy_cminus3==1 | before_after_cplus1==1 | before_after_cplus2==1| before_after_cplus3==1 tab treatment gen post=1 if before_after_cplus1==1 | before_after_cplus2==1 | before_after_cplus3==1 | before_after_plus1==1 | before_after_plus2==1 | before_after_plus3==1 replace post=0 if before_after_dummy_cminus1==1| before_after_dummy_cminus2==1 | before_after_dummy_cminus3==1 | before_after_dummy_minus1==1 | before_after_dummy_minus2==1 | before_after_dummy_minus3==1 *Please suggest if I did it correctly or if there is any error in the code!
0 Response to Difference in difference Post and Treatment dummies
Post a Comment