Return to the Alcohol GNAT page
___________________________________________________________________________________________________________________	

										   Alcohol GNAT
___________________________________________________________________________________________________________________
									
This script is in part based on the original gnatdemo.iqx by Brian Nosek (nosek@virginia.edu)
last updated:  03-09-2020 by K. Borchert (katjab@millisecond.com) for Millisecond Software, LLC

Script Copyright © 03-09-2020 Millisecond Software

___________________________________________________________________________________________________________________
BACKGROUND INFO 	
___________________________________________________________________________________________________________________
											
This script implements an Alcohol Go-Nogo Association Task (GNAT).
The Alcohol GNAT uses the Go-Nogo framework of responding to signal and noise stimuli to investigate implicit bias 
towards alcohol. In contrast to reaction time based tests of implicit bias (e.g. Implicit Association Test), 
the GNAT framework mainly focuses on accuracy data and specifically d prime measures (measures of sensitivity 
to distinguish signals from noise in signal detection theory) to infer implicit bias. Within the GNAT framework, 
greater sensitivity  to distinguish the signals (here: alcohol) from noise (here: non-alcoholic drinks) 
if the signal is paired with one attributeA (here: good) than if it's paired with another attributeB (here: bad) 
is indicative of a stronger association between  the target category and attributeA (here: alcohol-good) 
than between the target and attribut B (here: alcohol-bad).

											
The implemented procedure is similarly to:
											
Obasi, E.M., Cavanagh, L., Pittman, D.M., & Brooks, J.J. (2016). Effects of evaluative context in implicit 
cognitions associated with alcohol and violent behaviors. Addictive Behaviors Reports 3 (2016) 48–55										

GNAT Literature Reference:
Nosek, B. A., & Banaji, M. R. (2001). The go/no-go association task.  Social Cognition, 19(6), 625-666. 

Adjustments to z-scores as recommended by:
Gregg, A. & Sedikides, C. (2010). Narcissistic Fragility:
Rethinking Its Links to Explicit and Implicit Self-esteem, Self and Identity, 9:2, 142-161 (p.148)

___________________________________________________________________________________________________________________
TASK DESCRIPTION	
___________________________________________________________________________________________________________________
Participants are asked to categorize attributes (e.g. "happy"; "unhappy") and target items (e.g "BEER") into 
predetermined categories via keystroke presses. 

The basic go-nogo task is to press the Spacebar if an item (e.g. "happy") belongs to the category 
currently being tested  (e.g. "Good" = signal items)  and to do nothing if it doesn't (= noise items).

For practice, participants sort items into signal categories "Good" (as opposed to noise: items from 'Bad' category), 
"Bad" (as opposed to noise: items from 'Good' category), and "Alcoholic Drinks" 
(as opposed to noise: items from "non-alcoholic drinks" category).

For the test, participants are asked to sort items into the paired/combined categories (e.g. 
"Alcoholic Drinks OR Good" and "Alcoholic Drinks OR Bad"). When an item belongs to either one of these two categories,  
participants should press the Spacebar. If an item belongs to neither, participants should simply wait for the next
item to come on screen.

___________________________________________________________________________________________________________________	
DURATION 
___________________________________________________________________________________________________________________	
the default set-up of the script takes appr. 10 minutes to complete

___________________________________________________________________________________________________________________	
DATA FILE INFORMATION 
___________________________________________________________________________________________________________________	
The default data stored in the data files are:

(1) Raw data file: 'alcoholgnat_raw*.iqdat' (a separate file for each participant)

build:								The specific Inquisit version used (the 'build') that was run
computer.platform:					the platform the script was run on (win/mac/ios/android)
date, time, 						date and time script was run 
subject, group, 					with the current subject/groupnumber
script.sessionid:					with the current session id

blockcode, blocknum:				the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum: 				the name and number of the currently recorded trial (built-in Inquisit variable)
										Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
										that do not store data to the data file. 
										

