History of the PVT

The PVT-B is simply a 3-minute version of the regular 10-minute PVT. There is also a keyboard version here.

Sleep researchers have known for decades that a loss of sleep reduces vigilance. What is now widely known as the Psychomotor Vigilance Test is based on the work by Wilkinson and Houghton (1982). These authors had developed a test called the Unprepared Simple Reaction Time Test (USRT) which was run on something looking like a portable casette recorder. David Dinges elaborated this task and called it first simply Visual Reaction Time in a much cited paper (Dinges & Powell, 1985). It seems the term "PVT" was first used around 1990 (Graeber et al., 1990).

A good review paper of this task and its role in attention is the Lim and Dinges (2008) study. This study also discusses the effect of various drugs on the PVT and sleep.
There is good scientific evidence that sleep deprivation affects sustained attention (Wüst, 2011), something you need in many activities, including sitting down for an exam or driving a car.

Task description

In this task, the participant sees a red box. Every so often, a yellow running number is presented within this box. The participant needs to respond as quickly as possible to the running number. When responded, the running number disappears and participant waits for next number.

In the regular version, this task lasts exactly 10 minutes, but there are shorter versions, including the PVT-B (B for "brief"), which is a 3 minute version of this which has even been tested in by astronauts in the International Space Station (Tu et al., 2022).

There are different ways to extract scores from the data from a participant. The PVT scores include 3 measures:

  1. Average response time

  2. Number of failures to respond within the time limit of half a second (lapses, omissions)

  3. Number of responses when there is no yellow number (commissions)

Sleep deprivation can be measured in three ways in the PVT:

  1. Slower responses (i.e., longer avera response time)

  2. Increased number of omissions (lapses), that is, where people fail to respond within half a second.

  3. Increased number of commissions (responding when there is no number)

Advantages of the PVT-B (compared to standard PVT) are that it is considerably shorted and thus easier to integrate in a larger study. According to the authors, "PVT-B may be a useful tool for assessing behavioral alertness in settings where the duration of the 10-min PVT is considered impractical, although further validation in applied settings is needed." (Bassner, Mollicone, & Dinges, 2011).

You can calculate an overall performance score, as was for example done by Tu and colleagues (2022):

Overall Performance Score = 1 - ( Number of False starts + Number of lapses ) / ( All trials )

This score, however, ignores the response speed.

In this task, researchers like to express response times as reciprocal RTs in seconds. For example, a regular response time of 500 ms would then be: 1/1000 = 2 (seconds) reciprocal RT. Higher values indicate shorter RTs. Arguably, can be confusing, but there are good reasons for it. The 1/RT normalizes the normally skewed distribution of RTs.

Timing of trials

Timing is a key issue in this task and varies between different PVT versions. In this 3-minutes PVT-B version, the timing of one trials is as follows. You can of course change these variables as you please.

  1. An empty red box is shown and continuously visible across 3 minutes

  2. Do nothing for a random delay between 0 and 3 seconds (i.e., 3000 milliseconds)

  3. A counter starts running and is updated every 50 ms

  4. We give people up to 30 seconds ms to respond, even though responses slower than 500 ms are considered lapses

  5. Give feedback for 1 second: This is simply the number in the now stopped counter

In the PVT-B, random intervals are thus only between 0 and 3000 ms, this is different from the standard PVT, where it is between 2 and 10 seconds.

Participant instructions and feedback

In the normal PVT setup, participants are told to respond as quickly as possible. They do not get feedback when they respond to early or too late (i.e., after 500 ms).

Participants do not get feedback about their mistakes. If people try to be really fast, they will by definition make more early starts. They are not told they do this so there is no learning. Also, when people are too slow this no feedback is given.

The idea is that this allows researchers to measure the effects of sleep deprivation. One can question, however, if participants would not perform better with feedback.

Inconsistencies

The PVT-B article (Basner et al, 2011) is sometimes somewhat ambiguous, but this seems due to wrong use of the term Inter Stimulus Interval (ISI).

