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 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 as well as indifference points at which people start to devalue lower monetary Losses paid for higher effort tasks in favor of lower effort tasks resulting in higher monetary losses.
The general procedure is based on Westbrook et al (2013) but expands on the original study by including a gain and loss cognitive effort discounting condition as developed by the Braver lab at Washington University in St. Louis.
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.
30 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). ( the same is done for a 'Loss' condition. People are asked to choose between a more difficult cognitive tasks with a promised lower loss and an easier task with a promised higher loss)
In this script, the cognitive task chosen is the n-back working memory task. 4 levels of n-back tasks are used in this task (editable) with the 1-back being the designated 'easy' task.
The procedure is divided into 5 phases:
1. Participants get familiar with the n-back procedure and work through several rounds of n-back tasks for the different levels of N. The n-back levels are referred to by assigned colors.
2. Gain Condition: Participants work through the indifference point estimation procedure (without actually performing the n-back 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 5 (default) more rounds of n-backs with the selected N and promised reward.
4. Loss Condition: Participants work through the indifference point estimation procedure (without actually performing the n-back 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
5. One of the participant's choices is randomly selected, the participant works through 5 (default) more rounds of n-backs with the selected N and promised "loss".
•N-back Task (with letter stimuli)* •2-key n-back procedure*
The 2-key n-back task requires participants to press one key for targets (go) and another key for non-targets. Which stimuli are targets depends on the level of N:
For N=1 trials (1-back): - is the letter the same as the one that preceded it? If so (it's a target), and press "S". If not, press "K".
For N=2 trials (2-back): - is the letter the same as the one presented two trials before? If so (it's a target), and press "S". If not, press "K".
For N=3 trials (3-back): - is the letter the same as the one presented three trials before? If so (it's a target), and press "S". If not, press "K".
Etc.
5 phases:
(1) Phase 1: n-back Practice
- by default, this script runs through 1 run of N-levels 1-4 (see section Editable Parameters to select N-levels and/or change number
of rounds) => 4 blocks of n-backs
- each n-back block runs for 20 trials (see section Editable Parameters to change the number of trials; the start trials that
cannot be target yet are not counted towards the trialCount)
Westbrook et al (2013) ran 64 trials per block.
- each block runs 25% targets (here: 5 target trials) (see section Editable Parameters to change the proportion)
!!!This script does not run target-lure trials (see Westbrook et al, 2013, p.2)
- the order of targets and nontargets is randomly determined
- this script uses a 2 key n-back procedure: one key (S) is used for target identification; another (K) for nontarget identification
- each level of N is assigend a particular letter color
the level of N is only referenced by assigned color
N1 = black
N2 = red
N3 = blue
N4 = purple
N5 = green
N6 = brown
- at the end of each block, participants receive feedback
Trial Sequence:
Letter (1500ms = response timeout) -> Fixation Cross (2000ms) -> Letter.....
Responses are only registered during letter presentations. Responses do not interrupt letter presentations.
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 (GAIN): 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 n-backs are referred to only by color
- the position (right/left) of the standard amount is randomly determined:
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 1-back 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 (GAIN): 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 N during that trial as well as the promised reward is used for another 5 (editable)
rounds of n-backs
This script does not provide any behavioral measure of actual 'effort' during phase 3
(4) Phase 2 (LOSS): 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 n-backs are referred to only by color
- the position (right/left) of the standard amount is randomly determined:
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 easy Black level (1back) always offers a higher (fixed) Loss (see section Editable Parameters),
- the variable Loss for the more difficult Nback starts at half the loss of the 1back but gets adjusted according to the choices made:
- if the harder choice was previously selected; the Loss goes up for the harder amount (by half the previous adjustment)
(=> the lower loss amount for the more difficult task was already enough to get participant to show more effort,
so the next step is to see whether a higher loss amount for the more difficult task is still enough for participants to
choose the higher effort task or whether the higher loss amount now makes that choice less 'tempting')
- if the easier choice was previously selected; the Loss goes down for the harder amount (by half the previous adjustment)
(=> the lower loss amount for the more difficult task wasn't quite enough yet to get participant to show more effort,
so we try to 'tempt' participants with a lower loss amount in the next round)
- Indifference Points: the adjusted Loss for level X after the last choice (aka: the Loss offered for level N on the
7th round)
(5) Phase 3 (LOSS): 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 N during that trial as well as the promised Loss is used for another 5 (editable)
rounds of n-backs
This script does not provide any behavioral measure of actual 'effort' during phase 3
the order of GAIN and LOSS tasks is counterbalanced by groupnumber
odd group numbers: run Gain -> Loss
even group numbers: run Loss -> Gain
• the n-back task runs with consonants (see section Editable Stimuli)
• the size of the letters can be adjusted under section Editable Parameters
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_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 |
| taskOrder | 1 = gain condition runs before loss condition 2 = loss condition runs before gain condition |
Gain Indifference Points |
|
| 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 |
| ip15 | Indifference points for the gain trials for comparing level1 to level 5 |
| ip16 | Indifference points for the gain trials for comparing level1 to level 6 |
Loss Indifference Points |
|
| ip12Loss | Indifference points for the loss trials for comparing level1 to level 2 |
| ip13Loss | Indifference points for the loss trials for comparing level1 to level 3 |
| ip14Loss | Indifference points for the loss trials for comparing level1 to level 4 |
| ip15Loss | Indifference points for the loss trials for comparing level1 to level 5 |
| ip16Loss | Indifference points for the loss trials for comparing level1 to level 6 |
Phase 3 Variables |
|
| totalWinAmount | The total win amount from phase 3 (across both gain and loss phase3 trials) |
| finalNReward | Final N in Reward phase 3 trials |
| finalRewardReward | Final promised Reward in Reward phase 3 trials |
| finalNLoss | Final N in Loss phase 3 trials |
| finalRewardLoss | Final promised Reward in Loss phase 3 trials |
Phase 1 Variables |
|
| hitRateN1 | Stores the hitrate (targets) for level1 trials hit = pressing 's' for a target trial |
| hitRateN2 | Stores the hitrate (targets) for level2 trials |
| hitRateN3 | Stores the hitrate (targets) for level1 trials |
| hitRateN4 | Stores the hitrate (targets) for level1 trials |
| hitRateN5 | Stores the hitrate (targets) for level1 trials |
| hitRateN6 | Stores the hitrate (targets) for level1 trials |
| crRateN1 | Stores the correct rejection (non-targets) rate for level1 trials1 CR = pressing 'k' for a non-target trial |
| crRateN2 | Stores the correct rejection (non-targets) rate for level2 trials1 |
| crRateN3 | Stores the correct rejection (non-targets) rate for level3 trials1 |
| crRateN4 | Stores the correct rejection (non-targets) rate for level4 trials1 |
| crRateN5 | Stores the correct rejection (non-targets) rate for level5 trials1 |
| crRateN6 | Stores the correct rejection (non-targets) rate for level6 trials1 |
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 |
| mentalDemand5 | Self-reported rating of mental demands for level5 round |
| physicalDemand5 | Self-reported rating of physical demands for level5 round |
| temporalDemand5 | Self-reported rating of temporal demands for level5 round |
| performance5 | Self-reported rating of performance for level5 round |
| effort5 | Self-reported rating of effort for level5 round |
| frustration5 | Self-reported rating of frustration for level5 round |
| mentalDemand6 | Self-reported rating of mental demands for level6 round |
| physicalDemand6 | Self-reported rating of physical demands for level6 round |
| temporalDemand6 | Self-reported rating of temporal demands for level6 round |
| performance6 | Self-reported rating of performance for level6 round |
| effort6 | Self-reported rating of effort for level6 round |
| frustration6 | Self-reported rating of frustration for level6 round |
File Name: cognitiveeffortdiscountingtask_complete_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. |
| discountingCondition | "gain" vs. "loss" |
| phase1BlockCount | The total number of n-back practice blocks run (phase 1) |
| phase3BlockCount | The total number of phase 3 n-back blocks run |
| phase | 1 = n-back practice 2 = indifference point assessment 3 = final n-back runs to earn money |
| n | The level of N currently tested |
| stimulusItem.1 | Phase1/phase3: n-back trials: the letter presented |
| stimulusNumber.1 | N-back trials: the item number of the presented letter |
| currentTarget | N-back trials: the item number of the current target |
| response | The response of the participant (scancode of response button) nback trials 31 = S (for n-back trials: correct target response) 37 = K (for n-back trials: correct notarget response) 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 |
| latency | How fast a participant responded within the given timeframe (in ms) Phase1/Phase3: n-back trials => latencies of 1500ms (stimulus presentation time) are no responses |
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 | true |
| runN5 | True vs. false (default): if true, the 5-back task is run | false |
| runN6 | True vs. false (default): if true, the 6-back task is run by changing the default settings, the instructions have to manually updated in coged_intro2.htm | false |
| trialsPerNBack | Number of trials per block of n-back tasks | 20 |
| propTargets | The proportion of target trials the proportion should result in an integer number of target trials given parameters.trials_per_nback | 0.25 |
| practiceRuns | Number of blocks a particular n-back level is repeated during practice (e.g. by default, 1 block per n-back level are run, Westbrook et al, 2013, ran 3 runs of each level) | 1 |
| phase3Runs | Number of times, the randomly selected n-back procedure from phase 2 is run (default: 5, Westbrook et al, 2013, ran 10 blocks) by setting this parameter = 0; phase 3 can be skipped altogether. | 5 |
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 |
| rewardN51 | The reward for N1/N5 discounting trials that use Reward_N5_1 as the fixed amount for N5-selections | 2.00 |
| rewardN61 | The reward for N1/N6 discounting trials that use Reward_N6_1 as the fixed amount for N6-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 |
| rewardN52 | The reward for N1/N5 discounting trials that use Reward_N5_2 as the fixed amount for N5-selections | 3.00 |
| rewardN62 | The reward for N1/N6 discounting trials that use Reward_N6_2 as the fixed amount for N6-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 |
| rewardN53 | The reward for N1/N5 discounting trials that use Reward_N5_3 as the fixed amount for N5-selections | 4.00 |
| rewardN63 | The reward for N1/N6 discounting trials that use Reward_N6_3 as the fixed amount for N6-selections | 4.00 |
Loss Parameters |
||
| startAmount | The amount that people start out with but will lose according to their selected preference. | 5 |
| lossPractice | The fixed Loss amount used for choice practice trials (NOte: higher level N shows the fixed amount) | -2.00 |
| lossN21 | The Loss for N1/N2 discounting trials that use Loss_N2_1 as the fixed amount for N2-selections | -2.00 |
| lossN31 | The Loss for N1/N3 discounting trials that use Loss_N3_1 as the fixed amount for N3-selections | -2.00 |
| lossN41 | The Loss for N1/N4 discounting trials that use Loss_N4_1 as the fixed amount for N4-selections | -2.00 |
| lossN51 | The Loss for N1/N5 discounting trials that use Loss_N5_1 as the fixed amount for N5-selections | -2.00 |
| lossN61 | The Loss for N1/N6 discounting trials that use Loss_N6_1 as the fixed amount for N6-selections | -2.00 |
| lossN22 | The Loss for N1/N2 discounting trials that use Loss_N2_2 as the fixed amount for N2-selections | -3.00 |
| lossN32 | The Loss for N1/N3 discounting trials that use Loss_N3_2 as the fixed amount for N3-selections | -3.00 |
| lossN42 | The Loss for N1/N4 discounting trials that use Loss_N4_2 as the fixed amount for N4-selections | -3.00 |
| lossN52 | The Loss for N1/N5 discounting trials that use Loss_N5_2 as the fixed amount for N5-selections | -3.00 |
| lossN62 | The Loss for N1/N6 discounting trials that use Loss_N6_2 as the fixed amount for N6-selections | -3.00 |
| lossN23 | The Loss for N1/N2 discounting trials that use Loss_N2_3 as the fixed amount for N2-selections | -4.00 |
| lossN33 | The Loss for N1/N3 discounting trials that use Loss_N3_3 as the fixed amount for N3-selections | -4.00 |
| lossN43 | The Loss for N1/N4 discounting trials that use Loss_N4_3 as the fixed amount for N4-selections | -4.00 |
| lossN53 | The Loss for N1/N5 discounting trials that use Loss_N5_3 as the fixed amount for N5-selections | -4.00 |
| lossN63 | The Loss for N1/N6 discounting trials that use Loss_N6_3 as the fixed amount for N6-selections | -4.00 |
Timing Parameters For N-Back |
||
| startFixationDuration | The duration (in ms) of the first fixation cross (and key reminder) at the beginning of each n-back block (default: 3000ms) | 3000 |
| soa | The stimulus onset asynchrony (time in ms between onset of one letter and onset of the next) | 3500 |
| stimulusPresentationTime | The duration (in ms) of each letter this duration equals the response timeout and cannot be greater than parameters.SOA | 2000 |
Timing Parameters For Choice Task |
||
| taskBreakDuration | The duration (in ms) of the break in between the the win and loss condition | 10000 |
| 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 |
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; 1 = script runs in debugmode (target alerts during n-back trials) | 0 |