Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Credits:
Millisecond thanks Jenny Crawford and the Braver lab at Washington University in St. Louis
for help fine-tuning this Cognitive Effort Discounting Task procedure!
for help fine-tuning this Cognitive Effort Discounting Task procedure!
Last Modified: January 03, 2025 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements a variant of the Cognitive Effort Discounting Procedure to establish indifference points (minimum price points) at which people start to discount ("devalue") monetary rewards paid for higher effort tasks in favor of less paid lower effort tasks.
The implemented procedure in this script mirrors the n-back Cognitive Effort Discounting Procedure (see Inquisit script cognitiveeffortdiscountingtask.iqjs) but uses a speech task as the cognitive task (McLaughlin et al, 2020).
McLaughlin, D.J, Todd S. Braver,T.S., Peelle, J.E. (2020). Measuring the Subjective Cost of Listening Effort Using a Discounting Task.
Westbrook A, Kester D, Braver TS (2013). What Is the Subjective Cost of Cognitive Effort? Load, Trait, and Aging Effects Revealed by Economic Preference. Pessiglione M, ed. PLoS One 981 8:e68210.
20 minutes
Participants are repeatedly asked to choose between a more difficult cognitive task with a higher earning potential or an easier cognitive task with less earning potential. Through a series of questions the participants' cognitive effort indifference point for the pair of tasks is determined (aka the price point at which participants start to devalue the potential higher pay for a challenging cognitive task in favor of less pay for a less challenging one).
In this script, the cognitive task chosen is a 'Speech' task (McLaughlin et al, 2020). For the Speech task participants are given sentences distorted by different signal to noise ratios (SNR) and have to repeat the sentences. This script uses 4 levels of difficulty for the Speech task (SNR0, SNR-4, SNR-8, SNR-12)
The procedure is divided into 3 phases:
1. Participants get familiar with the Speech task procedure and work through each level (from the easiest to the hardest). Each level presents 15 sentences.
2. Participants work through the indifference point estimation procedure (without actually performing speech tasks) for the 3 higher levels of N (1 vs.2; 1 vs. 3; 1 vs. 4) => 3 indifference points are estimated for each level of N tested
3. One of the participant's choices is randomly selected, the participant works through 20 more trials of the Speech task at the selected level for the promised reward. The reward will be multiplied by parameters.phase3Run (default: 5) to be comparable to the speech version of the test.
3 phases:
(1) Phase 1: Speech Task Practice
Speech task: participants are given sentences distorted by progressively increasing signal to noise ratios (SNR)
and have to repeat the sentence by entering the sentence they heard into a textbox.
- by default, this script runs through four levels of the speech task in order of difficulty (= increased noise levels)
- each level presents 15 sentences
N = 1 (level1) => Black task (SNR0)
N = 2 (level2) => Red task (SNR-4)
N = 3 (level3) => Blue task (SNR-8)
N = 4 (level4) => purple task (SNR-12)
- at the end of each block, participants receive feedback
- Accuracy Determination (see expression.responseCleaning for how the entered response is cleaned up for comparison):
The script uses the 'correct responses' declared in sentencelist_1.iqjs to sentencelist_repeat.iqjs.
Each correct response should contain the important key words in singular form and in lower case letters.
The script cleans up the entered response by
- turning all letters to lowercase
- removing 'the' , 'a', and 'an'
- removing ",", ".", ":", ";" and newlines
- removing '-' and joining hypenated words into one (e.g. boy-friend)
- removing trailing 's' from individual words
- corrected spellings for a couple of individual words
(e.g. 'familie' is corrected to 'family', 'grey' is corrected to 'gray', 'men' is corrected to 'man')
- comparing the 'cleaned-up' input to the correct response
after each level participants are asked to self-report on the 6 rating scales of the NASA TASK LOAD INDEX- Survey:
/mentalDemand
/physicalDemand
/temporalDemand
/performance
/effort
/frustration
(2) Phase 2: Indifference Point Estimations
- 3 Indifference Points for level of N tested (e.g. 3 different standard amounts are offered for each level of N)
- by default this script runs 54 trials = 3 levels of N (2, 3, 4) x 3 IPs per N level x 6 trials
- the trials are presented in random order in a mixed design
- level of speech tasks are referred to only by color
- the position (right/left) of the standard amount is randomly determined:
for half the trials the standard amount appears on the right
- participants have 9s to make a choice (after 9s the black task is automatically assigned as the default choice)
Indifference Point Algorithm:
- the harder level N always offers a higher (fixed) reward (see section Editable Parameters),
- the possible reward for the easier black speech task starts at 1 but gets adjusted according to the choices made:
- if the harder choice was previously selected; the reward goes up (by half the previous adjustment)
- if the easier choice was previously selected; the reward goes down (by half the previous adjustment)
- Indifference Points: the adjusted reward for level 1 after the last choice (aka: the reward offered for level 1 on the
7th round)
(3) Phase 3: Actual Money Earning Phase (can be skipped; see parameters.phase3Runs for more info)
- one of the 3 (level of N: 2-4) * 6 (trials per level of N) * 3 indifference points per N level = 54 choice trials
from Phase 2 is randomly selected by the computer
- the chosen difficulty level N (= chosen color task) during that trial as well as the promised reward is used
for one more block of 20 speech trials. Participants are told that they may have to work through 5 more blocks of these
but the reward is multiplied by 5 after this single block.
This script does not provide any behavioral measure of actual 'effort' during phase 3
• soundfiles provided by McLaughlin et al (2020): https://osf.io/8jpnx/files/.
provided by Millisecond as *.htm files.
To change instructions, edit the htm files directly (e.g. in TextEdit for Macs or Notepad for Windows).
Instructions have been generously shared by Jenny Crawford and her lab
File Name: cognitiveeffortdiscountingtask_speechtask_summary*.iqdat
| Name | Description |
|---|---|
| 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 |
| ip12 | Indifference points for the gain trials for comparing level1 to level 2 |
| ip13 | Indifference points for the gain trials for comparing level1 to level 3 |
| ip14 | Indifference points for the gain trials for comparing level1 to level 4 |
| totalWinAmount | The total win amount from phase 3 |
| percentCorrectN1 | The average percent correctly recalled words for level 1 trials (Example: 75% => on average participant recalled 3 out of 4 words per speech trial) |
| percentCorrectN2 | The average percent correctly recalled words for level 2 trials |
| percentCorrectN3 | The average percent correctly recalled words for level 3 trials |
| percentCorrectN4 | The average percent correctly recalled words for level 4 trials |
| percentCorrect | The average percent correctly recalled words during phase3 (Example: 75% => on average participant recalled 3 out of 4 words per speech trial) |
| meanCorrectSpeechWordsN1 | The mean number correctly entered speech words per level 1 trials during training (Example: 3 => on average, participant entered 3 (out of 4) correct words) |
| meanCorrectSpeechWordsN2 | The mean number correctly entered speech words per level 2 trials during training (Example: 3 => on average, participant entered 3 (out of 4) correct words) |
| meanCorrectSpeechWordsN3 | The mean number correctly entered speech words per level 3 trial during training (Example: 3 => on average, participant entered 3 (out of 4) correct words) |
| meanCorrectSpeechWordsN4 | The mean number correctly entered speech words per level 4 trial during training (Example: 3 => on average, participant entered 3 (out of 4) correct words) |
| meanCorrectSpeechWords | The mean number correctly entered speech words per trial during phase3 (Example: 3 => on average, participant entered 3 (out of 4) correct words) |
Nasatlx Rating Ratings (Per Level Of Nback Run During Phase 1): On Scale: 1 (Very Low) - 21 (Very High) |
|
| mentalDemand1 | Self-reported rating of mental demands for level1 round |
| physicalDemand1 | Self-reported rating of physical demands for level1 round |
| temporalDemand1 | Self-reported rating of temporal demands for level1 round |
| performance1 | Self-reported rating of performance for level1 round |
| effort1 | Self-reported rating of effort for level1 round |
| frustration1 | Self-reported rating of frustration for level1 round |
| mentalDemand2 | Self-reported rating of mental demands for level2 round |
| physicalDemand2 | Self-reported rating of physical demands for level2 rounds |
| temporalDemand2 | Self-reported rating of temporal demands for level2 round |
| performance2 | Self-reported rating of performance for level2 round |
| effort2 | Self-reported rating of effort for level2 round |
| frustration2 | Self-reported rating of frustration for level2 round |
| mentalDemand3 | Self-reported rating of mental demands for level3 round |
| physicalDemand3 | Self-reported rating of physical demands for level3 round |
| temporalDemand3 | Self-reported rating of temporal demands for level3 round |
| performance3 | Self-reported rating of performance for level3 round |
| effort3 | Self-reported rating of effort for level3 round |
| frustration3 | Self-reported rating of frustration for level3 round |
| mentalDemand4 | Self-reported rating of mental demands for level4 round |
| physicalDemand4 | Self-reported rating of physical demands for level4 round |
| temporalDemand4 | Self-reported rating of temporal demands for level4 round |
| performance4 | Self-reported rating of performance for level4 round |
| effort4 | Self-reported rating of effort for level4 round |
| frustration4 | Self-reported rating of frustration for level4 round |
File Name: cognitiveeffortdiscountingtask_speechtask_raw.iqdat
| Name | Description |
|---|---|
| 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. |
| phase1SentenceListLevel1 | The randomly assigned sentencelist (1-5) used for level1 (SNR0) during phase1 |
| phase1SentenceListLevel2 | The randomly assigned sentencelist (1-5) used for level2 (SNR-4) during phase1 |
| phase1SentenceListLevel3 | The randomly assigned sentencelist (1-5) used for level3 (SNR-8) during phase1 |
| phase1SentenceListLevel4 | The randomly assigned sentencelist (1-5) used for level4 (SNR-12) during phase1 |
| phase1BlockCount | The total number of 'speech' training blocks run (phase 1; default = 4 => each level is run once) |
| phase3BlockCount | The total number of phase 3 'speech' blocks run (phase 3; default = 1) |
| phase | 1 = phase 1 (practice/training) 2 = indifference point assessment 3 = phase 3 (final speech round) |
| n | The level of difficulty currently tested ( there are four levels run in this script) N = 1 => black task (SNR0) (easiest level) N = 2 => red task (SNR-4) N = 3 => blue task (SNR-8) N = 4 => purple task (SNR-12) (hardest level) |
| rewardLevel | For choice phase only 1 (lowest reward)-3(highest reward) |
| sentNum | For speech task: the number of the current sentence run |
| sentenceSoundFile | The actual sentence file run |
| sentence | The sentence run |
| correctResponse | The words that are accepted as correct responses the official correct responses contain the keys words in singular form |
| comparisonResponse | The 'cleaned' entered response (e.g. all lower caps, commas removed, only singular words etc.) that is compared to the correctResponse as the implemented 'cleaning' algorithm will not catch all irregularities (e.g. spelling mistakes), when in doubt, the responses may have to be manually checked |
| response | The response of the participant (scancode of response button) speech trials: the entered sentence (as entered) choice trials 16 = Q (left box selected during Choice Trials) 25 = P (right box selected during Choice Trials) remaining trials 57 = spacebar 0 = no response |
| correct | The correctness of the response (1 = correct; 0 = otherwise) has no meaning for phase 2 trials training phase: the trial is recorded as 1 if correctResponse = comparisonResponse. HOWEVER: the script also tracks the number of correct words per trial (see countcorrectWords) |
| correctWord1-correctWord4 | Retrieves the 4 correct words from correctResponse and stores them in four individual variables |
| countCorrectWords | Counts the number of correct speech words entered script retrieves each of the four correct speech words and checks whether it can be found in comparisonResponse |
| latency | How fast a participant responded within the given timeframe (in ms) |
The Following Variables Have Only Meaning For Phase2 |
|
| n1X | 25pct = the N1 reward was located in the left box 75pct = the N1 reward was located in the right box |
| level1Reward | Phase 2: the currently offered reward for choosing the 1-back task |
| levelNReward | Phase 2: the currently offered reward for choosing the higher level N-back task |
The Following Variables Have Only Meaning For Phase3 |
|
| roundWinAmount | Phase 3: the amount won after the current phase 3 round |
| totalWinAmount | Phase 3: the total amount won during phase 3 |
Current Nasatlx Rating Variables: On Scale: 1 (Very Low) - 21 (Very High) |
|
| mentalDemand | Self-reported rating of mental demands |
| physicalDemand | Self-reported rating of physical demands |
| temporalDemand | Self-reported rating of temporal demands |
| performance | Self-reported rating of performance |
| effort | Self-reported rating of effort |
| frustration | Self-reported rating of frustration |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
Design Parameters |
||
| runN2 | True(default) vs. false: if true, the 2-back task is run | true |
| runN3 | True(default) vs. false: if true, the 3-back task is run | true |
| runN4 | True(default) vs. false: if true, the 4-back task is run by changing the default settings, the instructions have to manually updated in coged_intro2.htm | true |
Reward Parameters |
||
| rewardPractice | The reward used for choice practice trials | 2.00 |
| rewardN21 | The reward for N1/N2 discounting trials that use Reward_N2_1 as the fixed amount for N2-selections (referred to as rewardLevel = 1) | 2.00 |
| rewardN31 | The reward for N1/N3 discounting trials that use Reward_N3_1 as the fixed amount for N3-selections | 2.00 |
| rewardN41 | The reward for N1/N4 discounting trials that use Reward_N4_1 as the fixed amount for N4-selections | 2.00 |
| rewardN22 | The reward for N1/N2 discounting trials that use Reward_N2_2 as the fixed amount for N2-selections (referred to as rewardLevel = 2) | 3.00 |
| rewardN32 | The reward for N1/N3 discounting trials that use Reward_N3_2 as the fixed amount for N3-selections | 3.00 |
| rewardN42 | The reward for N1/N4 discounting trials that use Reward_N4_2 as the fixed amount for N4-selections | 3.00 |
| rewardN23 | The reward for N1/N2 discounting trials that use Reward_N2_3 as the fixed amount for N2-selections (referred to as rewardLevel = 3) | 4.00 |
| rewardN33 | The reward for N1/N3 discounting trials that use Reward_N3_3 as the fixed amount for N3-selections | 4.00 |
| rewardN43 | The reward for N1/N4 discounting trials that use Reward_N4_3 as the fixed amount for N4-selections | 4.00 |
Timing Parameters For Choice Task |
||
| choiceITI | The duration (in ms) of the blank screen after each decision task (defaul: 1000ms) | 1000 |
| maxDecisionTime | The maximum time that a decision can be made during the choice task | 9000 |
| noResponseFeedbackDuration | The duration (in ms) of the 'too slow' feedback if participants don't decide within the timelimit | 1500 |
Phase 3 |
||
| phase3Runs | This is the number of times participants are told the randomly selected speech task might be run and the number the randomly selected reward is multiplied at the end in reality, phase3 only ever runs 1 blocks of 20 trials by setting this parameter = 0; phase 3 can be skipped altogether. | 1 |
Ui Parameters |
||
| letterSize | The height of the letters in proportion to canvas height | 20% |
| fixationCrossSize | The height of the fixation cross in proportion to canvas height | 10% |
Debug Parameter |
||
| debugmode | 0 = script runs in testmode (default) 1 = script runs in debugmode (correct responses are provided during speech tasks) | 0 |