* File name: montecarlo.sps * Copyright (c) 2008 Applied Personnel Research * A limited license to use and modify this SPSS syntax is granted for non-commercial use only, and only with the following acknowledgement: * "Thanks to Applied Personnel Research and Joel Wiesen for providing sample SPSS commands for Monte Carlo research." * This is a (lightly edited) sample of the SPSS programs used for the 2008 APA Poster Session titled "Six Alternative Methods of Use of Employee Selection Test Data" * by Joel P. Wiesen, Ph.D. and Aaron A. Brown * This SPSS program was authored by Joel Wiesen (creation of variables and calculation of grade scores) and Aaron Brown (plotting results). * Many thanks to Raynald (Ray) Levesque for providing the original Monte Carlo macro syntax, and to Marcin (of Poland) for showing my how to use that syntax. *****************************. * Outline * 1. Read 8 random variables for specified number of cases. * 2a. Create gender and EEO as categorical variables. * 2b. Create a known proportion of white and minority applicants. * 3a. Create Ad Impact and save new data set. * 3b. Selection ratio and number selected variables. * 3c. Save new data set. * 4. Calculate overall scores for people in six ways: * 4a. Equal composite * 4b. GSM * 4c. Equal composite without written test * 4d. 2 GSM * 4e. Drop lowest score * 4f. Random selection * 4g. Fix for low scores * 5. Select based on selection ratio. * 6. Save all the corresponding means and correlations in .sav files. * 7a. Read data from "means.sav" file in order to calculate adverse impact * 7b. Drop all unneeded variables * 7c. Calculate adverse impact * 8a. Read data from "correlations.sav" file in order to find validity * 8b. Drop all unneeded variables * 9. Combine adverse impact and validity and save in "Adverse_Impact_Validity.sav" file * 10. Identify adverse impact and validity values by grading method. This makes graphing by grading method simpler. * (Create several temporary files (Adverse_Impact_Validity.txt), with one grading method in each one) * 10b. Put all of the temporary files together, to prepare the data for graphing * 11. Graphing Syntax * Note: all "temp" files are overwritten each replication and only hold important data while the syntax is running. *****************************. *****************************. * 1. Read 8 random variables for specified number of cases. *Multivar produces a file called data.out." DATA LIST FILE= 'C:\DATA.OUT' / written 1-6 oral 8-13 ppt 15-20 consc 22-27 gender 29-34 eeo_gp 36-41 job_per 43-48 random 50-55. * Sample data lines: * 1.306 0.797 0.747 0.223 -0.922 -1.655 0.473 1.142 * -0.206 1.493 0.352 0.676 1.730 -0.808 1.939 -1.464 * 0.406 0.279 0.330 1.855 1.302 0.155 1.261 -0.369 FORMAT written oral ppt consc job_per (F6.3). CACHE. EXECUTE. VARIABLE LABEL written "M/C Cog Ability" oral "Oral Exam" ppt 'Physical Performance Test' consc "Conscientiousness" eeo_gp 'EEO Group' job_per "Job Performance" . *****************************. *****************************. * 2a. Create gender and eeo as categorical variables. *** Create a known proportion of men and women. * this creates a population with half men and half women. IF (gender LE 0) gender = 0. IF (gender GT 0 ) gender = 1. VALUE LABEL gender 0 "Male" 1 "Female". *****************************. *****************************. *** 2b. Create a known proportion of white and minority applicants. * this creates a population with half minority and half white. IF (eeo_gp LE 0) eeo_gp = 0. IF (eeo_gp GT 0) eeo_gp = 1. VALUE LABEL eeo_gp 0 "White" 1 "Minority". *****************************. *****************************. * 3a. Create Ad Impact and Save new data set. *** Set adverse impact. COMPUTE dgenppt = 1.25. COMPUTE deeocog = .72. COMPUTE deeojob = .27. COMPUTE deeocon = .07. COMPUTE deeooral = .31. IF (gender = 1) ppt= ppt-dgenppt . IF (eeo_gp = 1) written = written -deeocog . IF (eeo_gp = 1) job_per = job_per - deeojob . IF (eeo_gp = 1) consc = consc + deeocon . IF (eeo_gp = 1) oral = oral - deeooral . *****************************. *****************************. * 3b. Selection ratio and number selected variables. COMPUTE selratio = .01. VARIABLE LABEL selratio "Selection Ratio" . COMPUTE groupsize = 750000. COMPUTE numselected = selratio * groupsize. COMPUTE numselected_adj = numselected + ((1/4)*(.9*4)*groupsize) * selratio. COMPUTE numfail = groupsize * .1. *****************************. *****************************. * 3c. Save new data set. SAVE OUTFILE = 'C:\DATA.OUT.sav'. *****************************. *****************************. * 4. Calculate overall scores for people in six ways GET FILE = 'C:\DATA.OUT.sav'. *****************************. *****************************. * 4a. Equal Composite COMPUTE p_trac4 = (oral + written + ppt + consc)/4. VARIABLE LABEL p_trac4 "Predictor, Traditional Composite (oral written ppt consc)". *****************************. *****************************. * 4b. GSM COMPUTE highest = MAX (oral, written, ppt, consc). *LIST highest oral written ppt consc /CASES = 10. IF (highest = written) hivar = 1. IF (highest = oral) hivar = 2. IF (highest = ppt) hivar = 3. IF (highest = consc) hivar = 4. VARIABLE LABEL hivar 'Area of Highest Score'. VALUE LABEL hivar 1 'Written' 2 'Oral' 3 'Physical Ability' 4 'Conscientiousness'. VARIABLE LABEL highest "Predictor, Highest Score". *****************************. *****************************. * 4c. Equal composite without written test COMPUTE comp2 = (oral + ppt + consc)/3. VARIABLE LABEL comp2 "Equal Composite Without Written Test". *****************************. *****************************. * 4d. 2 GSM COMPUTE hivar2 = 0. IF (hivar = 1) hivar2 = MAX (oral, ppt, consc) . IF (hivar = 2) hivar2 = MAX (written, ppt, consc) . IF (hivar = 3) hivar2 = MAX (oral, written, consc) . IF (hivar = 4) hivar2 = MAX (oral, ppt, written) . COMPUTE twohighest = (highest + hivar2)/2. VARIABLE LABEL twohighest "Two Highest Scores". *****************************. * 4e. Drop lowest score COMPUTE lowest = MIN (oral, written, ppt, consc). IF (lowest = written) lovar = 1. IF (lowest = oral) lovar = 2. IF (lowest = ppt) lovar = 3. IF (lowest = consc) lovar = 4. VARIABLE LABEL lovar 'Area of Lowest Score'. VALUE LABEL lovar 1 'Written' 2 'Oral' 3 'Physical Ability' 4 'Conscientiousness'. COMPUTE lovareq = 0. IF (lovar = 1) lovareq = written. IF (lovar = 2) lovareq = oral. IF (lovar = 3) lovareq = ppt. IF (lovar = 4) lovareq = consc. COMPUTE droplowest = ((oral + written + ppt + consc) - (lovareq))/3. VARIABLE LABEL droplowest "Drop Lowest Score". *****************************. * 4f. Random selection * Rank based on variable "random" *****************************. * 4g. Create a variable to identify (and later OMIT) lowest 10% on any predictor from innovative scoring. RANK VARIABLES = written oral ppt consc (a). COMPUTE low = 0. IF (rwritten GE numfail AND roral GE numfail AND rppt GE numfail AND rconsc GE numfail) low = 1. VALUE LABEL low 0 'Has a low score' 1 'No low score'. VARIABLE LABEL low "Indicator for any low score". CROSSTABS /TABLES=low BY eeo_gp gender /FORMAT= AVALUE TABLES /CELLS= COUNT /COUNT ROUND CELL . *****************************. SAVE OUTFILE = 'C:\DATA.OUT.sav' /DROP rwritten. *****************************. *****************************. * 5. Select Based on selection ratio. GET FILE = 'C:\DATA.OUT.sav'. * Assume will appoint top 01%. RANK VARIABLES = p_trac4 highest written comp2 droplowest twohighest random (D). * GSM * selected variable = 1 if selected, otherwise, 0: COMPUTE selected_women_rhighest_01 = 0. IF (rhighest LE numselected_adj AND gender = 1 AND low = 1) selected_women_rhighest_01 = 1. COMPUTE selected_men_rhighest_01 = 0. IF (rhighest LE numselected_adj AND gender = 0 AND low = 1) selected_men_rhighest_01 = 1. COMPUTE selected_minority_rhighest_01 = 0. IF (rhighest LE numselected_adj AND eeo_gp = 1 AND low = 1) selected_minority_rhighest_01 = 1. COMPUTE selected_white_rhighest_01 = 0. IF (rhighest LE numselected_adj AND eeo_gp = 0 AND low = 1) selected_white_rhighest_01 = 1. *Written *set the appropiate "selected" variable to 1, otherwise, leave it at 0: COMPUTE selected_women_rwritten_01 = 0. IF (rwritten LE numselected AND gender = 1 ) selected_women_rwritten_01 = 1. COMPUTE selected_men_rwritten_01 = 0. IF (rwritten LE numselected AND gender = 0 ) selected_men_rwritten_01 = 1. COMPUTE selected_minority_rwritten_01 = 0. IF (rwritten LE numselected AND eeo_gp = 1) selected_minority_rwritten_01 = 1. COMPUTE selected_white_rwritten_01 = 0. IF (rwritten LE numselected AND eeo_gp = 0) selected_white_rwritten_01 = 1. *Composite *set the appropiate "selected" variable to 1, otherwise, leave it at 0: COMPUTE selected_women_rp_trac4_01 = 0. IF (rp_trac4 LE numselected AND gender = 1 ) selected_women_rp_trac4_01 = 1. COMPUTE selected_men_rp_trac4_01 = 0. IF (rp_trac4 LE numselected AND gender = 0 ) selected_men_rp_trac4_01 = 1. COMPUTE selected_minority_rp_trac4_01 = 0. IF (rp_trac4 LE numselected AND eeo_gp = 1) selected_minority_rp_trac4_01 = 1. COMPUTE selected_white_rp_trac4_01 = 0. IF (rp_trac4 LE numselected AND eeo_gp = 0) selected_white_rp_trac4_01 = 1. *Comp2 COMPUTE selected_women_rcomp2_01 = 0. IF (rcomp2 LE numselected AND gender = 1) selected_women_rcomp2_01 = 1. COMPUTE selected_men_rcomp2_01 = 0. IF (rcomp2 LE numselected AND gender = 0) selected_men_rcomp2_01 = 1. COMPUTE selected_minority_rcomp2_01 = 0. IF (rcomp2 LE numselected AND eeo_gp = 1) selected_minority_rcomp2_01 = 1. COMPUTE selected_white_rcomp2_01 = 0. IF (rcomp2 LE numselected AND eeo_gp = 0) selected_white_rcomp2_01 = 1. *Twohighest COMPUTE selected_women_rtwohighest_01 = 0. IF (rtwohigh LE numselected_adj AND gender = 1 AND low = 1) selected_women_rtwohighest_01 = 1. COMPUTE selected_men_rtwohighest_01 = 0. IF (rtwohigh LE numselected_adj AND gender = 0 AND low = 1) selected_men_rtwohighest_01 = 1. COMPUTE selected_minority_rtwohighest_01 = 0. IF (rtwohigh LE numselected_adj AND eeo_gp = 1 AND low = 1) selected_minority_rtwohighest_01 = 1. COMPUTE selected_white_rtwohighest_01 = 0. IF (rtwohigh LE numselected_adj AND eeo_gp = 0 AND low = 1) selected_white_rtwohighest_01 = 1. *Droplowest COMPUTE selected_women_rdroplowest_01 = 0. IF (rdroplow LE numselected_adj AND gender = 1 AND low = 1) selected_women_rdroplowest_01 = 1. COMPUTE selected_men_rdroplowest_01 = 0. IF (rdroplow LE numselected_adj AND gender = 0 AND low = 1) selected_men_rdroplowest_01 = 1. COMPUTE selected_minority_rdroplowest_01 = 0. IF (rdroplow LE numselected_adj AND eeo_gp = 1 AND low = 1) selected_minority_rdroplowest_01 = 1. COMPUTE selected_white_rdroplowest_01 = 0. IF (rdroplow LE numselected_adj AND eeo_gp = 0 AND low = 1) selected_white_rdroplowest_01 = 1. *Random COMPUTE selected_women_rrandom_01 = 0. IF (rrandom LE numselected AND gender = 1) selected_women_rrandom_01 = 1. COMPUTE selected_men_rrandom_01 = 0. IF (rrandom LE numselected AND gender = 0) selected_men_rrandom_01 = 1. COMPUTE selected_minority_rrandom_01 = 0. IF (rrandom LE numselected AND eeo_gp = 1) selected_minority_rrandom_01 = 1. COMPUTE selected_white_rrandom_01 = 0. IF (rrandom LE numselected AND eeo_gp = 0) selected_white_rrandom_01 = 1. *****************************. *****************************. * 6. Save all the corresponding means and correlations in .sav files. /*This is a macro definition /*The last line of this syntax invokes this macro with proper parameters DEFINE abc(sample_size=!TOKENS(1) /no_of_samples=!TOKENS(1) /vars = !CMDEND) /*IF statement creates variables sample_no /*variable sample_no contains number of sample that each case belongs IF ($CASENUM<=!sample_size*!no_of_samples) sample_no=TRUNC(($CASENUM-1)/!sample_size)+1. /*The OMS function saves output tables to sav file . /*Only correlation tables are selected OMS /SELECT TABLES /IF SUBTYPES=['Correlations'] /DESTINATION FORMAT=SAV NUMBERED='runID' OUTFILE='C:\correlations.sav'. /*This loop computes a filter variable and correlations for each sample !DO !idx=1 !TO !no_of_samples /*computes a filter and select cases belong to sample number !idx COMPUTE fi=(sample_no=!idx). FILTER by fi. /*Correlation tables are created for each sample and all variables declared in parameter 'vars' /*These tables are saved by OMS function CORRELATIONS /VARIABLES= !vars /*change number of variables /PRINT=TWOTAIL NOSIG /MISSING=PAIRWISE . !DOEND. OMSEND. OMS /SELECT TABLES /IF SUBTYPES=['Report'] /DESTINATION FORMAT=SAV NUMBERED='runID' OUTFILE='C:\means.sav'. !DO !idx=1 !TO !no_of_samples COMPUTE fi=(sample_no=!idx). FILTER by fi. MEANS VARIABLES= !vars BY eeo_gp. !DOEND. OMSEND. /*Opens SPSS data file GET FILE='C:\means.sav'. !ENDDEFINE. abc sample_size=1000 no_of_samples=1000 vars=written oral ppt consc gender eeo_gp job_per p_trac4 comp2 highest twohighest droplowest random selected_women_rhighest_01 selected_men_rhighest_01 selected_minority_rhighest_01 selected_white_rhighest_01 selected_women_rwritten_01 selected_men_rwritten_01 selected_minority_rwritten_01 selected_white_rwritten_01 selected_women_rp_trac4_01 selected_men_rp_trac4_01 selected_minority_rp_trac4_01 selected_white_rp_trac4_01 selected_women_rrandom_01 selected_men_rrandom_01 selected_minority_rrandom_01 selected_white_rrandom_01 selected_women_rdroplowest_01 selected_men_rdroplowest_01 selected_minority_rdroplowest_01 selected_white_rdroplowest_01 selected_women_rtwohighest_01 selected_men_rtwohighest_01 selected_minority_rtwohighest_01 selected_white_rtwohighest_01 selected_women_rcomp2_01 selected_men_rcomp2_01 selected_minority_rcomp2_01 selected_white_rcomp2_01 . /*change size of each sample, number of samples and list of variables above. /*If there are 3 original variables (V1 V2 V3) and 2 new variables (V4 V5) use form: 'V1 TO V5' or 'V1 V2 V3 V4 V5' . *****************************. *****************************. * 7a. Read data from "means.sav" file in order to calculate adverse impact GET FILE='C:\means.sav'. SAVE TRANSLATE /OUTFILE= 'C:\means.txt' /TYPE=TAB /KEEP=runID Var1 Var2 MCCogAbility PredictorTraditionalCompositeoralwrittenpptconsc EqualCompositeWithoutWrittenTest PredictorHighestScore TwoHighestScores DropLowestScore random selected_women_rhighest_01 selected_men_rhighest_01 selected_minority_rhighest_01 selected_white_rhighest_01 selected_women_rwritten_01 selected_men_rwritten_01 selected_minority_rwritten_01 selected_white_rwritten_01 selected_women_rp_trac4_01 selected_men_rp_trac4_01 selected_minority_rp_trac4_01 selected_white_rp_trac4_01 selected_women_rrandom_01 selected_men_rrandom_01 selected_minority_rrandom_01 selected_white_rrandom_01 selected_women_rdroplowest_01 selected_men_rdroplowest_01 selected_minority_rdroplowest_01 selected_white_rdroplowest_01 selected_women_rtwohighest_01 selected_men_rtwohighest_01 selected_minority_rtwohighest_01 selected_white_rtwohighest_01 selected_women_rcomp2_01 selected_men_rcomp2_01 selected_minority_rcomp2_01 selected_white_rcomp2_01 /REPLACE. EXECUTE. GET DATA /TYPE = TXT /FILE = 'C:\means.txt' /DELCASE = VARIABLES 342 /DELIMITERS = "\t" /ARRANGEMENT = DELIMITED /FIRSTCASE = 1 /IMPORTCASE = ALL /VARIABLES = run F2.1 V2 A5 V3 A4 V4 F19.2 V5 F17.2 V6 F17.2 V7 F16.2 V8 F16.2 V9 F16.2 V10 F21.2 V11 F18.2 V12 F18.2 V13 F1.0 sel_whi_highest F18.2 V15 F18.2 V16 F18.2 V17 F1.0 sel_whi_written F18.2 V19 F18.2 V20 F18.2 V21 F1.0 sel_whi_comp F18.2 V23 F18.2 V24 F18.2 V25 F1.0 sel_whi_random F18.2 V27 F18.2 V28 F18.2 V29 F1.0 sel_whi_droplowest F18.2 V31 F18.2 V32 F18.2 V33 F1.0 sel_whi_twohighest F18.2 V35 F18.2 V36 F18.2 V37 F1.0 sel_whi_comp2 F18.2 V39 F2.1 V40 A5 V41 A1 V42 F3.2 V43 F3.2 V44 F3.2 V45 F3.2 V46 F3.2 V47 F3.2 V48 F3.2 V49 F3.2 V50 F3.2 V51 F3.2 V52 F3.2 V53 F3.2 V54 F3.2 V55 F3.2 V56 F3.2 V57 F3.2 V58 F3.2 V59 F3.2 V60 F3.2 V61 F3.2 V62 F3.2 V63 F3.2 V64 F3.2 V65 F3.2 V66 F3.2 V67 F3.2 V68 F3.2 V69 F3.2 V70 F3.2 V71 F3.2 V72 F3.2 V73 F3.2 V74 F3.2 V75 F3.2 V76 F3.2 V77 F2.1 V78 A5 V79 A14 V80 F16.2 V81 F16.2 V82 F16.2 V83 F16.2 V84 F16.2 V85 F16.2 V86 F16.2 V87 F17.2 V88 F17.2 V89 F1.0 V90 F17.2 V91 F17.2 V92 F17.2 V93 F1.0 V94 F17.2 V95 F17.2 V96 F17.2 V97 F1.0 V98 F17.2 V99 F17.2 V100 F17.2 V101 F1.0 V102 F17.2 V103 F17.2 V104 F17.2 V105 F1.0 V106 F17.2 V107 F17.2 V108 F17.2 V109 F1.0 V110 F17.2 V111 F17.2 V112 F17.2 V113 F1.0 V114 F17.2 V115 F2.1 V116 A8 V117 A4 V118 F17.2 V119 F17.2 V120 F17.2 V121 F16.2 V122 F16.2 V123 F19.2 V124 F19.2 V125 F18.2 V126 F18.2 sel_min_highest F18.2 V128 F1.0 V129 F17.2 V130 F3.2 sel_min_written F17.2 V132 F1.0 V133 F17.2 V134 F18.2 sel_min_comp F18.2 V136 F1.0 V137 F18.2 V138 F18.2 sel_min_random F18.2 V140 F1.0 V141 F17.2 V142 F17.2 sel_min_droplowest F17.2 V144 F1.0 V145 F18.2 V146 F17.2 sel_min_twohighest F18.2 V148 F1.0 V149 F17.2 V150 F18.2 sel_min_comp2 F18.2 V152 F1.0 V153 F2.1 V154 A8 V155 A1 V156 F3.2 V157 F3.2 V158 F3.2 V159 F3.2 V160 F3.2 V161 F3.2 V162 F3.2 V163 F3.2 V164 F3.2 V165 F3.2 V166 F3.2 V167 F3.2 V168 F3.2 V169 F3.2 V170 F3.2 V171 F3.2 V172 F3.2 V173 F3.2 V174 F3.2 V175 F3.2 V176 F3.2 V177 F3.2 V178 F3.2 V179 F3.2 V180 F3.2 V181 F3.2 V182 F3.2 V183 F3.2 V184 F3.2 V185 F3.2 V186 F3.2 V187 F3.2 V188 F3.2 V189 F3.2 V190 F3.2 V191 F2.1 V192 A8 V193 A14 V194 F16.2 V195 F16.2 V196 F16.2 V197 F16.2 V198 F16.2 V199 F16.2 V200 F16.2 V201 F17.2 V202 F17.2 V203 F17.2 V204 F1.0 V205 F17.2 V206 F2.1 V207 F17.2 V208 F1.0 V209 F16.2 V210 F17.2 V211 F17.2 V212 F1.0 V213 F17.2 V214 F17.2 V215 F17.2 V216 F1.0 V217 F16.2 V218 F17.2 V219 F17.2 V220 F1.0 V221 F17.2 V222 F17.2 V223 F17.2 V224 F1.0 V225 F16.2 V226 F17.2 V227 F17.2 V228 F1.0 V229 F2.1 V230 A5 V231 A4 written F20.2 comp F10.2 comp2 F17.2 highest F16.2 twohighest F16.2 droplowest F16.2 random F19.2 sel_wom_highest F18.2 sel_men_highest F18.2 V241 F4.2 V242 F18.2 sel_wom_written F18.2 sel_men_written F18.2 V245 F4.2 V246 F18.2 sel_wom_comp F4.2 sel_men_comp F18.2 V249 F4.2 V250 F18.2 sel_wom_random F18.2 sel_men_random F18.2 V253 F4.2 V254 F18.2 sel_wom_droplowest F18.2 sel_men_droplowest F18.2 V257 F4.2 V258 F18.2 sel_wom_twohighest F18.2 sel_men_twohighest F18.2 V261 F4.2 V262 F18.2 sel_wom_comp2 F4.2 sel_men_comp2 F18.2 V265 F4.2 V266 F18.2 V267 F2.1 V268 A5 V269 A1 V270 F4.2 V271 F4.2 V272 F4.2 V273 F4.2 V274 F4.2 V275 F4.2 V276 F4.2 V277 F4.2 V278 F4.2 V279 F4.2 V280 F4.2 V281 F4.2 V282 F4.2 V283 F4.2 V284 F4.2 V285 F4.2 V286 F4.2 V287 F4.2 V288 F4.2 V289 F4.2 V290 F4.2 V291 F4.2 V292 F4.2 V293 F4.2 V294 F4.2 V295 F4.2 V296 F4.2 V297 F4.2 V298 F4.2 V299 F4.2 V300 F4.2 V301 F4.2 V302 F4.2 V303 F4.2 V304 F4.2 V305 F2.1 V306 A5 V307 A14 written_dev F16.2 comp_dev F16.2 comp2_dev F16.2 highest_dev F16.2 twohighest_dev F16.2 droplowest_dev F16.2 random_dev F16.2 V315 F17.2 V316 F17.2 V317 F17.2 V318 F17.2 V319 F17.2 V320 F17.2 V321 F17.2 V322 F17.2 V323 F17.2 V324 F17.2 V325 F17.2 V326 F17.2 V327 F17.2 V328 F17.2 V329 F17.2 V330 F17.2 V331 F17.2 V332 F17.2 V333 F17.2 V334 F17.2 V335 F17.2 V336 F17.2 V337 F17.2 V338 F17.2 V339 F17.2 V340 F17.2 V341 F17.2 V342 F17.2 . CACHE. EXECUTE. SAVE OUTFILE = 'C:\temp.sav'. *****************************. *****************************. * 7b. Drop all unneeded variables GET FILE = 'C:\temp.sav' /DROP=V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V15 V16 V17 V19 V20 V21 V23 V24 V25 V27 V28 V29 V31 V32 V33 V35 V36 V37 V39 V40 V41 V42 V43 V44 V45 V46 V47 V48 V49 V50 V51 V52 V53 V54 V55 V56 V57 V58 V59 V60 V61 V62 V63 V64 V65 V66 V67 V68 V69 V70 V71 V72 V73 V74 V75 V76 V77 V78 V79 V80 V81 V82 V83 V84 V85 V86 V87 V88 V89 V90 V91 V92 V93 V94 V95 V96 V97 V98 V99 V100 V101 V102 V103 V104 V105 V106 V107 V108 V109 V110 V111 V112 V113 V114 V115 V116 V117 V118 V119 V120 V121 V122 V123 V124 V125 V126 V128 V129 V130 V132 V133 V134 V136 V137 V138 V140 V141 V142 V144 V145 V146 V148 V149 V150 V152 V153 V154 V155 V156 V157 V158 V159 V160 V161 V162 V163 V164 V165 V166 V167 V168 V169 V170 V171 V172 V173 V174 V175 V176 V177 V178 V179 V180 V181 V182 V183 V184 V185 V186 V187 V188 V189 V190 V191 V192 V193 V194 V195 V196 V197 V198 V199 V200 V201 V202 V203 V204 V205 V206 V207 V208 V209 V210 V211 V212 V213 V214 V215 V216 V217 V218 V219 V220 V221 V222 V223 V224 V225 V226 V227 V228 V229 V230 V231 V241 V242 V245 V246 V249 V250 V253 V254 V257 V258 V261 V262 V265 V266 V267 V268 V269 V270 V271 V272 V273 V274 V275 V276 V277 V278 V279 V280 V281 V282 V283 V284 V285 V286 V287 V288 V289 V290 V291 V292 V293 V294 V295 V296 V297 V298 V299 V300 V301 V302 V303 V304 V305 V306 V307 V315 V316 V317 V318 V319 V320 V321 V322 V323 V324 V325 V326 V327 V328 V329 V330 V331 V332 V333 V334 V335 V336 V337 V338 V339 V340 V341 V342 . *****************************. *****************************. * 7c. Calculate adverse impact COMPUTE ad_imp_eeo_written = sel_min_written / sel_whi_written . COMPUTE ad_imp_gen_written = sel_wom_written / sel_men_written . COMPUTE ad_imp_eeo_comp = sel_min_comp / sel_whi_comp . COMPUTE ad_imp_gen_comp = sel_wom_comp / sel_men_comp . COMPUTE ad_imp_eeo_comp2 = sel_min_comp2 / sel_whi_comp2 . COMPUTE ad_imp_gen_comp2 = sel_wom_comp2 / sel_men_comp2 . COMPUTE ad_imp_eeo_highest = sel_min_highest / sel_whi_highest. COMPUTE ad_imp_gen_highest = sel_wom_highest / sel_men_highest. COMPUTE ad_imp_eeo_twohighest = sel_min_twohighest / sel_whi_twohighest. COMPUTE ad_imp_gen_twohighest = sel_wom_twohighest / sel_men_twohighest. COMPUTE ad_imp_eeo_droplowest = sel_min_droplowest / sel_whi_droplowest. COMPUTE ad_imp_gen_droplowest = sel_wom_droplowest / sel_men_droplowest. COMPUTE ad_imp_eeo_random = sel_min_random / sel_whi_random . COMPUTE ad_imp_gen_random = sel_wom_random / sel_men_random . CACHE. EXECUTE. SAVE OUTFILE = 'C:\temp.sav'. *****************************. *****************************. * 8a. Read data from "correlations.sav" file in order to find validity GET FILE='C:\correlations.sav'. SAVE TRANSLATE /OUTFILE= 'C:\correlations.txt' /TYPE=TAB /KEEP=Var1 JobPerformance /REPLACE. EXECUTE. GET DATA /TYPE = TXT /FILE = 'C:\correlations.txt' /DELCASE = VARIABLES 246 /DELIMITERS = "\t" /ARRANGEMENT = DELIMITED /FIRSTCASE = 1 /IMPORTCASE = ALL /VARIABLES = V1 A8 validity_written F8.4 V3 A8 V4 F8.4 V5 A8 V6 F8.4 V7 A8 V8 F8.4 V9 A8 V10 F8.4 V11 A8 V12 F8.4 V13 A8 V14 F8.4 V15 A8 V16 F8.4 V17 A8 V18 F8.4 V19 A8 V20 F8.4 V21 A8 V22 F8.4 V23 A8 V24 F8.4 V25 A8 V26 F8.4 V27 A8 V28 F8.4 V29 A8 V30 F8.4 V31 A8 V32 F8.4 V33 A8 V34 F8.4 V35 A8 V36 F8.4 V37 A8 V38 F8.4 V39 A8 V40 F8.4 V41 A8 V42 F8.4 V43 A8 validity_comp F8.4 V45 A8 V46 F8.4 V47 A8 V48 F8.4 V49 A8 validity_comp2 F8.4 V51 A8 V52 F8.4 V53 A8 V54 F8.4 V55 A8 validity_highest F8.4 V57 A8 V58 F8.4 V59 A8 V60 F8.4 V61 A8 validity_twohighest F8.4 V63 A8 V64 F8.4 V65 A8 V66 F8.4 V67 A8 validity_droplowest F8.4 V69 A8 V70 F8.4 V71 A8 V72 F8.4 V73 A8 validity_random F8.4 V75 A8 V76 F8.4 V77 A8 V78 F8.4 V79 A8 V80 F8.4 V81 A8 V82 F8.4 V83 A8 V84 F8.4 V85 A8 V86 F8.4 V87 A8 V88 F8.4 V89 A8 V90 F8.4 V91 A8 V92 F8.4 V93 A8 V94 F8.4 V95 A8 V96 F8.4 V97 A8 V98 F8.4 V99 A8 V100 F8.4 V101 A8 V102 F8.4 V103 A8 V104 F8.4 V105 A8 V106 F8.4 V107 A8 V108 F8.4 V109 A8 V110 F8.4 V111 A8 V112 F8.4 V113 A8 V114 F8.4 V115 A8 V116 F8.4 V117 A8 V118 F8.4 V119 A8 V120 F8.4 V121 A8 V122 F8.4 V123 A8 V124 F8.4 V125 A8 V126 F8.4 V127 A8 V128 F8.4 V129 A8 V130 F8.4 V131 A8 V132 F8.4 V133 A8 V134 F8.4 V135 A8 V136 F8.4 V137 A8 V138 F8.4 V139 A8 V140 F8.4 V141 A8 V142 F8.4 V143 A8 V144 F8.4 V145 A8 V146 F8.4 V147 A8 V148 F8.4 V149 A8 V150 F8.4 V151 A8 V152 F8.4 V153 A8 V154 F8.4 V155 A8 V156 F8.4 V157 A8 V158 F8.4 V159 A8 V160 F8.4 V161 A8 V162 F8.4 V163 A8 V164 F8.4 V165 A8 V166 F8.4 V167 A8 V168 F8.4 V169 A8 V170 F8.4 V171 A8 V172 F8.4 V173 A8 V174 F8.4 V175 A8 V176 F8.4 V177 A8 V178 F8.4 V179 A8 V180 F8.4 V181 A8 V182 F8.4 V183 A8 V184 F8.4 V185 A8 V186 F8.4 V187 A8 V188 F8.4 V189 A8 V190 F8.4 V191 A8 V192 F8.4 V193 A8 V194 F8.4 V195 A8 V196 F8.4 V197 A8 V198 F8.4 V199 A8 V200 F8.4 V201 A8 V202 F8.4 V203 A8 V204 F8.4 V205 A8 V206 F8.4 V207 A8 V208 F8.4 V209 A8 V210 F8.4 V211 A8 V212 F8.4 V213 A8 V214 F8.4 V215 A8 V216 F8.4 V217 A8 V218 F8.4 V219 A8 V220 F8.4 V221 A8 V222 F8.4 V223 A8 V224 F8.4 V225 A8 V226 F8.4 V227 A8 V228 F8.4 V229 A8 V230 F8.4 V231 A8 V232 F8.4 V233 A8 V234 F8.4 V235 A8 V236 F8.4 V237 A8 V238 F8.4 V239 A8 V240 F8.4 V241 A8 V242 F8.4 V243 A8 V244 F8.4 V245 A8 V246 F8.4 . CACHE. EXECUTE. SAVE OUTFILE = 'C:\temp1.sav'. *****************************. *****************************. * 8b. Drop all unneeded variables GET FILE = 'C:\temp1.sav' /DROP=V1 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21 V22 V23 V24 V25 V26 V27 V28 V29 V30 V31 V32 V33 V34 V35 V36 V37 V38 V39 V40 V41 V42 V43 V45 V46 V47 V48 V49 V51 V52 V53 V54 V55 V57 V58 V59 V60 V61 V63 V64 V65 V66 V67 V69 V70 V71 V72 V73 V75 V76 V77 V78 V79 V80 V81 V82 V83 V84 V85 V86 V87 V88 V89 V90 V91 V92 V93 V94 V95 V96 V97 V98 V99 V100 V101 V102 V103 V104 V105 V106 V107 V108 V109 V110 V111 V112 V113 V114 V115 V116 V117 V118 V119 V120 V121 V122 V123 V124 V125 V126 V127 V128 V129 V130 V131 V132 V133 V134 V135 V136 V137 V138 V139 V140 V141 V142 V143 V144 V145 V146 V147 V148 V149 V150 V151 V152 V153 V154 V155 V156 V157 V158 V159 V160 V161 V162 V163 V164 V165 V166 V167 V168 V169 V170 V171 V172 V173 V174 V175 V176 V177 V178 V179 V180 V181 V182 V183 V184 V185 V186 V187 V188 V189 V190 V191 V192 V193 V194 V195 V196 V197 V198 V199 V200 V201 V202 V203 V204 V205 V206 V207 V208 V209 V210 V211 V212 V213 V214 V215 V216 V217 V218 V219 V220 V221 V222 V223 V224 V225 V226 V227 V228 V229 V230 V231 V232 V233 V234 V235 V236 V237 V238 V239 V240 V241 V242 V243 V244 V245 V246 . SAVE OUTFILE = 'C:\temp1.sav'. *****************************. *****************************. * 9. Combine adverse impact and validity and saive in "Adverse_Impact_Validity.sav" file MATCH FILES FILE = 'C:\temp2.sav' / FILE = 'C:\temp3.sav' . SAVE OUTFILE = 'C:\Adverse_Impact_Validity.sav'. *****************************. *****************************. * 10. Identify adverse impact and validity values by grading method. This makes graphing by grading method simpler. * (Create several temporary files (Adverse_Impact_Validity.txt), with one grading method in each one) GET FILE = 'C:\Adverse_Impact_Validity.sav'. ************************************** SAVE TRANSLATE /OUTFILE= 'C:\Adverse_Impact_Validity_1.txt' /TYPE=TAB /KEEP=validity_written ad_imp_eeo_written ad_imp_gen_written /REPLACE. EXECUTE. GET DATA /TYPE = TXT /FILE = 'C:\Adverse_Impact_Validity_1.txt' /DELCASE = LINE /DELIMITERS = "\t" /ARRANGEMENT = DELIMITED /FIRSTCASE = 1 /IMPORTCASE = ALL /VARIABLES = validity_written F16.2 ad_imp_eeo_written F16.2 ad_imp_gen_written F16.2 . COMPUTE method=1 CACHE. EXECUTE. SAVE OUTFILE='C:\Adverse_Impact_Validity_1.sav'. ******************************************** GET FILE = 'C:\Adverse_Impact_Validity.sav'. SAVE TRANSLATE /OUTFILE= 'C:\Adverse_Impact_Validity_2.txt' /TYPE=TAB /KEEP=validity_comp ad_imp_eeo_comp ad_imp_gen_comp /REPLACE. EXECUTE. GET DATA /TYPE = TXT /FILE = 'C:\Adverse_Impact_Validity_2.txt' /DELCASE = LINE /DELIMITERS = "\t" /ARRANGEMENT = DELIMITED /FIRSTCASE = 1 /IMPORTCASE = ALL /VARIABLES = validity_comp F16.2 ad_imp_eeo_comp F16.2 ad_imp_gen_comp F16.2 . COMPUTE method=2 CACHE. EXECUTE. SAVE OUTFILE='C:\Adverse_Impact_Validity_2.sav'. ******************************************** GET FILE = 'C:\Adverse_Impact_Validity.sav'. SAVE TRANSLATE /OUTFILE= 'C:\Adverse_Impact_Validity_3.txt' /TYPE=TAB /KEEP=validity_comp2 ad_imp_eeo_comp2 ad_imp_gen_comp2 /REPLACE. EXECUTE. GET DATA /TYPE = TXT /FILE = 'C:\Adverse_Impact_Validity_3.txt' /DELCASE = LINE /DELIMITERS = "\t" /ARRANGEMENT = DELIMITED /FIRSTCASE = 1 /IMPORTCASE = ALL /VARIABLES = validity_comp2 F16.2 ad_imp_eeo_comp2 F16.2 ad_imp_gen_comp2 F16.2 . COMPUTE method=3 CACHE. EXECUTE. SAVE OUTFILE='C:\Adverse_Impact_Validity_3.sav'. ******************************************** GET FILE = 'C:\Adverse_Impact_Validity.sav'. SAVE TRANSLATE /OUTFILE= 'C:\Adverse_Impact_Validity_4.txt' /TYPE=TAB /KEEP=validity_highest ad_imp_eeo_highest ad_imp_gen_highest /REPLACE. EXECUTE. GET DATA /TYPE = TXT /FILE = 'C:\Adverse_Impact_Validity_4.txt' /DELCASE = LINE /DELIMITERS = "\t" /ARRANGEMENT = DELIMITED /FIRSTCASE = 1 /IMPORTCASE = ALL /VARIABLES = validity_highest F16.2 ad_imp_eeo_highest F16.2 ad_imp_gen_highest F16.2 . COMPUTE method=4 CACHE. EXECUTE. SAVE OUTFILE='C:\Adverse_Impact_Validity_4.sav'. ******************************************** GET FILE = 'C:\Adverse_Impact_Validity.sav'. SAVE TRANSLATE /OUTFILE= 'C:\Adverse_Impact_Validity_5.txt' /TYPE=TAB /KEEP=validity_twohighest ad_imp_eeo_twohighest ad_imp_gen_twohighest /REPLACE. EXECUTE. GET DATA /TYPE = TXT /FILE = 'C:\Adverse_Impact_Validity_5.txt' /DELCASE = LINE /DELIMITERS = "\t" /ARRANGEMENT = DELIMITED /FIRSTCASE = 1 /IMPORTCASE = ALL /VARIABLES = validity_twohighest F16.2 ad_imp_eeo_twohighest F16.2 ad_imp_gen_twohighest F16.2 . COMPUTE method=5 CACHE. EXECUTE. SAVE OUTFILE='C:\Adverse_Impact_Validity_5.sav'. ******************************************** GET FILE = 'C:\Adverse_Impact_Validity.sav'. SAVE TRANSLATE /OUTFILE= 'C:\Adverse_Impact_Validity_6.txt' /TYPE=TAB /KEEP=validity_droplowest ad_imp_eeo_droplowest ad_imp_gen_droplowest /REPLACE. EXECUTE. GET DATA /TYPE = TXT /FILE = 'C:\Adverse_Impact_Validity_6.txt' /DELCASE = LINE /DELIMITERS = "\t" /ARRANGEMENT = DELIMITED /FIRSTCASE = 1 /IMPORTCASE = ALL /VARIABLES = validity_droplowest F16.2 ad_imp_eeo_droplowest F16.2 ad_imp_gen_droplowest F16.2 . COMPUTE method=6 CACHE. EXECUTE. SAVE OUTFILE='C:\Adverse_Impact_Validity_6.sav'. ******************************************** GET FILE = 'C:\Adverse_Impact_Validity.sav'. SAVE TRANSLATE /OUTFILE= 'C:\Adverse_Impact_Validity_7.txt' /TYPE=TAB /KEEP=validity_random ad_imp_eeo_random ad_imp_gen_random /REPLACE. EXECUTE. GET DATA /TYPE = TXT /FILE = 'C:\Adverse_Impact_Validity_7.txt' /DELCASE = LINE /DELIMITERS = "\t" /ARRANGEMENT = DELIMITED /FIRSTCASE = 1 /IMPORTCASE = ALL /VARIABLES = validity_random F16.2 ad_imp_eeo_random F16.2 ad_imp_gen_random F16.2 . COMPUTE method=7 CACHE. EXECUTE. SAVE OUTFILE='C:\Adverse_Impact_Validity_7.sav'. *****************************. *****************************. * 10b. Put all of the temporary files together, to prepare the data for graphing MATCH FILES FILE ='C:\Adverse_Impact_Validity_1.sav' / FILE ='C:\Adverse_Impact_Validity_2.sav' / FILE ='C:\Adverse_Impact_Validity_3.sav' / FILE ='C:\Adverse_Impact_Validity_4.sav' / FILE ='C:\Adverse_Impact_Validity_5.sav' / FILE ='C:\Adverse_Impact_Validity_6.sav' / FILE ='C:\Adverse_Impact_Validity_7.sav' /BY method. VARIABLE LABEL method 'Grading method'. VALUE LABEL method 1 'Written' 2 'Composite' 3 'Composite Without Written' 4 'Greatest Strength' 5 'Two Greatest Strengths' 6 'Drop Lowest Score' 7 'Random Selection'. COMPUTE sr=.01. COMPUTE eeo=.5. COMPUTE ss=10000. CACHE. EXECUTE. SAVE OUTFILE='C:\graphdata_sr1.sav' . *****************************. *****************************. * 11. Graphing Syntax *********************************************** *********************************************** * Note the Igraph command below presumes you have run 3 replications of the above with 3 selection ratios. * (The 3 graphdata.sav files from the 3 replications are combined in the syntax immediately below.) *********************************************** *********************************************** *****************************. * a. Combine means for all replications that have different selection ratios but similar everything else. This makes it easier to plot the data by selection ratio. ADD FILES FILE ='C:\graphdata_sr1.sav' / FILE='C:\graphdata_sr2.sav' / FILE='C:\graphdata_sr3.sav' / BY method. VARIABLE LABEL sr 'Selection Ratio'. VALUE LABEL sr .9 'All Passers'. CACHE. EXECUTE. SAVE OUTFILE='C:\graphdata_sr_all.sav'. *****************************. * b. Graph Adverse Impact eeo GET FILE='C:\graphdata_sr_all.sav'. IGRAPH /VIEWNAME='Boxplot' /X1 = VAR(category_set1) TYPE = CATEGORICAL /Y = VAR(value_set1) TYPE = SCALE /COLOR = VAR(sr) TYPE = CATEGORICAL /COORDINATE = VERTICAL /COMBINE GROUP=VAR(category_set1) TYPE=CATEGORICAL 'Grading Method' RESPONSE=VAR(value_set1) TYPE=SCALE 'Adverse Impact EEO' VAR(ad_imp_eeo_highest) 'Greatest Strength' VAR(ad_imp_eeo_twohighest) 'Two Greatest Strengths' VAR(ad_imp_eeo_droplowest) 'Drop Lowest Score' VAR(ad_imp_eeo_comp2) 'Composite Without M/C' VAR(ad_imp_eeo_random) 'Random Selection' VAR(ad_imp_eeo_comp) 'Composite' VAR(ad_imp_eeo_written) 'M/C Cognitive Ability' /TITLE='Figure 1. Adverse Impact EEO by Grading Method' /SUBTITLE='Proportion of Minorities = .1, Applicant Group Size = 1000, Number of Replications = 750' /X1LENGTH=4.0 /YLENGTH=4.0 /X2LENGTH=4.0 /CHARTLOOK='C:\Program Files\SPSS\Looks\Grayscale.clo' /CATORDER VAR(category_set1) (ASCENDING VALUES OMITEMPTY) /SCALERANGE = VAR(value_set1) MIN=0.000000 MAX=2 /BOX OUTLIERS = OFF EXTREME = OFF MEDIAN = ON WHISKER = T. EXE. *****************************. * c. Graph Adverse Impact gender GET FILE='C:\graphdata_sr_all.sav'. IGRAPH /VIEWNAME='Boxplot' /X1 = VAR(category_set1) TYPE = CATEGORICAL /Y = VAR(value_set1) TYPE = SCALE /COLOR = VAR(sr) TYPE = CATEGORICAL /COORDINATE = VERTICAL /COMBINE GROUP=VAR(category_set1) TYPE=CATEGORICAL 'Grading Method' RESPONSE=VAR(value_set1) TYPE=SCALE 'Adverse Impact Gender' VAR(ad_imp_gen_highest) 'Greatest Strength' VAR(ad_imp_gen_twohighest) 'Two Greatest Strengths' VAR(ad_imp_gen_droplowest) 'Drop Lowest Score' VAR(ad_imp_gen_comp2) 'Composite Without M/C' VAR(ad_imp_gen_random) 'Random Selection' VAR(ad_imp_gen_comp) 'Composite' VAR(ad_imp_gen_written) 'M/C Cognitive Ability' /TITLE='Figure 2. Adverse Impact Gender by Grading Method' /SUBTITLE='Proportion of Minorities = .1, Applicant Group Size = 1000, Number of Replications = 750' /X1LENGTH=4.0 /YLENGTH=4.0 /X2LENGTH=4.0 /CHARTLOOK='C:\Program Files\SPSS\Looks\Grayscale.clo' /CATORDER VAR(category_set1) (ASCENDING VALUES OMITEMPTY) /SCALERANGE = VAR(value_set1) MIN=0.000000 MAX=2.000000 /BOX OUTLIERS = OFF EXTREME = OFF MEDIAN = ON WHISKER = T. EXE. *****************************.