Introduction

The Implicit Association Task (IAT) is a well known very popular reaction time test in social psychology.

The original IAT paper by Greenwald and colleagues (1998) has been cited more than 6000 times (as of December 2021), which means this study has received a lot of attention from other researchers.

The task is very popular among social psychologists, because unlike the frequently used questionnaire methods, this method (seem to) provide an object measure of people’s social attitudes.

In short, in an IAT task, people see words and need to classify them, for example as "pleasant" or "unpleasant". The trick is that while people classify words, there are task irrelevant categories. For example, when classifying names according to racial group (in the US, different ethnic groups have their own popular names, like Ebony among African Americans), people are also shown the irrelevant categories "pleasant" and "unpleasant". The IAT argument is that people’s response speed is unconsciously influenced by the task-irrelevant classification categories (e.g., racists might respond more quickly to identifying the name Ebony when the correct category "black" is closely presented to the word "unpleasant").

In the original paper it says about this:

Of course, construct validity of the IAT measure cannot be assumed just from the suspicion that virtually all White Americans may have automatic negative associations to African American names. There is a plausible alternative interpretation: that Experiment 3’s White college student subjects were much less familiar with the African American stimulus names than they were with the White-American stimulus names. This differential familiarity, coupled with the expectation of greater liking for more familiar stimuli (Zajonc, 1968), could explain the IAT results. This possible alternative to the implicit racism interpretation is considered further in the General Discussion.

— Greenwald et al.
1998
The way some social psychologists interprete the IAT has led to controversy. Read here an interesting piece from the Wall Street Journal how the IAT has been abused to conclude we are all racists at heart. Or are we maybe? Time for critical thinking!

The interpretation of the IAT as a measure to discover unconsciously held beliefs is debatable, but that has not made the IAT any less popular, and PsyToolkit can help you to run your own IAT experiment. Use it responsibly, though! When you write your report about the IAT, your teacher will be more impressed when you are able to list the challenges in interpreting IAT results. So it is good to list the criticisms of IAT in your report. You might also look up how the IAT people have responded to such criticism.

There are lots of newer articles on this topic, of course. Currently, we are working on adding some lessons and more resources on this popular paradigm. Check this website soon again.

About this implementation

This is based on Experiment 1 of the original Greenwald et al. (1998) paper. You really need to carefully read the Greenwald paper to understand the logic of the design. One of the issues is that you really need different groups of participants, because the order of blocks influences response times as well. The PsyToolkit code gives tips on how to this.

The words used are of flowers and insects. This means that your insect and flower knowledge needs to be pretty up to date. Many English-fluent foreigners might never have seen some of these words before (in fact, many native English speakers might not have either, unless they are font of gardening). It is best to run the study with your own set of words. This is where you can show your creativity, and again, this is where you can impress your teacher with coming up with an interesting set of stimuli (apart from words, you can use images).
You do not want that stimuli repeat themselves immedeately or ever; that is why the "all_before_repeat" option is used. This makes sure that a chosen stimulus (chosen from the table) will not be used before all other stimuli have been used.

Run the demo

In this example, you will see words and you need to categorize.

Data output file

In PsyToolkit, the data output file is simply a textfile. The save line of the PsyToolkit experiment script determines what is being saved in the data output file. Typically, for each experimental trial, you would have exactly one line in your text file, and each number/word on that line gives you the information you need for your data analysis, such as the condition, response speed, and whether an error was made.

Meaning of the columns in the output datafile. You need this information for your data analysis.

Colum Meaning

1

Blockname

2

Blocknumber

3

Centrally presented word

4

Response time

5

Status (1=correct, 2=wrong, 3=too slow)

PsyToolkit code

Click to expand the PsyToolkit script code (part of zip file below)
# PsyToolkit implementation of a shortened IAT (# indicates comment lines)
# 
# a short simplified version of the Implicit Association Task (IAT)
# the word stimulu are taken from "Measuring Individual Differences
# in Implicit Cognition: The Implicit Association Test"
# (Greenwald et al., 1998, Journal of Personality and Social Psych).
# note that there are further comments before the blocks start

bitmaps
  instructions
  smiley
  frowny
  ready
  
