Macworth Clock Vigilance Test

Technical Manual

Script Author: Jeffrey Q. Ouyang (qijia.ouyang@gmail.com)

Created: January 08, 2011

Last Modified: January 08, 2025 by K. Borchert (katjab@millisecond.com), Millisecond

Script Copyright © Millisecond Software, LLC

Background

This script implements the Mackworth Clock Vigilance Test; a go/nogo test to measure a persons's ability to sustain attention in the face of monotonous stimulation with rare target events. The implemented procedure is heavily inspired by Lichstein et al (2000).

References

Lichstein, K. L., Riedel, B. W., & Richman, S. L. (2000). The Mackworth Clock Test: A Computerized Version. The Journal of Psychology, 134(2), 153–161. https://doi.org/10.1080/00223980009600858

Mackworth, N. H. (1948). The breakdown of vigilance during prolonged visual search. Quarterly Journal of Experimental Psychology, I , 6-21.

Adjustments To Z-Scores As Described 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)

Duration

60 minutes

Description

Participants watch a red dot jump from one circle position to next position (100) in a clockwise fashion at constant speed. Occasionally, the red dot makes a larger jump. Participants are asked to press the Spacebar whenever they notice such a skip event (go event).

Procedure

Practice: the script provides an optional practice session (see editable parameters to turn it off).
The practice session runs for 1 minute and presents 3 skip events at fixed times.

Test Procedure: by default the script runs 2 rounds (duration of rounds can be set via editable parameters)
There is no break btw rounds (round2 picks up where round1 left off).
The default length of one round is 30 minutes in this script (see Mackworth, 1948 and Lichstein et al, 2000).

1. A circle, with 100 equally spaced lightgray 'slots' is presented on the computer screen.
2. A red dot starts from the 12'o clock position and flashes in turn in each "slot".
2a.The dot stays in each slot for 1s.
3. The signal event is when the dot skips 4 positions (default, can be edited via editable parameters).
3a.The subject identifies this event by hitting the space bar (or other user-definable key).
3b.Total number of signal events is user-definable (default: 12 skip events during one round, see Mackworth, 1948 and Lichstein et al, 2000)


Algorithm To Generate The Skip Event Times:

The algorithm to generate the skip events in this script, attempts to fulfill three constraints

1. the skipEvents are separated by the set responseWindow

2. the first skip event occurs around 1 minute into the round (see Lichstein et al, 2000)
=> based on a 30 minute round length (Lichstein et al, 2000), the general proportion of 1/30
is used to calculate the onset of the first signal in this script

3. the last skip event cannot occur during the last 10 minutes into the round (see Lichstein et al, 2000)
=> based on a 30 minute round length (Lichstein et al, 2000), the general proportion of 10/30 = 1/3
is used to calculate the last acceptable time for the last signal in this script

All skip events timings are based on an average skip interval based on 2/3*the duration of the task
and added with some random juggle time to the previous skipTime in this script.
For example: the average skip interval for a 30 minute round, is calculated as ~1.5Minutes

IMPORTANT: if the script cannot generate a sequence of skip events that fulfill those constraints
within 500 attempts, the script uses the default sequence provided in list.skipEventTime.
These emergency skiptimes were generated for the default settings of this script
(30 minute round with 12 skip events etc.).
If the emergency sequence is used, the data file will be 'flagged'.

Instructions

check under section Editable Instructions

Scoring

Zscore Adjustments Of Retrieval Scores
zScore Adjustements of hit and false alarm (FA) rates are based on recommendations by Gregg & Sedikides (2010, p.148).
If the hit rate / FA rate is 0 => 0.005 is used instead
IF the hit rate / FA rate is 1.0 => 0.995 is used instead

Summary Data

File Name: mackworthclock_summary*.iqdat

Data Fields

