******************************************************************************* * Begin with data from the eeoclitigation.wustl.edu website ** 2013_01_master.dta ** 2013_01_injunctive-relief.dta ** 2013_01_events-and-orders.dta ** 2013_01_motions.dta /******************************************************************************* Setting up the main dataset by merging data from the website. *******************************************************************************/ ***Merging Data from eeoclitigation.wustl.edu *--Downloaded 2013_01_master.dta and 2013_01_injunctive-relief.dta set logtype text set linesize 200 set more off * Use the cd command to name your working directory, where the datasets are stored *cd "working directory"; *cd "M:\Margo\Injunctive Relief\work\v3\work" cd "L:\Users\mschlan\Data\EEOC\Injunctive Relief Final\" use "2013_01_master.dta", clear merge 1:1 caseCode using "2013_01_injunctive-relief.dta", generate (_merge) drop if _merge==2 saveold "master_injunctive.dta", replace *fix coding errors found on injunctive terms *** These fixes were made in the underlying file *replace complianceReptConsult=1 if caseCode=="EE-CA-0063" *replace otherRoleConsult=1 if caseCode=="EE-CA-0063" *replace complianceReptConsult=1 if caseCode=="EE-NV-0035" *replace otherRoleConsult=1 if caseCode=="EE-NV-0035" *replace defReqRecruiting=1 if caseCode=="EE-MN-0055" *replace defReqComplyPersonnel=1 if caseCode=="EE-MN-0055" *replace defReqRecruiting=1 if caseCode=="EE-TX-0295" *replace defReqComplyVenue=1 if caseCode=="EE-TX-0295" *replace defReqRecruiting=1 if caseCode=="EE-CA-0164" *replace defReqJobDesc=1 if caseCode=="EE-TX-0105" *replace defReqHiringCrit=1 if caseCode=="EE-TX-0105" *replace defReqProtocol=1 if caseCode=="EE-GA-0044" *replace defReqHiringCrit=1 if caseCode=="EE-TX-0014" *replace defReqProtocol=1 if caseCode=="EE-TX-0014" *replace defReqHiringCrit=1 if caseCode=="EE-OH-0030" *replace defReqRecruiting=1 if caseCode=="EE-TX-0002" *replace defReqRecruiting=1 if caseCode=="EE-WA-0046" *replace defReqRecruiting=1 if caseCode=="EE-NY-0088" *replace defReqComplyVenue=1 if caseCode=="EE-NY-0088" *replace defReqRecruiting=1 if caseCode=="EE-NY-0028" *replace defReqRecruiting=1 if caseCode=="EE-GA-0036" *replace defReqProtocol=1 if caseCode=="EE-MD-0057" *replace defReqProtocol=1 if caseCode=="EE-OH-0030" *replace defReqProtocol=1 if caseCode=="EE-AZ-0003" *replace defReqHiringCrit=1 if caseCode=="EE-CA-0159" *** Convert all 2s to 0s, all 3s to .s foreach var of varlist hiringIssue-otherIssue { replace `var' = 0 if `var' == 2 replace `var' = . if `var' == 3 } foreach var of varlist injReliefOnly consCase eeocComplAvailable-fullDocInjAvailable appealNotice eeocIntervened-plaintiffPubIntCounsel ADABasis-allegedRaceDiscrim allegedColorDiscrim allegedNatOrigDiscrim allegedReligDiscrim allegedSexDiscrim allegedPregDiscrim-allegedDisabDiscrim allegedAssocDiscrim retaliationComplaint-otherIssue payRelief-otherFedPCause stateDiscPCause-reliefObtained monetaryRelief injunctiveRelief { replace `var' = 0 if `var' == 2 replace `var' = . if `var' == 3 } foreach var of varlist ICInj-otherICInj defProhDiscrim-defProhOther defReqDiscPolicy-defReqOtherHiring defReqPostRights-defTrainingSpecified defReqDRP-defResolutionSpecified defReqElse termTime termSub goals-quantOutcomeGoals quantOutcomeRep quantOutcomeOther measures consequence-ltdExtSanction otherSanction reportsRequired-reportsReqOther complReptMgr-complianceReqOther complianceReptMgr-recordRequired auditingRequired accessRequired accessReqMgr-otherRolePrvt { replace `var' = 0 if `var' == 2 replace `var' = . if `var' == 3 } * create variables to identify systemic cases and 7 criteria for inclusion gen systemic=0 gen sysPP=0 gen sysDI=0 gen sysGoals=0 gen sysBenPersEEOC=0 gen sysNumCompl=0 gen sysNumRecMon=0 gen sysDamages=0 * if complaint alleged a pattern and practice of discrim replace sysPP=1 if practiceAlleged==1 * if complaint alleged disparate impact replace sysDI=1 if impactAlleged==1 * if relief included affirmative action replace sysGoals=1 if goals==1 * if the number of benefited persons was 20 or more replace sysBenPersEEOC=1 if benefitPersonsEEOC>=20 & benefitPersonsEEOC~=. * if the number of complainants identified in the complaint was 20 or more replace sysNumCompl=1 if numCompl>=20 & numCompl~=. * if the number of complainants receiving monetary relief was 20 or more replace sysNumRecMon=1 if numRecMon>=20 & numRecMon~=. gen basis_race = 0 *Basis=race includes color and national origin discrimination replace basis_race = 1 if allegedRaceDiscrim == 1 | allegedColorDiscrim == 1 | allegedNatOrigDiscrim == 1 *if allegedRaceDiscrim is missing, so is allegedColor and allegedNatOrig replace basis_race = . if allegedRaceDiscrim == . *no changes result from the following line: replace basis_race = 1 if discrimProtectedCat == 2 | discrimProtectedCat == 4 | discrimProtectedCat == 6 *identify which cases have missing values for these variables and import basis from EEOC data /*if EEOC identified this is a "yes" (not a missing) replace basis_race = 1 if EEbasisRaceEth == 1 & basis_race == . */ gen basis_sex = 0 replace basis_sex = 1 if allegedSexDiscrim == 1 | allegedPregDiscrim == 1 * missingness is same for allegedSex and allegedPreg replace basis_sex = . if allegedSexDiscrim == . *no changes result from the following line: replace basis_sex = 1 if discrimProtectedCat == 5 | discrimProtectedCat == 8 /* replace basis_sex = 1 if EEbasisGender == 1 & basis_sex == . */ gen basis_religion = 0 replace basis_religion = 1 if allegedReligDiscrim == 1 replace basis_religion = . if allegedReligDiscrim == . *no changes result from the following line: replace basis_religion = 1 if discrimProtectedCat == 7 /* replace basis_religion = 1 if EEbasisRelig == 1 & basis_religion == . */ gen basis_disability = 0 replace basis_disability = 1 if allegedDisabDiscrim == 1 replace basis_disability = . if allegedDisabDiscrim == . replace basis_disability = 1 if discrimProtectedCat == 3 /* replace basis_disability = 1 if EEbasisDisab == 1 & basis_disability == . */ gen basis_age = 0 replace basis_age = 1 if allegedAgeDiscrim == 1 replace basis_age = . if allegedAgeDiscrim == . replace basis_age = 1 if discrimProtectedCat == 1 /* replace basis_age = 1 if EEbasisAge == 1 & basis_age == . */ gen basis_retal = 0 replace basis_retal = 1 if retaliationComplaint == 1 | retaliationComplaint3p == 1 | retaliationCooperating == 1 replace basis_retal = . if retaliationComplaint == 3 /* replace basis_retal = 1 if EEbasisRetal == 1 & basis_retal == . */ * create variable for total damages using either amtDefPays or EEOC relief variable gen damages_sum = amtDefPays gen source_damages_sum = "amtDefPays" if amtDefPays ~= . replace source_damages_sum = "amtReliefEEOC" if damages_sum == . & amtReliefEEOC ~= . & amtReliefEEOC ~= 0 replace damages_sum = amtReliefEEOC if damages_sum == . & amtReliefEEOC ~= 0 * adjust for inflation using CPI / new variable damages_adj has relief in 2008 dollars gen cpi = . replace cpi = 0.756874096 if year(finalResDate) == 1996 replace cpi = 0.774240232 if year(finalResDate) == 1997 replace cpi = 0.786300048 if year(finalResDate) == 1998 replace cpi = 0.803666184 if year(finalResDate) == 1999 replace cpi = 0.830680174 if year(finalResDate) == 2000 replace cpi = 0.854317414 if year(finalResDate) == 2001 replace cpi = 0.867824409 if year(finalResDate) == 2002 replace cpi = 0.887602508 if year(finalResDate) == 2003 replace cpi = 0.911239749 if year(finalResDate) == 2004 replace cpi = 0.94211288 if year(finalResDate) == 2005 replace cpi = 0.972503618 if year(finalResDate) == 2006 replace cpi = 1 if year(finalResDate) == 2007 replace cpi = 1 if year(finalResDate) == 2008 gen damages_adj = . replace damages_adj = damages_sum/cpi * > $1 million as cut off] replace sysDamages=1 if damages_adj>=1000000 & damages_adj~=. * identify case as systemic if any one criteria met replace systemic=1 if sysPP==1 | sysDI==1 | sysGoals==1 replace systemic=1 if sysBenPersEEOC==1 | sysNumCompl==1 | sysNumRecMon==1 replace systemic=1 if sysDamages==1 * see extent to which criteria overlap gen criteria=0 replace criteria=sysP + sysDI + sysG + sysB + sysNumC + sysNumR + sysDam tab criteria *** Note: finalResDate is wrong for EE-UT-0015. Should be 4/11/2007, not 4/11/1997. replace finalResDate = finalResDate + 3652 if caseCode == "EE-UT-0015" *** Note: reliefObtained is wrong for EE-OH-0072 replace reliefObtained = 1 if caseCode == "EE-OH-0072" ***Syntax for creating variables used in Tables:*** *setup for table 1: gen fyFiling = year(dateFiled) replace fyFiling = year(dateFiled)+1 if month(dateFiled) == 10 replace fyFiling = year(dateFiled)+1 if month(dateFiled) == 11 replace fyFiling = year(dateFiled)+1 if month(dateFiled) == 12 *setup for table 2: gen sysPersons = 0 replace sysPerson = 1 if sysBenPersEEOC == 1 replace sysPerson = 1 if sysNumCompl == 1 replace sysPerson = 1 if sysNumRecMon == 1 *setup for table 5: *Value Labels for finalResType: *consent judgment 1 *voluntary dismissal-settlement 2 *voluntary dismissal-non-settlement 3 *involuntary dismissal-failure to prosec 4 *involuntary dismissal-failure to state 5 *involuntary dismissal-other 7 *default judgment 8 *judgment on pleadings 9 *plaintiffs summary judgment 10 *defendants summary judgment 11 *defendants judgment as a matter of law 13 *plaintiffs jury verdict 14 *defendants jury verdict 15 *plaintiffs bench verdict 16 *none as of 04/22/08 18 gen resSum = . label define resSum 1 "settlement" 2 "withdrawal by EEOC" 3 "default judgment" 4 "litigated for D" 5 "litigated for EEOC" label values resSum resSum replace resSum = 1 if finalResType == 1 | finalResType == 2 replace resSum = 2 if finalResType == 3 | finalResType == 4 replace resSum = 3 if finalResType == 8 replace resSum = 4 if finalResType == 5 | finalResType == 7 | finalResType == 11 | finalResType == 13 | finalResType == 15 replace resSum = 5 if finalResType == 10 | finalResType == 14 | finalResType == 16 *** What about finalResType == 9? Need to do this by hand. *** EE-OH-0039 -- first judgment was for Deft *** EE-CA-0132 -- first judgment was for both (for deft on damages, for eeoc on injunction). *** Since this piece is about injunctions, I'll count that as for the EEOC. replace resSum = 4 if caseCode == "EE-OH-0039" replace resSum = 5 if caseCode == "EE-CA-0132" *setup for table 7: gen days = finalResDate - dateFiled *setup for table 8: *** Getting means. *** Detect all use of consultants, special masters, monitors gen outsider = 0 replace outsider = 1 if complReptPeer == 1 replace outsider = 1 if complReptUnion == 1 replace outsider = 1 if complReptAdvoc == 1 replace outsider = 1 if complReptConsult == 1 replace outsider = 1 if complReptMonitor == 1 replace outsider = 1 if complReptPrvt == 1 replace outsider = 1 if complianceReptPeer == 1 replace outsider = 1 if complianceReptUnion == 1 replace outsider = 1 if complianceReptAdvoc == 1 replace outsider = 1 if complianceReptConsult == 1 replace outsider = 1 if complianceReptMonitor == 1 replace outsider = 1 if complianceReptPrvt == 1 replace outsider = 1 if accessReqPeer == 1 replace outsider = 1 if accessReqUnion == 1 replace outsider = 1 if accessReqAdvoc == 1 replace outsider = 1 if accessReqConsult == 1 replace outsider = 1 if accessReqMonitor == 1 replace outsider = 1 if accessReqPrvt == 1 replace outsider = 1 if otherRolePeer == 1 replace outsider = 1 if otherRoleUnion == 1 replace outsider = 1 if otherRoleAdvoc == 1 replace outsider = 1 if otherRoleConsult == 1 replace outsider = 1 if otherRoleMonitor == 1 replace outsider = 1 if otherRolePrvt == 1 saveold "master_injunctive.dta", replace /******************************************************************************* Setting up the events counts. *******************************************************************************/ use "2013_01_events-and-orders.dta", clear *replace caseCode="EE-CO-0046" if caseCode=="EE-C0-0046" *merge in needed variables from master brick merge m:1 caseCode using "master_injunctive.dta", keepusing(finalResType finalResDate systemic sepPrivResolution sepPrivResDate appealNotice appealDate) *retain unmatched observations from master brick *identify which cases were resolved by party settlement gen settledCase=2 replace settledCase=1 if finalResType==1 | finalResType==2 count if system==1 & settledCase==1 *identify events occurring after the recorded final resolution date of the EEOC case gen afterResDate=2 replace afterResDate=1 if eventDate>finalResDate replace afterResDate=2 if eventDate==. *identify substantive events--e.g. significant motions (other type) or issues regarding consent decree *occuring after the recorded final resolution date of the EEOC case gen substAfterResDate=2 replace substAfterResDate=1 if afterResDate==1 & eventType==19 replace substAfterResDate=1 if afterResDate==1 & eventType==20 replace substAfterResDate=1 if afterResDate==1 & eventType==25 replace substAfterResDate=1 if afterResDate==1 & eventType==26 *MH--no instances of substAfterResDate - check with other data *PK--found just a few instances of substAfterResDate w/ my version of events brick *identify cases in which the separate private party litigation continued after the EEOC case was resolved generate sepResAfterRes=2 replace sepResAfterRes=1 if sepPrivResDate>finalResDate replace sepResAfterRes=2 if sepPrivResDate==. *count number of events occurring after the final resolution date in each case *duplicates command sets new variable to 0 if there is no duplicate entry; 1 if it locates one duplicate (i.e. 2 identical entries) *2 if it locates two duplicates (i.e. 3 identical entries), etc. *????limit this count to settled cases only? or should be take that condition out and limited to settled cases later? *duplicates tag caseCode afterResDate if finalResType==1|finalResType==2, gen(afterResDateCt) duplicates tag caseCode afterResDate, gen(afterResDateCt) replace afterResDateCt=. if afterResDate!=1 generate afterResDateCount=afterResDateCt replace afterResDateCount=afterResDateCount+1 replace afterResDateCount=0 if afterResDateCount==. gsort caseCode -afterResDateCount replace afterResDateCount=afterResDateCount[_n-1] if caseCode==caseCode[_n-1] & afterResDateCount0 & systemic==1 /******************************************************************************* Setting up the motions counts. *******************************************************************************/ use "2013_01_motions.dta", clear merge m:1 caseCode using "master_injunctive.dta", keepusing(finalResType finalResDate systemic sepPrivResolution sepPrivResDate appealNotice appealDate) *Leaving in cases from Master Brick that are not otherwise in the Motions Brick *identify settled cases gen settledCase=2 replace settledCase=1 if finalResType==1 | finalResType==2 *no missing values for motionType gen dispMotFiled=2 replace dispMotFiled=1 if motionType==1|motionType==10|motionType==14|motionType==16 *18 cases in which motionOutcome is missing, OK to treat these as not resolved gen dispMotResolved=2 replace dispMotResolved=1 if motionOutcome==1 & dispMotFiled==1 replace dispMotResolved=1 if motionOutcome==2 & dispMotFiled==1 replace dispMotResolved=1 if motionOutcome==3 & dispMotFiled==1 *no missing values for motionType gen discovMotFiled=2 replace discovMotFiled=1 if motionType==13 *18 cases in which motionOutcome is missing, OK to treat these as not resolved gen discovMotResolved=2 replace discovMotResolved=1 if discovMotFiled==1 & motionOutcome==1 replace discovMotResolved=1 if discovMotFiled==1 & motionOutcome==2 replace discovMotResolved=1 if discovMotFiled==1 & motionOutcome==3 gen motAfterRes=2 replace motAfterRes=1 if motionFileDate>finalResDate replace motAfterRes=2 if finalResDate==. *deal w/ observ missing motionFileDate because no match replace motAfterRes=2 if motionFileDate==. generate sepResAfterRes=2 replace sepResAfterRes=1 if sepPrivResDate>finalResDate replace sepResAfterRes=2 if sepPrivResDate==. replace sepResAfterRes=2 if finalResDate==. duplicates tag caseCode dispMotFiled if dispMotFiled==1, gen(dispMotFiledCt) generate dispMotFiledCount=dispMotFiledCt replace dispMotFiledCount=dispMotFiledCount+1 replace dispMotFiledCount=0 if dispMotFiledCount==. gsort caseCode -dispMotFiledCount replace dispMotFiledCount=dispMotFiledCount[_n-1] if caseCode==caseCode[_n-1] & dispMotFiledCount= td(period_end) & endResDate ~=.; foreach year in 2001 2002 2003 2004 2005 2006 {; foreach mon in jan feb mar apr may jun jul aug sep oct nov dec {; count if finalResDate <= td(15`mon'`year') & endResDate > td(15`mon'`year') & endResDate ~=.; }; }; *UNRESOLVED CALCULATIONS:; /*-One hundred and sixty-four (164), or 70.4% of the systemic cases that settled, were resolved without a single substantive motion being filed, and forty, or 17.2% of settled cases, were resolved before the defendant even filed an answer. */ use "motionsCountsUnique.dta", clear; tab dispMotFiledCount if systemic == 1 & settledCase ==1; *161 cases (70.31%) had 0 dispMotFiledCount; /* cannot reproduce "and forty, or 17.2% of settled cases, were resolved before the defendant even filed an answer." */ log close;