Return to the Paced Auditory Serial Addition Test page
___________________________________________________________________________________________________________________	
						
								Paced Auditory Serial Addition Test (PASAT)
									*Computerized version with Norms*
___________________________________________________________________________________________________________________	

Script Author: Jeffrey Q. Ouyang for Millisecond Software, LLC
last updated:  06-30-2020 by K. Borchert (katjab@millisecond.com) for Millisecond Software, LLC

Script Copyright © 06-30-2020 Millisecond Software
__________________________________________________________________________________________________________________
BACKGROUND INFO 	
___________________________________________________________________________________________________________________	
This script implements a computerized version of the Paced Auditory Serial Addition Test (PASAT),
a measure of information processing rate.

The implemented procedure is based on:

Gronwall, D. (1977). Paced auditory serial-addition task: a measure of recovery from concussion. 
Perceptual and Motor Skills, 44, 367–373.

Norms based on:
Sabine A. Wingenfeld, Daniel J. Holdwick Jr., Joanne L. Davis & Brenda B. Hunter (1999). 
Normative Data on Computerized Paced Auditory Serial Addition Task Performance.
The Clinical Neuropsychologist, 13:3, 268-273, 
DOI: 10.1076/clin.13.3.268.1736


Cautionary Note on Norms in this script:
The Inquisit script calculates percentiles based on the norms published by Wingenfeld et al (1999) who ran
a fairly similar set up to the default Inquisit script. However, whereas the Inquisit script collects the 
response in the form of a selected number from a provided circle of numbers, Wingenfeld et al (1999) 
collect verbal responses that are later scored for accuracy. 

It is possible, for example, that by reporting the sums verbally, suppression failures (aka suppressing
the previous sum when adding the new digit to the previous digit) are more likely
than with the set up used in this script. This might be the case as the verbal sum might
interfer to a greater degree with the verbal digits than the non-verbal response of simply selecting the 
sum from a  provided circle of digits. However, Wingenfeld report that errors typically were simple 
addition errors rather than suppression failures even with verbal responses.

On the other hand, having to find the correct response button might take more time
than simply saying the response out loud.

___________________________________________________________________________________________________________________
TASK DESCRIPTION
___________________________________________________________________________________________________________________	
Participants hear a sequence of single digit numbers (1-9) presented at a constant speed 
and are asked to mentally sum the last 2 digits (NOT a running total). 
Participants then select the current sum from a circle of numbers 1-18 (= nonverbal response)

___________________________________________________________________________________________________________________	
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: 'pasat_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
session:							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 such as feedback trials. Thus, trialnum 
										may not reflect the number of main trials run per block. 
										
values.currentLevel:				the currently tested level
values.currentDigit:				the currently presented digit

values.SOA:							current SOA (in ms)

values.currentSum:					the current correct sum
response:							the participant's response (selected number)
correct:							the correctness of the response (1 = correct; 0 = incorrect)

values.NR:							1 = no response was made within response window; 
									0 = otherwise (=no response)
								
values.error:						1 = addition error; 
									0 = otherwise
								
values.suppressionFailure:			1 = response is consistent with using previous sum (not digit) 
									to generate new sum; 
									0 = otherwise
								
values.consecutiveCorrect:			counts the number of consecutive correct responses 
									(resets back to 0 after 3 correct responses in a row)
								
latency: 							the response latency (in ms); measured from onset of digit

values.countCorrect_level1:			counts the number of correct responses for level1
values.countCorrect_level2:			counts the number of correct responses for level2
values.countCorrect_level3:			counts the number of correct responses for level3
values.countCorrect_level4:			counts the number of correct responses for level4


(2) Summary data file: 'pasat_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)

Note: percentiles are calculated based on Wingenfeld et al (1999), table3 (p. 272) 

values.countCorrect_level1:				counts the number of correct responses for level1
expressions.zscore_correct_level1: 		z-score of number of correct responses based on Wingenfeld et al (1999)