fonts
  arial 18

# in the following tables, there is the stimulus word and two possible
# responses (depending on which target category is presented left or right)

table flowers_insects_list
 "aster"       1 2
 "clover"      1 2
 "hyacinth"    1 2
 "marigold"    1 2
 "poppy"       1 2
 "azalea"      1 2
 "crocus"      1 2
 "iris"        1 2
 "orchid"      1 2
 "rose"        1 2
 "bluebell"    1 2
 "daffodil"    1 2
 "lilac"       1 2
 "pansy"       1 2
 "tulip"       1 2
 "buttercup"   1 2
 "daisy"       1 2
 "lily"        1 2
 "peony"       1 2
 "violet"      1 2
 "camation"    1 2
 "gladiola"    1 2
 "magnolia"    1 2
 "petunia"     1 2
 "zinnia"      1 2
 "ant" 	       2 1
 "caterpillar" 2 1
 "flea"        2 1
 "locust"      2 1
 "spider"      2 1
 "bedbug"      2 1
 "centipede"   2 1
 "fly" 	       2 1
 "maggot"      2 1
 "tarantula"   2 1
 "bee" 	       2 1
 "cockroach"   2 1
 "gnat"        2 1
 "mosquito"    2 1
 "termite"     2 1
 "beetle"      2 1
 "cricket"     2 1
 "hornet"      2 1
 "moth"        2 1
 "wasp"        2 1
 "blackfly"    2 1
 "dragonfly"   2 1
 "horsefly"    2 1
 "roach"       2 1
 "weevil"      2 1

table pleasant_unpleasant_list
 "caress"      1 1
 "freedom"     1 1
 "health"      1 1
 "love"        1 1
 "peace"       1 1
 "cheer"       1 1
 "friend"      1 1
 "heaven"      1 1
 "loyal"       1 1
 "pleasure"    1 1
 "diamond"     1 1
 "gentle"      1 1
 "honest"      1 1
 "lucky"       1 1
 "rainbow"     1 1
 "diploma"     1 1
 "gift"        1 1
 "honor"       1 1
 "miracle"     1 1
 "sunrise"     1 1
 "family"      1 1
 "happy"       1 1
 "laughter"    1 1
 "paradise"    1 1
 "vacation"    1 1
 "abuse"       2 1
 "crash"       2 1
 "filth"       2 1
 "murder"      2 1
 "sickness"    2 1
 "accident"    2 1
 "death"       2 1
 "grief"       2 1
 "poison"      2 1
 "stink"       2 1
 "assault"     2 1
 "disaster"    2 1
 "hatred"      2 1
 "pollute"     2 1
 "tragedy"     2 1
 "bomb"        2 1
 "divorce"     2 1
 "jail"        2 1
 "poverty"     2 1
 "ugly"        2 1
 "cancer"      2 1
 "evil"        2 1
 "kill"        2 1
 "rotten"      2 1
 "vomit"       2 1
 "agony"       2 1
 "prison"      2 1

