******************************************************************************************** The following SPSS instructions assume that a “gnat” folder was created in the “My Documents” folder (C drive) and that Inquisit data were saved in an Excel 4.0 file named “gnatdemo.xls” (make sure to adjust the width of the code and bcode columns so that the text is not truncated) ********************************************************************************************. * Thanks to Gerd Bohner and Frank Siebler for catching an error in the original version of this script. *** import data in SPSS ***. GET TRANSLATE FILE='C:\My Documents\gnat\gnatdemo.xls' /TYPE=XLS /MAP /FIELDNAMES . EXECUTE . *** sort cases ***. SORT CASES BY subj (A) . *** removing practice blocks and practice trials ***. SELECT IF(block > 4). EXECUTE. SELECT IF((trial >= 19) AND (trial <= 78)). EXECUTE. *** determine whether trial was signal or noise ***. IF ((code = 'bugs_true750') OR (code = 'fruit_true750') OR (code = 'good_true750') OR (code = 'bad_true750') OR (code = 'bugs_true600') OR (code = 'fruit_true600') OR (code = 'good_true600') OR (code = 'bad_true600')) item = 1. IF ((code = 'bugbackground_false750') OR (code = 'fruitbackground_false750') OR (code = 'good_false750') OR (code = 'bad_false750') OR (code = 'bugbackground_false600') OR (code = 'fruitbackground_false600') OR (code = 'good_false600') OR (code = 'bad_false600')) item = 0. *** determine whether participants discriminated correctly or not ***. IF (corr = 0) AND (item = 0) response = 4. IF (corr = 0) AND (item = 1) response = 3. IF (corr = 1) AND (item = 0) response = 2. IF (corr = 1) AND (item = 1) response = 1. VALUE LABELS response 1 'hit' 2 'falsalr' 3 'miss' 4 'corrrej'. IF (corr = 0) AND (item = 0) corrrej = 1. IF (corr = 0) AND (item = 1) miss = 1. IF (corr = 1) AND (item = 0) falsalr = 1. IF (corr = 1) AND (item = 1) hit = 1. *** save the data in a SPSS file *** SAVE OUTFILE = "C:\My Documents\gnat\gnatdemo.sav". *** aggregate the data for each block ***. *** bugsgoodRT750 ***. GET FILE = "C:\My Documents\gnat\gnatdemo.sav". SELECT IF (bcode = 'bugsgoodRT750'). AGGREGATE /OUTFILE=* /BREAK=subj /bg75hit = SUM(hit) /bg75fal = SUM(falsalr) /bg75mis = SUM(miss) /bg75cor = SUM(corrrej). SORT CASES BY subj (A). SAVE OUTFILE = "C:\My Documents\gnat\bg75.sav". *** fruitgoodRT750 ***. GET FILE = "C:\My Documents\gnat\gnatdemo.sav". SELECT IF (bcode = 'fruitgoodRT750'). AGGREGATE /OUTFILE=* /BREAK=subj /fg75hit = SUM(hit) /fg75fal = SUM(falsalr) /fg75mis = SUM(miss) /fg75cor = SUM(corrrej). SORT CASES BY subj (A). SAVE OUTFILE = "C:\My Documents\gnat\fg75.sav". *** bugsbadRT750 ***. GET FILE = "C:\My Documents\gnat\gnatdemo.sav". SELECT IF (bcode = 'bugsbadRT750'). AGGREGATE /OUTFILE=* /BREAK=subj /bb75hit = SUM(hit) /bb75fal = SUM(falsalr) /bb75mis = SUM(miss) /bb75cor = SUM(corrrej). SORT CASES BY subj (A). SAVE OUTFILE = "C:\My Documents\gnat\bb75.sav". *** fruitbadRT750 ***. GET FILE = "C:\My Documents\gnat\gnatdemo.sav". SELECT IF (bcode = 'fruitbadRT750'). AGGREGATE /OUTFILE=* /BREAK=subj /fb75hit = SUM(hit) /fb75fal = SUM(falsalr) /fb75mis = SUM(miss) /fb75cor = SUM(corrrej). SORT CASES BY subj (A). SAVE OUTFILE = "C:\My Documents\gnat\fb75.sav". *** bugsgoodRT600 ***. GET FILE = "C:\My Documents\gnat\gnatdemo.sav". SELECT IF (bcode = 'bugsgoodRT600'). AGGREGATE /OUTFILE=* /BREAK=subj /bg60hit = SUM(hit) /bg60fal = SUM(falsalr) /bg60mis = SUM(miss) /bg60cor = SUM(corrrej). SORT CASES BY subj (A). SAVE OUTFILE = "C:\My Documents\gnat\bg60.sav". *** fruitgoodRT600 ***. GET FILE = "C:\My Documents\gnat\gnatdemo.sav". SELECT IF (bcode = 'fruitgoodRT600'). AGGREGATE /OUTFILE=* /BREAK=subj /fg60hit = SUM(hit) /fg60fal = SUM(falsalr) /fg60mis = SUM(miss) /fg60cor = SUM(corrrej). SORT CASES BY subj (A). SAVE OUTFILE = "C:\My Documents\gnat\fg60.sav". *** bugsbadRT600 ***. GET FILE = "C:\My Documents\gnat\gnatdemo.sav". SELECT IF (bcode = 'bugsbadRT600'). AGGREGATE /OUTFILE=* /BREAK=subj /bb60hit = SUM(hit) /bb60fal = SUM(falsalr) /bb60mis = SUM(miss) /bb60cor = SUM(corrrej). SORT CASES BY subj (A). SAVE OUTFILE = "C:\My Documents\gnat\bb60.sav". *** fruitbadRT600 ***. GET FILE = "C:\My Documents\gnat\gnatdemo.sav". SELECT IF (bcode = 'fruitbadRT600'). AGGREGATE /OUTFILE=* /BREAK=subj /fb60hit = SUM(hit) /fb60fal = SUM(falsalr) /fb60mis = SUM(miss) /fb60cor = SUM(corrrej). SORT CASES BY subj (A). SAVE OUTFILE = "C:\My Documents\gnat\fb60.sav". *** assembling the files ***. MATCH FILES /FILE= "C:\My Documents\gnat\bg75.sav" /FILE= "C:\My Documents\gnat\fg75.sav" /FILE= "C:\My Documents\gnat\bb75.sav" /FILE= "C:\My Documents\gnat\fb75.sav" /FILE= "C:\My Documents\gnat\bg60.sav" /FILE= "C:\My Documents\gnat\fg60.sav" /FILE= "C:\My Documents\gnat\bb60.sav" /FILE= "C:\My Documents\gnat\fb60.sav" /BY subj. EXECUTE. RECODE bg75hit bg75fal bg75mis bg75cor fg75hit fg75fal fg75mis fg75cor bb75hit bb75fal bb75mis bb75cor fb75hit fb75fal fb75mis fb75cor bg60hit bg60fal bg60mis bg60cor fg60hit fg60fal fg60mis fg60cor bb60hit bb60fal bb60mis bb60cor fb60hit fb60fal fb60mis fb60cor (SYSMIS=0). EXECUTE. *** save the data file (1 line of data for each subject) ***. SAVE OUTFILE = "C:\My Documents\gnat\gnatdata.sav". *** correcting for "perfect scores" ***. RECODE bg75hit bg75fal bg75mis bg75cor fg75hit fg75fal fg75mis fg75cor bb75hit bb75fal bb75mis bb75cor fb75hit fb75fal fb75mis fb75cor bg60hit bg60fal bg60mis bg60cor fg60hit fg60fal fg60mis fg60cor bb60hit bb60fal bb60mis bb60cor fb60hit fb60fal fb60mis fb60cor (30=29.65) (0=.35). EXECUTE. *** proportion of hits and false alarms for each block ***. COMPUTE pbg75hit=bg75hit/30. COMPUTE pbg75fal=bg75fal/30. COMPUTE pfg75hit=fg75hit/30. COMPUTE pfg75fal=fg75fal/30. COMPUTE pbb75hit=bb75hit/30. COMPUTE pbb75fal=bb75fal/30. COMPUTE pfb75hit=fb75hit/30. COMPUTE pfb75fal=fb75fal/30. COMPUTE pbg60hit=bg60hit/30. COMPUTE pbg60fal=bg60fal/30. COMPUTE pfg60hit=fg60hit/30. COMPUTE pfg60fal=fg60fal/30. COMPUTE pbb60hit=bb60hit/30. COMPUTE pbb60fal=bb60fal/30. COMPUTE pfb60hit=fb60hit/30. COMPUTE pfb60fal=fb60fal/30. *** computing d-prime for each block ***. COMPUTE bhbg75 = PROBIT (bg75hit/30). COMPUTE bhfg75 = PROBIT (fg75hit/30). COMPUTE bhbb75 = PROBIT (bb75hit/30). COMPUTE bhfb75 = PROBIT (fb75hit/30). COMPUTE bhbg60 = PROBIT (bg60hit/30). COMPUTE bhfg60 = PROBIT (fg60hit/30). COMPUTE bhbb60 = PROBIT (bb60hit/30). COMPUTE bhfb60 = PROBIT (fb60hit/30). COMPUTE bfbg75 = PROBIT (bg75fal/30). COMPUTE bffg75 = PROBIT (fg75fal/30). COMPUTE bfbb75 = PROBIT (bb75fal/30). COMPUTE bffb75 = PROBIT (fb75fal/30). COMPUTE bfbg60 = PROBIT (bg60fal/30). COMPUTE bffg60 = PROBIT (fg60fal/30). COMPUTE bfbb60 = PROBIT (bb60fal/30). COMPUTE bffb60 = PROBIT (fb60fal/30). COMPUTE dbg75=bhbg75-bfbg75. COMPUTE dfg75=bhfg75-bffg75. COMPUTE dbb75=bhbb75-bfbb75. COMPUTE dfb75=bhfb75-bffb75. COMPUTE dbg60=bhbg60-bfbg60. COMPUTE dfg60=bhfg60-bffg60. COMPUTE dbb60=bhbb60-bfbb60. COMPUTE dfb60=bhfb60-bffb60. *** computing d-prime for each pairing collapsed across response deadlines ***. COMPUTE bhbg = PROBIT ((bg75hit+bg60hit)/60). COMPUTE bhfg = PROBIT ((fg75hit+fg60hit)/60). COMPUTE bhbb = PROBIT ((bb75hit+bb60hit)/60). COMPUTE bhfb = PROBIT ((fb75hit+fb60hit)/60). COMPUTE bfbg = PROBIT ((bg75fal+bg60fal)/60). COMPUTE bffg = PROBIT ((fg75fal+fg60fal)/60). COMPUTE bfbb = PROBIT ((bb75fal+bb60fal)/60). COMPUTE bffb = PROBIT ((fb75fal+fb60fal)/60). COMPUTE dbg=bhbg-bfbg. COMPUTE dfg=bhfg-bffg. COMPUTE dbb=bhbb-bfbb. COMPUTE dfb=bhfb-bffb. *** computing bias for each pairing collapsed across response deadlines ***. COMPUTE bzbg = PROBIT ((1-(bg75fal+bg60fal)/60)). COMPUTE bzfg = PROBIT ((1-(fg75fal+fg60fal)/60)). COMPUTE bzbb = PROBIT ((1-(bb75fal+bb60fal)/60)). COMPUTE bzfb = PROBIT ((1-(fb75fal+fb60fal)/60)). COMPUTE bbg = PDF.NORMAL ((bzbg-dbg),0,1) / PDF.NORMAL (bzbg,0,1). COMPUTE bfg = PDF.NORMAL ((bzfg-dfg),0,1) / PDF.NORMAL (bzfg,0,1). COMPUTE bbb = PDF.NORMAL ((bzbb-dbb),0,1) / PDF.NORMAL (bzbb,0,1). COMPUTE bfb = PDF.NORMAL ((bzfb-dfb),0,1) / PDF.NORMAL (bzfb,0,1). *** overall analysis of d-prime collapsed across response deadline ***. DESCRIPTIVES VARIABLES=dfg dfb dbg dbb /STATISTICS=MEAN STDDEV MIN MAX . GLM dfg dfb dbg dbb /WSFACTOR = category 2 Polynomial valence 2 Polynomial /METHOD = SSTYPE(3) /CRITERIA = ALPHA(.05) /WSDESIGN = category valence category*valence . *** bias analysis ***. DESCRIPTIVES VARIABLES=bfg bfb bbg bbb /STATISTICS=MEAN STDDEV MIN MAX . GLM bfg bfb bbg bbb /WSFACTOR = category 2 Polynomial valence 2 Polynomial /METHOD = SSTYPE(3) /CRITERIA = ALPHA(.05) /WSDESIGN = category valence category*valence .