expressions.p_correct_level1:			percentile of z-score of number of correct responses 
										based on Wingenfeld et al (1999)

values.countNR_level1:					counts the number of no responses for level1
expressions.zscore_NR_level1: 			z-score of number of no responses based on Wingenfeld et al (1999)
expressions.p_NR_level1:				percentile of z-score of no responses based on Wingenfeld et al (1999)

values.countErrors_level1:				counts the number of addition errors for level1 
										(could include random selections)
									
expressions.zscore_errors_level1: 		z-score of number of number of addition errors based on Wingenfeld et al (1999)

expressions.p_errors_level1:			percentile of z-score of number of addition errors 
										based on Wingenfeld et al (1999)

values.countSF_level1:					counts the number of suppression failures for level 1
expressions.zscore_SF_level1: 			z-score of number of suppression failures based on Wingenfeld et al (1999)

expressions.p_SF_level1:				percentile of z-score of suppression failures based on Wingenfeld et al (1999)
										suppression failure = using the previous sum instead of previous digit

values.countcorrStrings_level1:			counts the number of times three consecutive correct responses 
										were given on level 1
									
expressions.zscore_corrStrings_level1: 	z-score of number of correct strings (3 correct in a row) 
										based on Wingenfeld et al (1999)
									
expressions.p_corrStrings_level1:		percentile of z-score of correct strings (3 correct in a row) 
										based on Wingenfeld et al (1999)
(same for level2-level4)

___________________________________________________________________________________________________________________	
EXPERIMENTAL SET-UP 
___________________________________________________________________________________________________________________	
	
(I)	Practice:
* 11 practice trials (+ start trial)
* provides feedback
* default SOA: 4000ms
	
(II) Test:	
* 4 possible speed levels (level1-level4); number of levels to run can be set under section Editable Values 
(by default, all 4 levels are run)
	level 1: default SOA 2400ms
	level 2: default SOA 2000ms
	level 3: default SOA 1600ms
	level 4: default SOA 1200ms

* by default, each level presents 60 trials (not counting the first digit presentation);
number can be set under section Editable Values
* to be added digit is selected randomly without replacement (reset after all digits 1-9 have been used) 
for each trial

Trial Sequence:
verbal digit presentation (SOA: depends on level): select sum of last 2 digits from a circle of numbers 1-18

__________________________________________________________________________________________________________________	
INSTRUCTIONS 
___________________________________________________________________________________________________________________	
provided by Millisecond Software - can be edited under section Editable Instructions

Instructions are not original to the task. They are provided by Millisecond Software
as htm pages and can be edited by changing the provided html files.
To edit html-files: open the respective documents in simple Text Editors such as TextEdit (Mac)
or Notepad (Windows).
___________________________________________________________________________________________________________________	
EDITABLE CODE 
___________________________________________________________________________________________________________________
check below for (relatively) easily editable values, 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 values you can change are:

/levelCount:				number of test levels (blocks) to run. Can be 1, 2, 3 or 4
/practiceTrials:			number of practice trials to run
/level1Trials:				number of trials to run in level 1 (not counting the first)
/level2Trials:				number of trials to run in level 2
/level3Trials:				number of trials to run in level 3
/level4Trials:				number of trials to run in level 4
/SOAPractice: 				Stimulus Onset Asynchrony (SOA) in practice trials (= trialduration)
/SOALevel1: 				Stimulus Onset Asynchrony (SOA) in level1 trials (= trialduration)
/SOALevel2: 				Stimulus Onset Asynchrony (SOA) in level2 trials (= trialduration)
/SOALevel3: 				Stimulus Onset Asynchrony (SOA) in level3 trials (= trialduration)
/SOALevel4: 				Stimulus Onset Asynchrony (SOA) in level4 trials (= trialduration)

/circleproportion:			proportion of canvas height used for the circle radius of response buttons (default: 0.4)

/debugmode:					1 = the correct answer is displayed on the screen
							0 = the correct answer is not displayed on the screen (default)