table flowers_insects_pleasant_unpleasant_list
 "aster"       1 2
 "clover"      1 2
 "hyacinth"    1 2
 "marigold"    1 2
 "poppy"       1 2
 "azalea"      1 2
 "crocus"      1 2
 "iris"        1 2
 "orchid"      1 2
 "rose"        1 2
 "bluebell"    1 2
 "daffodil"    1 2
 "lilac"       1 2
 "pansy"       1 2
 "tulip"       1 2
 "buttercup"   1 2
 "daisy"       1 2
 "lily"        1 2
 "peony"       1 2
 "violet"      1 2
 "camation"    1 2
 "gladiola"    1 2
 "magnolia"    1 2
 "petunia"     1 2
 "zinnia"      1 2
 "ant" 	       2 1
 "caterpillar" 2 1
 "flea"        2 1
 "locust"      2 1
 "spider"      2 1
 "bedbug"      2 1
 "centipede"   2 1
 "fly" 	       2 1
 "maggot"      2 1
 "tarantula"   2 1
 "bee" 	       2 1
 "cockroach"   2 1
 "gnat"        2 1
 "mosquito"    2 1
 "termite"     2 1
 "beetle"      2 1
 "cricket"     2 1
 "hornet"      2 1
 "moth"        2 1
 "wasp"        2 1
 "blackfly"    2 1
 "dragonfly"   2 1
 "horsefly"    2 1
 "roach"       2 1
 "weevil"      2 1
 # note the pleasant unpleasant cats are not turned around
 "caress"      1 1
 "freedom"     1 1
 "health"      1 1
 "love"        1 1
 "peace"       1 1
 "cheer"       1 1
 "friend"      1 1
 "heaven"      1 1
 "loyal"       1 1
 "pleasure"    1 1
 "diamond"     1 1
 "gentle"      1 1
 "honest"      1 1
 "lucky"       1 1
 "rainbow"     1 1
 "diploma"     1 1
 "gift"        1 1
 "honor"       1 1
 "miracle"     1 1
 "sunrise"     1 1
 "family"      1 1
 "happy"       1 1
 "laughter"    1 1
 "paradise"    1 1
 "vacation"    1 1
 "abuse"       2 2
 "crash"       2 2
 "filth"       2 2
 "murder"      2 2
 "sickness"    2 2
 "accident"    2 2
 "death"       2 2
 "grief"       2 2
 "poison"      2 2
 "stink"       2 2
 "assault"     2 2
 "disaster"    2 2
 "hatred"      2 2
 "pollute"     2 2
 "tragedy"     2 2
 "bomb"        2 2
 "divorce"     2 2
 "jail"        2 2
 "poverty"     2 2
 "ugly"        2 2
 "cancer"      2 2
 "evil"        2 2
 "kill"        2 2
 "rotten"      2 2
 "vomit"       2 2
 "agony"       2 2
 "prison"      2 2

task flowers_insects
  keys e i
  table flowers_insects_list
  draw off
    if &order == 1
      show text "flower" -250 -50
      show text "insect"  250 -50
    fi
    if &order == 2
      show text "insect" -250 -50
      show text "flower"  250 -50
    fi
  draw on
  delay 100
  show rectangle 0 0 10 10   255 255 255 # fixpoint
  delay 200
  clear -1
  delay 200
  show text @1
  if &order == 1
    readkey @2 3000
  fi
  if &order == 2
    readkey @3 3000
  fi
  clear -1
  if STATUS != CORRECT
    show bitmap frowny
    delay 100
    clear -1
    delay 100
    show bitmap frowny
    delay 100
    clear -1
    delay 100
    show bitmap frowny
    delay 100
    clear -1
    delay 300
  fi
  if STATUS == CORRECT
    show bitmap smiley
    delay 300
    clear -1
    delay 300
  fi
  delay 700
  save BLOCKNAME BLOCKNUMBER @1 RT STATUS

task pleasant_unpleasant
  keys e i
  table pleasant_unpleasant_list
  show text "pleasant"   -250  50
  show text "unpleasant"  250  50
  delay 100
  show rectangle 0 0 10 10   255 255 255 # fixpoint
  delay 200
  clear -1
  delay 200
  show text @1
  readkey @2 3000
  clear -1
  if STATUS != CORRECT
    show bitmap frowny
    delay 100
    clear -1
    delay 100
    show bitmap frowny
    delay 100
    clear -1
    delay 100
    show bitmap frowny
    delay 100
    clear -1
    delay 300
  fi
  if STATUS == CORRECT
    show bitmap smiley
    delay 300
    clear -1
    delay 300
  fi
  delay 700
  save BLOCKNAME BLOCKNUMBER @1 RT STATUS

task mixed
  keys e i
  table flowers_insects_pleasant_unpleasant_list
  draw off
    if &order == 1
      show text "flower" -250 -50
      show text "insect"  250 -50
    fi
    if &order == 2
      show text "insect" -250 -50
      show text "flower"  250 -50
    fi
    show text "pleasant"   -250 50
    show text "unpleasant"  250 50
  draw on
  delay 100
  show rectangle 0 0 10 10   255 255 255 # fixpoint
  delay 200
  clear -1
  delay 200
  show text @1
  if &order == 1
    readkey @2 3000
  fi
  if &order == 2
    readkey @3 3000
  fi
  clear -1
  if STATUS != CORRECT
    show bitmap frowny
    delay 100
    clear -1
    delay 100
    show bitmap frowny
    delay 100
    clear -1
    delay 100
    show bitmap frowny
    delay 100
    clear -1
    delay 300
  fi
  if STATUS == CORRECT
    show bitmap smiley
    delay 300
    clear -1
    delay 300
  fi
  delay 700
  save BLOCKNAME BLOCKNUMBER @1 RT STATUS