NameDescription
inquisit.version Inquisit version number
computer.platform Device platform: win | mac |ios | android
computer.touch 0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities
computer.hasKeyboard 0 = no external keyboard detected; 1 = external keyboard detected
startDate Date the session was run
startTime Time the session was run
subjectId Participant ID
groupId Group number
sessionId Session number
elapsedTime Session duration in ms
completed 0 = Test was not completed
1 = Test was completed
Round 1 Data - Performance Metricsfile Stores The Same Variables For Round 2
flag1 0 = no issues with generating the skip times in this round
1 = the skip times in this round could not be generated; the default
values from list.skipEventTimes were used
IMPORTANT: works only for default settings of script
meanSkipInterval1 The mean skip interval (in ms) - based on actual flash timestamps- in round1
(skip interval = difference in timestamps of consecutive skip flashes)
hitRT1 Mean hit response time (ms) to skip events in round1 ( -999 => no skipRTs were recorded in this round)
skipEvents1 Number of skip events in round1
hits1 Number of hits in round1
hitRate1 Hitrate in round1
missRate1 Missrate in round1 (missrate = 1- hitRate)
noSkipEvents1 Number of no skip events in round1
fa1 Number of false alarms in round1
faRate1 False alarm rate in round1
crRate1 Correct rejection rate in round1 (crRate = 1-faRate)
Signal Detection Measures
zHitRate1 Z-score of hit rate in round1
zFARate1 Z-score of fa rate in round1
dprime1 Computes d' (parametric measure of discriminability btw. signals and noise)
dprime = z(hitRate)-z(faRate)
=> Range (in this script)
-5.1516586840152740479 <= dprime <= 5.1516586840152740479 (=perfect performance)
=> The higher the value, the better signals (here: skips) were overall distinguished from noise (no skips)
(d' = 0: chance performance; negative d-primes: participant treated nontargets as targets and targets as nontargets)
c1 Criterion measure
c-criterion in signal detection:The absolute value of c provides an indication of the strength of
the subject bias
negative when participant more likely to report that signal (here: a skip) is present ('liberal')
positive for favoring caution

Raw Data

File Name: mackworthclock_raw*.iqdat

Data Fields

NameDescription
build Inquisit version number
computer.platform Device platform: win | mac |ios | android
computer.touch 0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities
computer.hasKeyboard 0 = no external keyboard detected; 1 = external keyboard detected
date Date the session was run
time Time the session was run
subject Participant ID
group Group number
session Session number
blockcode The name the current block (built-in Inquisit variable)
blocknum The number of the current block (built-in Inquisit variable)
trialcode The name of the currently recorded trial (built-in Inquisit variable)
trialnum The number of the currently recorded trial (built-in Inquisit variable)
trialnum is a built-in Inquisit variable; it counts all trials run
even those that do not store data to the data file.
roundCounter Tracks the number of rounds run (default: 2 rounds)
roundFlag 0 = the theoretical skip timepoints for the current round were generated without issue
1 = the theoretical skip timepoints for the current round could not be generated
the default values in list.skipEventTime are used ( these values only work correctly for the default script settings!)
nextSkipTime Stores the calculated next skipTime (in ms) => if the script.elapsedTime at the end of a trial
exceeds this time, a skip trial is initiated
flashTimeStamp The timestamp of the current flash (timestamp = measured in ms based on script starttime)
responseWindow 1 = the response Window is active AT THE BEGINNING of the trial
0 = the response Window is inactive AT THE BEGINNING of the trial
the script checks at the end of the trial whether the responseWindow was still active at time of a response
script.elapsedTime The script elapsed time (in ms) at the end of the current trial
response The scancode of the response (57 = spacebar press; 0 = no response)
latency The response latency (in ms) of the current trial (relative to trial start) - if no response, actual trial duration
skipRT Sums up trial latencies for all trials with an active responseWindow after a skip
hit 1 = hit (spacebar pressed after skipped event within allowed timeframe)
0 = no hit
falseAlarm 1 = False Alarm (spacebar pressed outside of response window after a skip event)
0 = no FA
hitsPerRound Counts all hits during current round
falseAlarmsPerRound Counts all false alarms during current round
skipCount Counts the number of skipped events during current round
meanSkipIntervalMS The mean skip interval (in ms) based on actual skip timestamps for the current round
Skipevents Timings: Debugging Variables
avgEventInterval The calculated average skip interval (in ms) used to sample the skipEvents
list.skipEventTime.itemCount The number of skip events stored in list.skipEventTime (note: this should always be 1 more than the actual number of skip events)
attempts The number of times the script attempted to generated the list of skip events to fulfill all three criteria
roundStartTime The timestamp of the current round start
e1-12 Calculated timestamp of the skip event 1-12 (a skip should be run if the script.elapsedTime of the current trial exceeds this duration)
e13 Pseudo skip event (scheduled to appear after the end of the round)
roundEndTime Scheduled timestamp of the end of the current round

Parameters

The procedure can be adjusted by setting the following parameters.

NameDescriptionDefault
User-Definable Macworth Clock Test Parameters
runPractice True = the task begins with a short practice session.
the practice session lasts 1 minute and runs 2 skip events
false = no practice session is run
true
numberOfRounds Number of rounds run ( the rounds are *NOT* announced to participants)
summary variables provided for max. 2 rounds only
2
skipStep Number of steps covered for a skip ( Lichstein et al. reporting using a quadruple jump instead of a single jump)4
totalRoundRunTime Amount of time in ms for one round (30 minutest per round) - Lichstein et al (2000)1800000
flashInterval Interval (in ms) between regular dot "flashes" - Lichstein et al (2000)1000
totalRoundSkipEvents Total number of signal (skip) events per round - Lichstein et al (2000)12
responseWindowMS The max time in ms that a participant can respond after a signal (skip) event - Lichstein et al (2000)8000
signalPeriod The signals appear only during the first 2/3 of the round
this value is based on Lichstein et al (2000, p.155) who restricted
signals to the first 20 minutes of a 30 minute round
the max signal period cannot be larger than 1
and should probably not be restricted more than the default setting
20/30
firstSignalOnset The first signal should appear around 1/30 into the round
this value is based on Lichstein et al (2000, p.155) who started
the first signal around 1 minute into a (30min) round
recommended not to change; the script ensures that the first
flash cannot be a signal flash.
1/30
Ui Parameters
circleProportion The proportion of the circle ( 47.5% is the max for a dotHeightPct of 2.5%)0.475
dotHeightPct The size of the circle dots (the moving red dot is about 95% of a circle dot)2.5%