On the one hand the paper states: "The inter-stimulus intervals varied randomly from 1 to 4 s (including a 1 s RT feedback interval)."

On the other hand, it says (but not necessarily explicitly states) that the response window is up to 30 seconds:

"Both versions gave a signal after a 30 s period without response, which was counted as a lapse (see below) with 30 s response time."

The latter means that the inter-stimulus interval cannot possible be 1 to 4 seconds, it means that the response-stimulus interval is 1 to 4 seconds.

It seems that they actually mean Inter Response Interval instead of Inter Stimulus Interval.

Scores of people

So how to people perform on this task? The original Basner (2011) paper focuses mostly on validating the task in relation to the longer PVT task and the best estimate of RTs are in the figures, especially Figure 1. Of course, you could use the PVT 10 (10 minutes) for which there are more published data.

A good paper to get average data in the regular 10 minute PVT are in the paper by Thomann and colleagues (2014). Their Table 2 shows among other things the following for 67 healthy control participants. We added the corresponding regular RTs.

Table 1. 10 minute PVT scores from Table 2 in Thomann et al. (2014)

PVT measure

score ± standard deviation

corresponding RT where applicable

1/RT

4.51±0.42

222 ms

1/RT500

4.52±0.42

221 ms

1/RT variability

1.60±0.30

625 ms

Fastest 10%

5.46±0.45

183 ms

Slowest 10%

3.18±0.43

314 ms

False RT

1.99±2.88

Lapses

0.39±0.69