responsetimeout_target:				time in ms that is allowed for response in a given target trial
responsetimeout_noise:				time in ms that is allowed for response in a given noise trial

signal:						  		1 = signal trial (spacebar response is correct); 
									0 = noise trial (no response is correct)
								
phase:								"training" (one category) vs. "test" (two categories)								

targettype:							"A"(here: A-alcoholic drinks)

pairing:							"AA" -> targetA-attributeA (here: alcoholic drinks and good)
									"AB" -> targetA-attributeB (here: alcoholic drinks and bad)
									
trialtype:							training phase: "training"
									test phase: "practice" vs. "test"

stimulusitem:						the presented stimulusitems in order of presentation in stimulusframes (see trials)
response:							response made (either 57 = Spacebar or 0 for no response)
correct:							the accuracy of response (1 = correct; 0 = error)
latency:							the latency of the response in ms (or if no response: response timeout duration)

(2) Summary data file: 'alcoholgnat_summary*.iqdat' (a separate file for each participant)

computer.platform:					the platform the script was run on (win/mac/ios/android)
script.startdate:					date script was run
script.starttime:					time script was started
script.subjectid:					assigned subject id number
script.groupid:						assigned group id number
script.sessionid:					assigned session id number
script.elapsedtime:					time it took to run script (in ms); measured from onset to offset of script
script.completed:					0 = script was not completed (prematurely aborted); 
									1 = script was completed (all conditions run)
								

parameters.responsetimeout2_signal:		stores the response timeouts in ms used for signals in the first gnat round (2 blocks) in this script (default: 700ms)
parameters.responsetimeout2_noise:		stores the response timeouts in ms used for noise in the first gnat round (2 blocks) in this script (default: 700ms)
parameters.responsetimeout3_signal:		stores the response timeouts in ms used in this study for signals in the second gnat round (2 blocks) in this script (default: 550ms)

parameters.responsetimeout3_noise:		stores the response timeouts in ms used for noise in the second gnat round (2 blocks) in this script (default: 550ms)
								Notes: responsetimeouts1 (1000ms) are used for practice only

propcorrect_AA:					overall proportion correct for pairing targetA-attributeA (here: alcoholic drinks-good); test trials only
propcorrect_ABd:				overall proportion correct for pairing targetA-attributeB (here: alcoholic drinks-bad); test trials only

Note: z-score calculations: adjustments (see Gregg & Sedikides, 2010, p.148)
If the hit rate  FA rate is 0 => 0.005 is used instead (aka 0.005 is added to the hitFA rate)
IF the hit rate  FA rate is 1.0 => 0.995 is used instead (aka 0.005 is subtracted from the hitFA rate)

rHit_AA:				hit rate for pairing targetA-attributeA (here: alcoholic drinks-good) across all responsetimeouts; test trials only
rFA_AA:					false alarm (FA) rate for pairing targetA-attributeA (here: alcoholic drinks-good) across all responsetimeouts; test trials only
zhit_AA:				z-score of hit rate for pairings targetA-attributeA (here: alcoholic drinks-good)
zFA_AA:					z-score of FA rate for pairings targetA-attributeA (here: alcoholic drinks-good)

AA_dprime:				Computes d' (parametric measure of sensitivity) for 'alcoholic drink-Good' Pairings
										=> Range (in this script): 
										-5.1516586840152740479 <= dprime <= 5.1516586840152740479 (=perfect performance)


rHit_AB:				hit rate for pairing targetA-attributeA (here: alcoholic drinks-bad) across all responsetimeouts; test trials only
rFA_AB:					false alarm (FA) rate for pairing targetA-attributeA (here: alcoholic drinks-bad) across all responsetimeouts; test trials only
zhit_AB:				z-score of hit rate for pairings targetA-attributeA (here: alcoholic drinks-bad)
zFA_AB:					z-score of FA rate for pairings targetA-attributeA (here: alcoholic drinks-bad)