######################################################################
# the blocks start here

# the blockorder is randomly set

# order 1
# 1) flowers_insects
# 2) pleasant_unpleasant
# 3) mix_compatible
# 4) insects_flowers
# 5) mix_incompatible
# in the analysis, you want to compare blocks 5 and 4

# order 2
# 1) insects_flowers
# 2) pleasant_unpleasant
# 3) mix_incompatible
# 4) flowers_insects
# 5) mix_compatible
# in the analysis, you want to compare blocks 5 and 4

# ---------------------------------------------------------

block instructions
  message instructions

block flowers_insects
  set &order 1 ## order 1 means: flowers=left,insects=right
  tasklist
    flowers_insects 50 all_before_repeat
  end
  feedback
    set &meanrt mean c4 ; select c5 == 1 && c2 == 1
    text 0 0 &meanrt ; prefix "Your average response speed is " ; postfix " milliseconds"
    text 0 100 "press space to continue"    
  end

block pleasant_unpleasant
  message ready
  tasklist
     pleasant_unpleasant 50 all_before_repeat
  end
  feedback
    set &meanrt mean c4 ; select c5 == 1 && c2 == 2
    text 0 0 &meanrt ; prefix "Your average response speed is " ; postfix " milliseconds"
    text 0 100 "press space to continue"    
  end

block mix_compatible
  message ready
  set &order 1 ## order 1 means: flowers=left,insects=right  
  tasklist
     mixed 50 all_before_repeat
  end
  feedback
    set &meanrt_com mean c4 ; select c5 == 1 && c2 == 3
    text 0 0 &meanrt ; prefix "Your average response speed (compatible) is " ; postfix " milliseconds"
    text 0 100 "press space to continue"    
  end

block insects_flowers
  message ready
  set &order 2 ## order 2 means: flowers=right,insects=left
  tasklist
    flowers_insects 50 all_before_repeat
  end
  feedback
    set &meanrt mean c4 ; select c5 == 1 && c2 == 4
    text 0 0 &meanrt ; prefix "Your average response speed is " ; postfix " milliseconds"
    text 0 100 "press space to continue"    
  end

block mix_incompatible
  message ready
  set &order 2 ## order 2 means: flowers=right,insects=left
  tasklist
     mixed 50 all_before_repeat
  end
  feedback
    set &meanrt_inc mean c4 ; select c5 == 1 && c2 == 5
    set &iat_effect expression &meanrt_inc - &meanrt_com
    text 0 -100 &meanrt ; prefix "Your average response speed is in last block (incompatible) is " ; postfix " ms"
    text 0 0 &iat_effect ; prefix "Your IAT compatibility effect = INC - COM = "; postfix " ms"
    text 0 100 "press space to continue"
  end

# --------------------------------------------------------------------
# blockorder needs to be counterbalanced
# --------------------------------------------------------------------

blockorder
  instructions
  flowers_insects
  pleasant_unpleasant
  mix_compatible
  insects_flowers
  mix_incompatible

blockorder
  instructions
  insects_flowers
  pleasant_unpleasant
  mix_incompatible
  flowers_insects
  mix_compatible

Download

If you have a PsyToolkit account, you can upload the zipfile directly to your PsyToolkit account. Watch a video on how to do that. If you want to upload the zipfile into your PsyToolkit account, make sure the file is not automatically uncompressed (some browsers, especially Mac Safari, by default uncompress zip files). Read here how to easily deal with this.

Further reading

  • Greenwald, A.G., McGhee,D.E., & Schwartz, J.L.K. (1998). Measuring Individual Differences in Implicit Cognition: The Implicit Association Test. Journal of Personality and Social Psychology, 74, 1464-1480.