Notes about the table (these are direct quotes from Table 2 of the Thoman paper:

  • 1/RT refers to mean reciprocal reaction time (RT) in 1/seconds.

  • 1/RT500, mean reciprocal reaction time without RT of lapses in 1/seconds.

  • 1/RT variability, range between the 10th and the 90th percentile in 1/seconds.

  • Fastest 10%, mean of the reciprocal of the fastest 10% RTs in 1/seconds.

  • Slowest 10%, mean of the reciprocal of the slowest 10% RTs in 1/seconds.

  • Lapses, number of responses > 500 milliseconds (transformed by (SQR(x)+SQR(x+1)).

  • False RT, number of false responses divided by the number of valid stimuli in percentage.

The use of reciprocal RTs is common in the PVT literature. For example, a reciprocal RT of 4.51 is 1/4.41 seconds or 222 ms.

About this implementation

The task is relatively simple to implement, as it simply involves responding to a running timer in a box. People are only allowed to respond if a counter is shown. Response times shorter than 100 ms are also considered false starts, in line with the paper (Basner, 2011).

In the demo below, feedback is switch on. You can easily switch it off if you copy the code to your own account. In the options section, make sure to set &showDetailedFeedback to value 0 (in the code of the demo, it is at value 1)
  set &showDetailedFeedback 0

Run the demo of the three minute version

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

status (1=correct, 2=too early, 3=no response)

2

random delay chosen (between 0 and 2500 ms)

3

total time so far (up to 180,000, that is 3 seconds)

4

RT as measured from start of trial

5

RT as measured from onset of yellow counter

6

average RT so far in block

7

total number trials so far

8

number of failures to respond (lapses/omissions)

9

number of wrong response (starting before yellow counter, commissions)

PsyToolkit code

Click to expand the PsyToolkit script code (part of zip file below)
options
  fullscreen
  resolution fhd
  set &showDetailedFeedback 1 # 0 is official PVT ; 1 gives some useful participant feedback
  ## the static feedback RT is officially same as running color, but green is clearer
  set &staticRedChannel   255 ## if you set this to 0 it is not official, but it is nicer
  set &staticGreenChannel 255
  set &TOTAL_EXP 180000 ## PVT = 600000 = 600s = 10 mintues, PVT-B = 180000 = 180s = 3 minutes
  set &MIN_RT 100 ## RT must be 100 or more, otherwise it is counted as too early.
  set &lapseTime 500 ## what counts as lapse. 500 is standard, but can be set to 355 to match sensitivity of regular

bitmaps
  instructionsPVTBtouch

fonts
  regular arial 20
  medium  arial 40

# in the PVT-B, a trial lasts between 1 and 4 seconds. One of those
# seconds is used for the 1 second feedback to the participant about
# the trial

task pvtb
  font medium
  show rectangle 0 0 200 100 red
  show rectangle 0 0 190  90 black
  set &nTrials increase ## just a simple count of trials (i.e., each time a new stimulus counter starts)
  set $randomDelay random 0 3000 ## the response-stimulus interval is between 0 and 3000 ms
  set $firstround 1
  if &START_TIME_SET = 0
    set &START_TIME_SET 1 ## we only need to start the experimentBeginTime once
    timestamp experimentBeginTime
  fi
  timestamp beginTime
  timestamp now
  # ---------------------------------------------------------------------------------
  # $rtSinceStart = the time since the start of experiment, just for save line
  # rtSinceStimulusOnset = the time so far since the yellow numbers started
  # totalTime = the time so far in the whole experiment (needs to be below TOTAL_EXP)
  # now = is the current time
  # tmpRemaining = in case we reach end of response time
  # ---------------------------------------------------------------------------------
  # this while loop runs every timeframe, like for example 50 ms
  while $keypressed = 0 and $rtSinceStimulusOnset < 30000 and &totalTime < &TOTAL_EXP
    ## each time we go through this while loop we wait 50 ms
    ## it must be so short to create the running timer which needs to be updated
    ## but if we have almost reached max RT it might be less
    ## to deal with that we check it that is the case
    set $maxReadkeyTime 50
    set $tmpRemaining expression 30000 - $rtSinceStimulusOnset
    if $tmpRemaining < $maxReadkeyTime
      set $maxReadkeyTime $tmpRemaining
    fi
    ## now wait up to maxReadkeyTime, which is simethink like 50 or 100 ms
    readmouse l 1 $maxReadkeyTime
    if STATUS != TIMEOUT
      set $keypressed 1
      set $rtSinceStart expression $latestTime + RT ## the time since the start of trial
      if $stimulusPresent = 1
        set $actualRT expression $rtSinceStimulusOnset + RT ## the time since onset of yellow numbers
	if $actualRT >= &MIN_RT and $actualRT <= &lapseTime ## the RT needs to be greater than 100. This is a bit of a grey area I think
          set $outcome 1 ## correct
	fi
	if $actualRT > &lapseTime
	  set $outcome 3 ## lapse
	fi
      else
        set $outcome 2 ## pressed before stimulus
      fi
    fi
    timestamp now
    set $latestTime timestamp-diff beginTime now
    if $latestTime >= $randomDelay
      if $firstround = 1
        timestamp rtBeginTime
        timestamp now
      else
        clear -1
      fi
      set $rtSinceStimulusOnset timestamp-diff rtBeginTime now
      show text $rtSinceStimulusOnset 0 0 yellow
      set $stimulusPresent 1
      set $firstround 0
    fi
    # for safety, update all timers
    set $latestTime   timestamp-diff beginTime           now
    set &totalTime    timestamp-diff experimentBeginTime now
  while-end
  ##
  ## --------------------------------------------------------------------
  ##
  if &totalTime >= &TOTAL_EXP
    end tasklist
  fi
  ##
  ## now show feedback (1 second) -- officially, there is no feedback except static number 
  ##
  if $firstround = 0 ## the first time it is called you do not need to clear previous number shown
    clear -1
  fi
  if $outcome = 1 ## this means it is correct
    show text $rtSinceStimulusOnset 0 0  &staticRedChannel &staticGreenChannel 0 ## here you can choose color (officially it is yellow)
    set &&correctRTs append $actualRT
  fi
  if $outcome = 2 ## pressed too early
    set &nCommissions increase # we keep a running count of pressing too early
    if &showDetailedFeedback = 1
      show text "ERROR" 0 0 red
      font regular
      show text "Click the mouse or touch the screen only after the yellow numbers appear" 0 200 yellow
    fi
  fi
  ## if no key was pressed, it is a lapse, but you officially not give feedback
  ## lapses can have been detected earlier (late response rather than no response at all)
  if $keypressed = 0 or $outcome = 3
    set &nLapses increase # we keep a running count of pressing too late
    set $outcome 3
    if &showDetailedFeedback = 1
      show text "TOO SLOW" 0 -200 red
      font regular
      show text "TOO SLOW. Touch screen or click mouse within half a second after the yellow numbers appear" 0 200 yellow
    fi
  fi
  delay 1000 # this is the official time the feedback should be shown
  set $tmpLength &&correctRTs size
  ## keep track of averageRT so far in trials
  if $tmpLength > 0
    set &averageRT &&correctRTs roundmean
  else
    set &averageRT 0 # this happens if there are not yet any correct RTs
  fi
  save TRIALCOUNT $outcome $randomDelay &totalTime $rtSinceStart $actualRT &averageRT &nTrials &nLapses &nCommissions

task feedback
  font regular
  set %tmptext "Your average response time in correct trials was " &averageRT " milliseconds."
  show text %tmptext 0 -300
  set %tmptext "There were " &nTrials " trials." 
  show text %tmptext 0 -200
  set %tmptext "You responded too slowly (> 500 ms) " &nLapses " times."
  show text %tmptext 0 -100
  set %tmptext "You responded too early " &nCommissions " times."
  show text %tmptext 0 0
  show text "Click mouse to end this task" 0 100
  readmouse l 1 99999

block test
  message instructionsPVTBtouch mouse
  task pvtb 99999 ## unlimited, because the task itself stops this after 3 (PVT-B) or 10 (PVT) minutes

block feedback
  task feedback 1

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

  • Basner, M., Mollicone, D., Dinges, D.F. (2011). Validity and Sensitivity of a Brief Psychomotor Vigilance Test (PVT-B) to Total and Partial Sleep Deprivation. Acta Astronautica, 69, 949-959. DOI: 10.1016/j.actaastro.2011.07.015. PMID: 22025811; PMCID: PMC3197786. Freely accessible via PubMed Central

  • Dinges, D. F., & Powell, J. W. (1985). Microcomputer analyses of performance on a portable, simple visual RT task during sustained operations. Behavior research methods, instruments, & computers, 17(6), 652-655.

  • Graeber, R., Rosekind, M., Connell, L., & Dinges, D. (1990). Cockpit napping. ICAO Journal, 10, 6-11.

  • Lim, J., & Dinges, D. F. (2008). Sleep deprivation and vigilant attention. Annals of the new York Academy of Sciences, 1129(1), 305-322.

  • Thomann, J., Baumann, C. R., Landolt, H. P., & Werth, E. (2014). Psychomotor vigilance task demonstrates impaired vigilance in disorders with excessive daytime sleepiness. Journal of Clinical Sleep Medicine, 10(9), 1019-1024.

  • Tu, D., Basner, M., Smith, M. G., Williams, E. S., Ryder, V. E., Romoser, A. A., Ecker, A., Aeschbach, D., Stahn, A. C., Jones, C. W., Howard, K., Kaizi-Lutu, M., Dinges, D. F., & Shou, H. (2022). Dynamic ensemble prediction of cognitive performance in spaceflight. Scientific reports, 12(1), 11032. https://doi.org/10.1038/s41598-022-14456-8 Freely accessible via PubMed Central

  • Wilkinson, R. T., & Houghton, D. (1982). Field test of arousal: a portable reaction timer with data storage. Human factors, 24(4), 487–493. https://doi.org/10.1177/001872088202400409

  • Wüst, L. N., Capdevila, N. C., Lane, L. T., Reichert, C. F., & Lasauskaite, R. (2024). Impact of one night of sleep restriction on sleepiness and cognitive function: A systematic review and meta-analysis. Sleep Medicine Reviews, 76, 101940. https://doi.org/10.1016/j.smrv.2024.101940 Read online for free