AB_dprime:				Computes d' (parametric measure of sensitivity) for 'alcoholic drink-Bad' Pairings
										=> Range (in this script): 
										-5.1516586840152740479 <= dprime <= 5.1516586840152740479 (=perfect performance)
										
dprime_Diff:			the difference in dprimes for 'Alcohol-Good' and 'Alcohol-Bad' pairings										
										=> if d prime for Alcohol-Good is larger than for Alcohol-Bad (positive difference):
										participant more closely associated Alcohol with Good attributes than with Bad attributes,
										(IF the noise category was 'non-alcoholic' beverages)
										=> if d prime for Alcohol-Good is smaller than for Alcohol-Bad (negative difference):
										participant more closely associated Alcohol with Bad attributes than with Good attributes,
										(IF the noise category was 'non-alcoholic' beverages)										

___________________________________________________________________________________________________________________	
EXPERIMENTAL SET-UP 
___________________________________________________________________________________________________________________

Default GNAT Set-Up in this script:
(1) 3 training blocks: one training block each for categorizing targetA (signal: alcoholic drinks vs. noise: nonalcoholic drinks), 
attributeA (signal: good vs. noise: bad), attributeB (signal: bad vs. noise: good)
with response timeout of 1000ms (editable under section Editable Values)
-> block order is determined randomly
-> run 20 trials each (10 target:10 noise)

(2) 2 test blocks that combine targets (here: alcoholic drinks) and attributes (either good or bad)
with a faster response timeout (default: 750ms)
-> block order of pairings is determined randomly
-> each block runs 16 'practice trials' followed by 60 test trials (summary variables based on test trial performance only)
-> signal : noise = 1 : 1

(3) 2 test blocks that combine targets (here: alcoholic drinks) and attributes (either good or bad) 
with an even faster response timeout (default: 550ms)
-> block order of pairings is determined randomly
-> each block runs 16 'practice trials' followed by 60 test trials (summary variables based on test trial performance only)
-> signal : noise = 1 : 1

Notes: 
* Number of trials run as well as 'signal : noise' ratios can only be edited on block level (see section BLOCKS)

___________________________________________________________________________________________________________________	
STIMULI
___________________________________________________________________________________________________________________
24 stimuli are used for signals (ALCOHOLIC DRINKS) and noise items.
Go to section Editable Stimuli to check out the stimuli.

Note: the default set-up in this script uses alcoholic drinks as the signals and and non-alcoholic drinks as noise items.
__________________________________________________________________________________________________________________	
INSTRUCTIONS 
___________________________________________________________________________________________________________________
see section Editable Instructions

___________________________________________________________________________________________________________________	
EDITABLE CODE 
___________________________________________________________________________________________________________________	
check below for (relatively) easily editable parameters, stimuli, instructions etc. 
Keep in mind that you can use this script as a template and therefore always "mess" with the entire code 
to further customize your experiment.

The parameters you can change are:

!!!NOTE: "The most effective response deadlines for measuring automatic cognition are those fast enough
to eliminate perfect responding but not so fast as to lower accuracy substantially, with an 
approporiate range of response deadlines falling between 500 and 850ms." (Nosek & Banaji, 2001, p.636)

/responsetimeout1_signal:						stores the longest response timeouts in ms used in this study for targets
													Note: by default, the longest response timeout in this script is used for practice blocks
													that test attributes and targets separately (default: 1000ms)
													
/responsetimeout2_signal:						stores the next response timeouts in ms used in this study for targets
													Note: by default, in this script this is the first response time used for blocks
													that test attributes and targets simultaneously (default 750ms)
													
/responsetimeout3_signal:						stores the next response timeouts in ms used in this study for targets
													Note: by default, this is the second response time used for bloc
													ks
													that test attributes and targets simultaneously (default 550ms)

(same for noise trials: by default they are the same in this script)



/isi:											stores the interstimulus interval (time between offset of one stimulus and onset of next)